From e457ff8e23665e2eb5eba1709078377447570487 Mon Sep 17 00:00:00 2001 From: Pax G Date: Tue, 21 Oct 2025 07:19:17 -0700 Subject: [PATCH 01/52] enabled predeploy configuration --- Contracts.toml | 31 ++++ contracts/ERC1967Proxy.json | 1 + contracts/Hypermap.json | 1 + src/chain/bytecode/erc1967proxy.txt | 1 - src/chain/bytecode/erc6551registry.txt | 1 - src/chain/bytecode/hyperaccount.txt | 1 - src/chain/bytecode/hypermap.txt | 1 - src/chain/bytecode/multicall.txt | 1 - src/chain/mod.rs | 232 +++++++++++++++++++++---- src/main.rs | 12 +- 10 files changed, 243 insertions(+), 39 deletions(-) create mode 100644 Contracts.toml create mode 100644 contracts/ERC1967Proxy.json create mode 100644 contracts/Hypermap.json delete mode 100644 src/chain/bytecode/erc1967proxy.txt delete mode 100644 src/chain/bytecode/erc6551registry.txt delete mode 100644 src/chain/bytecode/hyperaccount.txt delete mode 100644 src/chain/bytecode/hypermap.txt delete mode 100644 src/chain/bytecode/multicall.txt diff --git a/Contracts.toml b/Contracts.toml new file mode 100644 index 00000000..1e91bf3c --- /dev/null +++ b/Contracts.toml @@ -0,0 +1,31 @@ +[[contracts]] +name = "erc6551registry" +address = "0x000000006551c19487814612e58FE06813775758" +bytecode = "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033" + +[[contracts]] +name = "multicall" +address = "0xcA11bde05977b3631167028862bE2a173976CA11" +bytecode = "0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033" + +[[contracts]] +name = "hypermap-impl" +address = "0x000000000013a0486EBDc2DB1D7B4d1f7fCA92eD" +bytecode_path = "./contracts/Hypermap.json" + + +[[contracts]] +name = "hyperaccount" +address = "0x0000000000EDAd72076CBe7b9Cfa3751D5a85C97" +bytecode_path = "./contracts/Hypermap.json" + + +####### HYPERMAP +[[contracts]] +name = "hypermap-proxy" +address = "0x000000000044C6B8Cb4d8f0F889a3E47664EAeda" +bytecode_path = "./contracts/ERC1967Proxy.json" +[contracts.storage] +"0" = "0x000000000000000000000000000000000044C6B8Cb4d8f0F889a3E47664EAeda" +"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" = "0x000000000000000000000000000000000013a0486EBDc2DB1D7B4d1f7fCA92eD" +####### diff --git a/contracts/ERC1967Proxy.json b/contracts/ERC1967Proxy.json new file mode 100644 index 00000000..545b50e7 --- /dev/null +++ b/contracts/ERC1967Proxy.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[{"name":"implementation","type":"address","internalType":"address"},{"name":"_data","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"fallback","stateMutability":"payable"},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]}],"bytecode":{"object":"0x60806040526040516103d03803806103d08339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561024d575f5ffd5b82516001600160a01b0381168114610263575f5ffd5b60208401519092506001600160401b0381111561027e575f5ffd5b8301601f8101851361028e575f5ffd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60a38061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156069573d5ff35b3d5ffdfea264697066735822122087fbafd411ab2abecb7a4792069b1ff2736f1471d91a15a274be087fcc870e0964736f6c634300081c0033","sourceMap":"600:1117:25:-:0;;;1081:133;;;;;;;;;;;;;;;;;;:::i;:::-;1155:52;1185:14;1201:5;1155:29;:52::i;:::-;1081:133;;600:1117;;2264:344:26;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:26;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;1671:281::-;1748:17;-1:-1:-1;;;;;1748:29:26;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:26;;-1:-1:-1;;;;;1416:32:262;;1805:47:26;;;1398:51:262;1371:18;;1805:47:26;;;;;;;;1744:119;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:26;-1:-1:-1;;;;;1872:73:26;;;;;;;;;;1671:281::o;3900:253:54:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:54;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4007:67:54;;-1:-1:-1;4007:67:54;-1:-1:-1;4091:55:54;4118:6;4007:67;;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:54:o;6113:122:26:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:26;;;;;;;;;;;6159:70;6113:122::o;4421:582:54:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:54;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:54;;-1:-1:-1;;;;;1416:32:262;;4917:24:54;;;1398:51:262;1371:18;;4917:24:54;1252:203:262;4837:119:54;-1:-1:-1;4976:10:54;4589:408;4421:582;;;;;:::o;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:54;;;;;;;;;;;14:127:262;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:1101;234:6;242;295:2;283:9;274:7;270:23;266:32;263:52;;;311:1;308;301:12;263:52;337:16;;-1:-1:-1;;;;;382:31:262;;372:42;;362:70;;428:1;425;418:12;362:70;500:2;485:18;;479:25;451:5;;-1:-1:-1;;;;;;516:30:262;;513:50;;;559:1;556;549:12;513:50;582:22;;635:4;627:13;;623:27;-1:-1:-1;613:55:262;;664:1;661;654:12;613:55;691:9;;-1:-1:-1;;;;;712:30:262;;709:56;;;745:18;;:::i;:::-;794:2;788:9;886:2;848:17;;-1:-1:-1;;844:31:262;;;877:2;840:40;836:54;824:67;;-1:-1:-1;;;;;906:34:262;;942:22;;;903:62;900:88;;;968:18;;:::i;:::-;1004:2;997:22;1028;;;1069:15;;;1086:2;1065:24;1062:37;-1:-1:-1;1059:57:262;;;1112:1;1109;1102:12;1059:57;1161:6;1156:2;1152;1148:11;1143:2;1135:6;1131:15;1125:43;1214:1;1209:2;1200:6;1192;1188:19;1184:28;1177:39;1235:6;1225:16;;;;;146:1101;;;;;:::o;1460:301::-;1589:3;1627:6;1621:13;1673:6;1666:4;1658:6;1654:17;1649:3;1643:37;1735:1;1699:16;;1724:13;;;-1:-1:-1;1699:16:262;1460:301;-1:-1:-1;1460:301:262:o;:::-;600:1117:25;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156069573d5ff35b3d5ffdfea264697066735822122087fbafd411ab2abecb7a4792069b1ff2736f1471d91a15a274be087fcc870e0964736f6c634300081c0033","sourceMap":"600:1117:25:-:0;;;2649:11:27;:9;:11::i;:::-;600:1117:25;2323:83:27;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;1583:132:25:-;1650:7;1676:32;811:66:26;1519:53;-1:-1:-1;;;;;1519:53:26;;1441:138;1676:32:25;1669:39;;1583:132;:::o;949:895:27:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27","linkReferences":{}},"methodIdentifiers":{},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains-ens-contracts-1.5.2/=dependencies/@ensdomains-ens-contracts-1.5.2/\",\":@ensdomains/ens-contracts/=dependencies/@ensdomains-ens-contracts-1.2.2/\",\":@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs/lz-evm-messagelib-v2/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/\",\":@layerzerolabs/lz-evm-protocol-v2/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/\",\":@layerzerolabs/oapp-evm/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":account-abstraction/=dependencies/account-abstraction/contracts/\",\":ds-test/=dependencies/erc6551-reference-0.3.1/lib/forge-std/lib/ds-test/src/\",\":erc6551-reference-0.3.1/=dependencies/erc6551-reference-0.3.1/\",\":eth-infinitism-account-abstraction-0.8.0/=dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/\",\":eth-infinitism-account-abstraction-0.8/=dependencies/eth-infinitism-account-abstraction-0.8.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/\",\":forge-std/=dependencies/erc6551-reference-0.3.1/lib/forge-std/src/\",\":safe-global-safe-smart-account-1.5.0/=dependencies/safe-global-safe-smart-account-1.5.0/\",\":solady-0.1.26/=dependencies/solady-0.1.26/src/\",\":solidity-bytes-utils-0.8/=dependencies/solidity-bytes-utils-0.8/contracts/\",\":solidity-bytes-utils/=dependencies/solidity-bytes-utils-0.8/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"payable","type":"fallback"}],"devdoc":{"kind":"dev","methods":{"constructor":{"details":"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero."}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains-ens-contracts-1.5.2/=dependencies/@ensdomains-ens-contracts-1.5.2/","@ensdomains/ens-contracts/=dependencies/@ensdomains-ens-contracts-1.2.2/","@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs/lz-evm-messagelib-v2/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/","@layerzerolabs/lz-evm-protocol-v2/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/","@layerzerolabs/oapp-evm/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","account-abstraction/=dependencies/account-abstraction/contracts/","ds-test/=dependencies/erc6551-reference-0.3.1/lib/forge-std/lib/ds-test/src/","erc6551-reference-0.3.1/=dependencies/erc6551-reference-0.3.1/","eth-infinitism-account-abstraction-0.8.0/=dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/","eth-infinitism-account-abstraction-0.8/=dependencies/eth-infinitism-account-abstraction-0.8.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/","forge-std/=dependencies/erc6551-reference-0.3.1/lib/forge-std/src/","safe-global-safe-smart-account-1.5.0/=dependencies/safe-global-safe-smart-account-1.5.0/","solady-0.1.26/=dependencies/solady-0.1.26/src/","solidity-bytes-utils-0.8/=dependencies/solidity-bytes-utils-0.8/contracts/","solidity-bytes-utils/=dependencies/solidity-bytes-utils-0.8/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Proxy.sol":"ERC1967Proxy"},"evmVersion":"prague","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Proxy.sol":{"keccak256":"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a","urls":["bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d","dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"}},"version":1},"id":25} \ No newline at end of file diff --git a/contracts/Hypermap.json b/contracts/Hypermap.json new file mode 100644 index 00000000..704e321f --- /dev/null +++ b/contracts/Hypermap.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"ERC6551_REGISTRY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC6551Registry"}],"stateMutability":"view"},{"type":"function","name":"METADATA_NOTE_KEY","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"fact","inputs":[{"name":"_fact","type":"bytes","internalType":"bytes"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"gene","inputs":[{"name":"_gene","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"get","inputs":[{"name":"namehash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_admin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"leaf","inputs":[{"name":"parenthash","type":"bytes32","internalType":"bytes32"},{"name":"label","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"namehash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"leafl","inputs":[{"name":"parenthash","type":"bytes32","internalType":"bytes32"},{"name":"label","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"namehash","type":"bytes32","internalType":"bytes32"},{"name":"labelhash","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"map","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tba","type":"address","internalType":"address"},{"name":"gene","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"label","type":"bytes","internalType":"bytes"},{"name":"initialization","type":"bytes","internalType":"bytes"},{"name":"implementation","type":"address","internalType":"address"}],"outputs":[{"name":"tba","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"note","inputs":[{"name":"_note","type":"bytes","internalType":"bytes"},{"name":"_data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"nonpayable"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"nonpayable"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tbaOf","inputs":[{"name":"entry","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"tba","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"Fact","inputs":[{"name":"parenthash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"namehash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"labelhash","type":"bytes","indexed":true,"internalType":"bytes"},{"name":"label","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Gene","inputs":[{"name":"entry","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"gene","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"Mint","inputs":[{"name":"parenthash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"namehash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"labelhash","type":"bytes","indexed":true,"internalType":"bytes"},{"name":"label","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Note","inputs":[{"name":"parenthash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"namehash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"labelhash","type":"bytes","indexed":true,"internalType":"bytes"},{"name":"label","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Zero","inputs":[{"name":"zeroTba","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CannotCreate2Proxy","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"ERC721IncorrectOwner","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InsufficientApproval","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ERC721InvalidApprover","inputs":[{"name":"approver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOperator","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidReceiver","inputs":[{"name":"receiver","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721InvalidSender","inputs":[{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"ERC721NonexistentToken","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"EmptyFact","inputs":[]},{"type":"error","name":"FactAlreadyExists","inputs":[]},{"type":"error","name":"FactMustBeginWithBang","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"FailedToInitializeTBA","inputs":[]},{"type":"error","name":"GeneAlreadySet","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidLabelCharacter","inputs":[]},{"type":"error","name":"LabelTooLong","inputs":[]},{"type":"error","name":"LabelTooShort","inputs":[]},{"type":"error","name":"NameAlreadyExists","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotParent","inputs":[]},{"type":"error","name":"NoteMustBeginWithTilde","inputs":[]},{"type":"error","name":"OnlyZero","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614d356100f95f395f8181611cc101528181611cea0152611e2d0152614d355ff3fe6080604052600436106101fc575f3560e01c806370a0823111610113578063b88d4fde1161009d578063e852398b1161006d578063e852398b1461060c578063e985e9c51461062b578063edc160841461064a578063f89536451461066d578063fcdb781e146106a1575f5ffd5b8063b88d4fde14610590578063c4d66de8146105af578063c87b56dd146105ce578063d547741f146105ed575f5ffd5b806391d14854116100e357806391d14854146104fb57806395d89b411461051a578063a217fddf1461052e578063a22cb46514610541578063ad3cb1cc14610560575f5ffd5b806370a082311461047f57806374e088291461049e5780637788b5a8146104bd5780638eaa6ac0146104dc575f5ffd5b806323b872dd1161019457806336568abe1161016457806336568abe146103fb57806342842e0e1461041a5780634f1ef2861461043957806352d1902d1461044c5780636352211e14610460575f5ffd5b806323b872dd1461036a578063248a9ca31461038957806327244d1e146103a85780632f2ff15d146103dc575f5ffd5b8063095ea7b3116101cf578063095ea7b3146102ab5780630ae186a8146102cc578063150b7a02146102fa5780632124b6921461033d575f5ffd5b806301ffc9a71461020057806306fdde0314610234578063081812fc14610255578063094cefed1461028c575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046126d8565b6106d9565b60405190151581526020015b60405180910390f35b34801561023f575f5ffd5b506102486106e9565b60405161022b9190612721565b348015610260575f5ffd5b5061027461026f366004612733565b61078a565b6040516001600160a01b03909116815260200161022b565b348015610297575f5ffd5b506102746102a63660046127a2565b61079e565b3480156102b6575f5ffd5b506102ca6102c5366004612834565b6108f8565b005b3480156102d7575f5ffd5b506102eb6102e6366004612733565b610907565b60405161022b9392919061285e565b348015610305575f5ffd5b50610324610314366004612926565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b348015610348575f5ffd5b5061035c61035736600461298d565b6109bc565b60405190815260200161022b565b348015610375575f5ffd5b506102ca6103843660046129d4565b6109f2565b348015610394575f5ffd5b5061035c6103a3366004612733565b610a80565b3480156103b3575f5ffd5b506102746103c2366004612733565b5f908152602081905260409020546001600160a01b031690565b3480156103e7575f5ffd5b506102ca6103f6366004612a12565b610aa0565b348015610406575f5ffd5b506102ca610415366004612a12565b610abc565b348015610425575f5ffd5b506102ca6104343660046129d4565b610af4565b6102ca610447366004612a40565b610b0e565b348015610457575f5ffd5b5061035c610b29565b34801561046b575f5ffd5b5061027461047a366004612733565b610b44565b34801561048a575f5ffd5b5061035c610499366004612a8c565b610b4e565b3480156104a9575f5ffd5b506102ca6104b8366004612a8c565b610ba6565b3480156104c8575f5ffd5b5061035c6104d7366004612aa7565b610c45565b3480156104e7575f5ffd5b506102eb6104f6366004612733565b610d7f565b348015610506575f5ffd5b5061021f610515366004612a12565b610e98565b348015610525575f5ffd5b50610248610ece565b348015610539575f5ffd5b5061035c5f81565b34801561054c575f5ffd5b506102ca61055b366004612b11565b610f0c565b34801561056b575f5ffd5b50610248604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561059b575f5ffd5b506102ca6105aa366004612926565b610f17565b3480156105ba575f5ffd5b506102ca6105c9366004612a8c565b610f2f565b3480156105d9575f5ffd5b506102486105e8366004612733565b611125565b3480156105f8575f5ffd5b506102ca610607366004612a12565b6113b2565b348015610617575f5ffd5b5061035c610626366004612aa7565b6113ce565b348015610636575f5ffd5b5061021f610645366004612b41565b611552565b348015610655575f5ffd5b506102746f6551c19487814612e58fe0681377575881565b348015610678575f5ffd5b5061068c61068736600461298d565b61159e565b6040805192835260208301919091520161022b565b3480156106ac575f5ffd5b506102486040518060400160405280600d81526020016c7e6d657461646174612d75726960981b81525081565b5f6106e3826115d8565b92915050565b5f516020614ca05f395f51905f52805460609190819061070890612b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461073490612b6d565b801561077f5780601f106107565761010080835404028352916020019161077f565b820191905f5260205f20905b81548152906001019060200180831161076257829003601f168201915b505050505091505090565b5f61079482611617565b506106e38261164e565b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052506107df93508492509050611687565b5f6107e861178a565b90505f5f6107f7838b8b6117d3565b5f85815260208190526040812060010154929450909250906001600160a01b03161561083d57505f8381526020819052604090206001908101546001600160a01b031696505b60408051602081018490520160408051601f198184030181529082905261086391612ba5565b604051809103902083857fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18e8e60405161089e929190612be3565b60405180910390a46108e88c8489848d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506117f092505050565b9c9b505050505050505050505050565b610903828233611a7e565b5050565b5f602081905290815260409020805460018201546002830180546001600160a01b0393841694929093169261093b90612b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461096790612b6d565b80156109b25780601f10610989576101008083540402835291602001916109b2565b820191905f5260205f20905b81548152906001019060200180831161099557829003601f168201915b5050505050905083565b5f604082106109de57604051633ea2fbc360e11b815260040160405180910390fd5b6109e98484846117d3565b50949350505050565b6001600160a01b038216610a2057604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610a2c838333611a8b565b9050836001600160a01b0316816001600160a01b031614610a7a576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a17565b50505050565b5f9081525f516020614ce05f395f51905f52602052604090206001015490565b610aa982610a80565b610ab281611b8f565b610a7a8383611b9c565b6001600160a01b0381163314610ae55760405163334bd91960e11b815260040160405180910390fd5b610aef8282611c3d565b505050565b610aef83838360405180602001604052805f815250610f17565b610b16611cb6565b610b1f82611d5c565b6109038282611d66565b5f610b32611e22565b505f516020614cc05f395f51905f5290565b5f6106e382611617565b5f5f516020614ca05f395f51905f526001600160a01b038316610b86576040516322718ad960e21b81525f6004820152602401610a17565b6001600160a01b039092165f908152600390920160205250604090205490565b5f610baf61178a565b5f818152602081905260409020600101549091506001600160a01b031615610bea5760405163f3dda33360e01b815260040160405180910390fd5b5f8181526020819052604080822060010180546001600160a01b0319166001600160a01b0386169081179091559051909183917fde0ec2494e561683ac09b109d8c4c4a08b4ddbd4fcd23b609fe107e63176ef5a9190a35050565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250845185945090925015159050610c8f57610c8f612bf6565b6020910101516001600160f81b031916603f60f91b14610cc25760405163a3b9ac9560e01b815260040160405180910390fd5b610ccd816001611687565b5f610cd661178a565b90505f5f610ce5838a8a6117d3565b5f8281526020819052604090209193509150600201610d05878983612c4e565b5060408051602081018390520160408051601f1981840301815290829052610d2c91612ba5565b604051809103902082847fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48c8c8c8c604051610d6b9493929190612d07565b60405180910390a450979650505050505050565b5f8181526020818152604080832081516060818101845282546001600160a01b0390811683526001840154169482019490945260028201805486959486949290840191610dcb90612b6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610df790612b6d565b8015610e425780601f10610e1957610100808354040283529160200191610e42565b820191905f5260205f20905b815481529060010190602001808311610e2557829003601f168201915b5050509190925250508151919250506001600160a01b0316610e6f57604001515f93508392509050610e91565b8051610e7a86610b44565b60405180602001604052805f815250935093509350505b9193909250565b5f9182525f516020614ce05f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060915f516020614ca05f395f51905f529161070890612b6d565b610903338383611e6b565b610f228484846109f2565b610a7a3385858585611f1a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f735750825b90505f826001600160401b03166001148015610f8e5750303b155b905081158015610f9c575080155b15610fba5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fe457845460ff60401b1916600160401b1785555b61102e60405180604001604052806008815260200167048797065726d61760c41b81525060405180604001604052806008815260200167048595045524d41560c41b815250612040565b611036612052565b61103e612052565b611046612052565b61104e612052565b5f60405161105b906126a9565b604051809103905ff080158015611074573d5f5f3e3d5ffd5b5090505f611095885f5f1b845f60405180602001604052805f8152506117f0565b90506110a15f89611b9c565b506040516001600160a01b038216907fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c0905f90a25050831561111d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b606061113082611617565b50604080518082018252600d81526c7e6d657461646174612d75726960981b602082015290516310925b4960e11b81525f913091632124b6929161117991879190600401612d38565b602060405180830381865afa158015611194573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b89190612d50565b5f818152602081905260408120600201805492935090916111d890612b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461120490612b6d565b801561124f5780601f106112265761010080835404028352916020019161124f565b820191905f5260205f20905b81548152906001019060200180831161123257829003601f168201915b50505050509050835f1415801561126557508051155b1561138c57604080518082018252600d81526c7e6d657461646174612d75726960981b602082015290516310925b4960e11b81523091632124b692916112af915f91600401612d38565b602060405180830381865afa1580156112ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ee9190612d50565b5f81815260208190526040902060020180549193509061130d90612b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461133990612b6d565b80156113845780601f1061135b57610100808354040283529160200191611384565b820191905f5260205f20905b81548152906001019060200180831161136757829003601f168201915b505050505090505b5f8151116113a85760405180602001604052805f8152506113aa565b805b949350505050565b6113bb82610a80565b6113c481611b8f565b610a7a8383611c3d565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084518594509092501515905061141857611418612bf6565b6020910101516001600160f81b031916602160f81b1461144b57604051636ae27d4f60e01b815260040160405180910390fd5b611456816001611687565b5f61145f61178a565b90505f5f61146e838a8a6117d3565b915091505f5f8381526020019081526020015f20600201805461149090612b6d565b1590506114b057604051632950bb6760e21b815260040160405180910390fd5b5f8690036114d1576040516301b3720560e01b815260040160405180910390fd5b5f8281526020819052604090206002016114ec878983612c4e565b5060408051602081018390520160408051601f198184030181529082905261151391612ba5565b604051809103902082847f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8c8c8c8c604051610d6b9493929190612d07565b6001600160a01b039182165f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b5f80604083106115c157604051633ea2fbc360e11b815260040160405180910390fd5b6115cc8585856117d3565b91509150935093915050565b5f6001600160e01b031982166380ac58cd60e01b148061160857506001600160e01b03198216635b5e139f60e01b145b806106e357506106e38261205a565b5f5f6116228361208e565b90506001600160a01b0381166106e357604051637e27328960e01b815260048101849052602401610a17565b5f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b81518082106116a957604051631406d65b60e11b815260040160405180910390fd5b604081106116ca57604051633ea2fbc360e11b815260040160405180910390fd5b815b81811015610a7a575f8482815181106116e7576116e7612bf6565b01602001516001600160f81b0319169050600360fc1b811080159061171a5750603960f81b6001600160f81b0319821611155b8061174c5750606160f81b6001600160f81b031982161080159061174c5750603d60f91b6001600160f81b0319821611155b806117645750602d60f81b6001600160f81b03198216145b61178157604051633a1fdfd160e21b815260040160405180910390fd5b506001016116cc565b5f5f611795336120c7565b5f818152602081905260409020549093508392506001600160a01b0316331490506106e357604051631c09fe6560e11b815260040160405180910390fd5b5f5f82845f3750505f908120928152602083905260409020929050565b5f848152602081905260408120546001600160a01b03161561182557604051633480a50360e21b815260040160405180910390fd5b6f6551c19487814612e58fe068137757586001600160a01b0316638a54c52f8630604051611852906126b6565b6001600160a01b0390911681526020018190604051809103905ff590508015801561187f573d5f5f3e3d5ffd5b5060405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018890524660448201523060648201526084810188905260a4016020604051808303815f875af11580156118dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119019190612d67565b90506040518060600160405280826001600160a01b0316815260200184611928575f61192a565b855b6001600160a01b03908116825260408051602081810183525f8083529481019190915289845283815292819020845181549084166001600160a01b0319918216178255938501516001820180549190941694169390931790915582015160028201906119969082612d82565b506119a591503090508661211b565b5f816001600160a01b031663d1f5789460e01b86856040516024016119cb929190612e3c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611a099190612ba5565b5f604051808303815f865af19150503d805f8114611a42576040519150601f19603f3d011682016040523d82523d5f602084013e611a47565b606091505b5050905080611a695760405163169c52c760e21b815260040160405180910390fd5b611a7430888861217c565b5095945050505050565b610aef8383836001612196565b5f5f516020614ca05f395f51905f5281611aa48561208e565b90506001600160a01b03841615611ac057611ac08185876122a9565b6001600160a01b03811615611afc57611adb5f865f5f612196565b6001600160a01b0381165f908152600383016020526040902080545f190190555b6001600160a01b03861615611b2c576001600160a01b0386165f9081526003830160205260409020805460010190555b5f85815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49150505b9392505050565b611b99813361230d565b50565b5f5f516020614ce05f395f51905f52611bb58484610e98565b611c34575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611bea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106e3565b5f9150506106e3565b5f5f516020614ce05f395f51905f52611c568484610e98565b15611c34575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106e3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611d3c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611d305f516020614cc05f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15611d5a5760405163703e46dd60e11b815260040160405180910390fd5b565b5f61090381611b8f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611dc0575060408051601f3d908101601f19168201909252611dbd91810190612d50565b60015b611de857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a17565b5f516020614cc05f395f51905f528114611e1857604051632a87526960e21b815260048101829052602401610a17565b610aef8383612346565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d5a5760405163703e46dd60e11b815260040160405180910390fd5b5f516020614ca05f395f51905f526001600160a01b038316611eab57604051630b61174360e31b81526001600160a01b0384166004820152602401610a17565b6001600160a01b038481165f818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b1561203957604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611f5c908890889087908790600401612e5f565b6020604051808303815f875af1925050508015611f96575060408051601f3d908101601f19168201909252611f9391810190612e9b565b60015b611ffd573d808015611fc3576040519150601f19603f3d011682016040523d82523d5f602084013e611fc8565b606091505b5080515f03611ff557604051633250574960e11b81526001600160a01b0385166004820152602401610a17565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461111d57604051633250574960e11b81526001600160a01b0385166004820152602401610a17565b5050505050565b61204861239b565b61090382826123e4565b611d5a61239b565b5f6001600160e01b03198216637965db0b60e01b14806106e357506301ffc9a760e01b6001600160e01b03198316146106e3565b5f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c8080602001905181019061210d9190612eb6565b935093509350509193909250565b6001600160a01b03821661214457604051633250574960e11b81525f6004820152602401610a17565b5f61215083835f611a8b565b90506001600160a01b03811615610aef576040516339e3563760e11b81525f6004820152602401610a17565b610aef83838360405180602001604052805f815250612414565b5f516020614ca05f395f51905f5281806121b857506001600160a01b03831615155b15612279575f6121c785611617565b90506001600160a01b038416158015906121f35750836001600160a01b0316816001600160a01b031614155b801561220657506122048185611552565b155b1561222f5760405163a9fbf51f60e01b81526001600160a01b0385166004820152602401610a17565b82156122775784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5f93845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6122b483838361241f565b610aef576001600160a01b0383166122e257604051637e27328960e01b815260048101829052602401610a17565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610a17565b6123178282610e98565b6109035760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610a17565b61234f82612483565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561239357610aef82826124e6565b610903612558565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611d5a57604051631afcd79f60e31b815260040160405180910390fd5b6123ec61239b565b5f516020614ca05f395f51905f52806124058482612d82565b5060018101610a7a8382612d82565b610f22848484612577565b5f6001600160a01b038316158015906113aa5750826001600160a01b0316846001600160a01b0316148061245857506124588484611552565b806113aa5750826001600160a01b03166124718361164e565b6001600160a01b031614949350505050565b806001600160a01b03163b5f036124b857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a17565b5f516020614cc05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516125029190612ba5565b5f60405180830381855af49150503d805f811461253a576040519150601f19603f3d011682016040523d82523d5f602084013e61253f565b606091505b509150915061254f858383612624565b95945050505050565b3415611d5a5760405163b398979f60e01b815260040160405180910390fd5b6001600160a01b0382166125a057604051633250574960e11b81525f6004820152602401610a17565b5f6125ac83835f611a8b565b90506001600160a01b0381166125d857604051637e27328960e01b815260048101839052602401610a17565b836001600160a01b0316816001600160a01b031614610a7a576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a17565b6060826126395761263482612680565b611b88565b815115801561265057506001600160a01b0384163b155b1561267957604051639996b31560e01b81526001600160a01b0385166004820152602401610a17565b5080611b88565b8051156126905780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61189480612eef83390190565b61051d8061478383390190565b6001600160e01b031981168114611b99575f5ffd5b5f602082840312156126e8575f5ffd5b8135611b88816126c3565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611b8860208301846126f3565b5f60208284031215612743575f5ffd5b5035919050565b6001600160a01b0381168114611b99575f5ffd5b5f5f83601f84011261276e575f5ffd5b5081356001600160401b03811115612784575f5ffd5b60208301915083602082850101111561279b575f5ffd5b9250929050565b5f5f5f5f5f5f608087890312156127b7575f5ffd5b86356127c28161274a565b955060208701356001600160401b038111156127dc575f5ffd5b6127e889828a0161275e565b90965094505060408701356001600160401b03811115612806575f5ffd5b61281289828a0161275e565b90945092505060608701356128268161274a565b809150509295509295509295565b5f5f60408385031215612845575f5ffd5b82356128508161274a565b946020939093013593505050565b6001600160a01b038481168252831660208201526060604082018190525f9061254f908301846126f3565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126128ac575f5ffd5b81356001600160401b038111156128c5576128c5612889565b604051601f8201601f19908116603f011681016001600160401b03811182821017156128f3576128f3612889565b60405281815283820160200185101561290a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215612939575f5ffd5b84356129448161274a565b935060208501356129548161274a565b92506040850135915060608501356001600160401b03811115612975575f5ffd5b6129818782880161289d565b91505092959194509250565b5f5f5f6040848603121561299f575f5ffd5b8335925060208401356001600160401b038111156129bb575f5ffd5b6129c78682870161275e565b9497909650939450505050565b5f5f5f606084860312156129e6575f5ffd5b83356129f18161274a565b92506020840135612a018161274a565b929592945050506040919091013590565b5f5f60408385031215612a23575f5ffd5b823591506020830135612a358161274a565b809150509250929050565b5f5f60408385031215612a51575f5ffd5b8235612a5c8161274a565b915060208301356001600160401b03811115612a76575f5ffd5b612a828582860161289d565b9150509250929050565b5f60208284031215612a9c575f5ffd5b8135611b888161274a565b5f5f5f5f60408587031215612aba575f5ffd5b84356001600160401b03811115612acf575f5ffd5b612adb8782880161275e565b90955093505060208501356001600160401b03811115612af9575f5ffd5b612b058782880161275e565b95989497509550505050565b5f5f60408385031215612b22575f5ffd5b8235612b2d8161274a565b915060208301358015158114612a35575f5ffd5b5f5f60408385031215612b52575f5ffd5b8235612b5d8161274a565b91506020830135612a358161274a565b600181811c90821680612b8157607f821691505b602082108103612b9f57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6113aa602083018486612bbb565b634e487b7160e01b5f52603260045260245ffd5b601f821115610aef57805f5260205f20601f840160051c81016020851015612c2f5750805b601f840160051c820191505b81811015612039575f8155600101612c3b565b6001600160401b03831115612c6557612c65612889565b612c7983612c738354612b6d565b83612c0a565b5f601f841160018114612caa575f8515612c935750838201355b5f19600387901b1c1916600186901b178355612039565b5f83815260208120601f198716915b82811015612cd95786850135825560209485019460019092019101612cb9565b5086821015612cf5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f612d1a604083018688612bbb565b8281036020840152612d2d818587612bbb565b979650505050505050565b828152604060208201525f6113aa60408301846126f3565b5f60208284031215612d60575f5ffd5b5051919050565b5f60208284031215612d77575f5ffd5b8151611b888161274a565b81516001600160401b03811115612d9b57612d9b612889565b612daf81612da98454612b6d565b84612c0a565b6020601f821160018114612de1575f8315612dca5750848201515b5f19600385901b1c1916600184901b178455612039565b5f84815260208120601f198516915b82811015612e105787850151825560209485019460019092019101612df0565b5084821015612e2d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03831681526040602082018190525f906113aa908301846126f3565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90612e91908301846126f3565b9695505050505050565b5f60208284031215612eab575f5ffd5b8151611b88816126c3565b5f5f5f60608486031215612ec8575f5ffd5b83516020850151909350612edb8161274a565b604094909401519295939450919291505056fe6080604052348015600e575f5ffd5b506118788061001c5f395ff3fe608060405260043610610112575f3560e01c80638f41ec5a1161009d578063c19d93fb11610062578063c19d93fb1461031a578063ca3b98bb1461032e578063d087d28814610341578063f23a6e6114610355578063fc0c546a14610381575f5ffd5b80638f41ec5a146102785780639cdf379c1461028c578063b0d691fe1461029f578063b61d27f6146102cd578063bc197c81146102ec575f5ffd5b806319822f7c116100e357806319822f7c146101ce57806334fcd5be146101fb578063519454471461021a578063523e32601461023a5780636d70f7ae14610259575f5ffd5b806223de291461011d57806301ffc9a714610143578063150b7a02146101775780631626ba7e146101af575f5ffd5b3661011957005b5f5ffd5b348015610128575f5ffd5b506101416101373660046110f9565b5050505050505050565b005b34801561014e575f5ffd5b5061016261015d3660046111bb565b6103b8565b60405190151581526020015b60405180910390f35b348015610182575f5ffd5b506101966101913660046111d6565b6103e3565b6040516001600160e01b0319909116815260200161016e565b3480156101ba575f5ffd5b506101966101c9366004611257565b61043d565b3480156101d9575f5ffd5b506101ed6101e8366004611311565b610562565b60405190815260200161016e565b348015610206575f5ffd5b5061014161021536600461139f565b610594565b61022d6102283660046113f2565b610684565b60405161016e919061148b565b348015610245575f5ffd5b5061019661025436600461149d565b6106b0565b348015610264575f5ffd5b506101626102733660046114ed565b6106d5565b348015610283575f5ffd5b506101ed600181565b348015610297575f5ffd5b506101ed5f81565b3480156102aa575f5ffd5b50604051734337084d9e255ff0702461cf8895ce9e3b5ff108815260200161016e565b3480156102d8575f5ffd5b506101416102e7366004611508565b610773565b3480156102f7575f5ffd5b5061019661030636600461155f565b63bc197c8160e01b98975050505050505050565b348015610325575f5ffd5b506101ed6107d2565b61022d61033c3660046115ff565b6108b9565b34801561034c575f5ffd5b506101ed6108f2565b348015610360575f5ffd5b5061019661036f366004611674565b63f23a6e6160e01b9695505050505050565b34801561038c575f5ffd5b5061039561097b565b604080519384526001600160a01b0390921660208401529082015260600161016e565b5f6103c282610991565b806103dd57506001600160e01b03198216636faff5f160e01b145b92915050565b5f5f5f6103ee61097b565b909350915050336001600160a01b03831614801561040b57508086145b156104295760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61045d85602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610528578285830160200161047e826106d5565b15801561049457506001600160a01b0382163014155b156104af57506001600160e01b031994506103dd9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104dd908b9085906004016116ea565b602060405180830381865afa1580156104f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051c9190611702565b955050505050506103dd565b61053761027387838686610a32565b1561054f5750630b135d3f60e11b92506103dd915050565b506001600160e01b031995945050505050565b5f61056b610a5e565b6105758484610ac3565b90506105848460200135610bd0565b61058d82610c19565b9392505050565b61059c610c5e565b805f5b8181101561067e57368484838181106105ba576105ba61171d565b90506020028101906105cc9190611731565b90505f61062a6105df60208401846114ed565b60208401356105f1604086018661174f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610c66565b905080610674578360010361064657610641610c7c565b610674565b826106505f610c8d565b604051635a15467560e01b815260040161066b9291906116ea565b60405180910390fd5b505060010161059f565b50505050565b60605f61069587878787875a610cbe565b92509050806106a657815160208301fd5b5095945050505050565b5f6106ba846106d5565b6106c4575f6106cd565b630291f19360e51b5b949350505050565b5f5f5f6106e061097b565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561072d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107519190611791565b6001600160a01b03161480156106cd57505050506001600160a01b0316151590565b61077b610c5e565b5f6107bc858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610c66565b9050806107cb576107cb610c7c565b5050505050565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610857573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087b91906117ac565b825460405191925061089a918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f6108d6888888888888156108d05788610cbe565b5a610cbe565b92509050806108e757815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610952573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097691906117ac565b905090565b5f5f5f610986610d15565b925092509250909192565b5f6001600160e01b03198216633ce4a3e960e01b14806109c157506001600160e01b031982166301ffc9a760e01b145b806109dc57506001600160e01b031982166306608bdf60e21b145b806109f757506001600160e01b03198216630b135d3f60e11b145b80610a1257506001600160e01b03198216630271189760e51b145b806103dd57506001600160e01b03198216635194544760e01b1492915050565b5f5f5f5f610a4288888888610d21565b925092509250610a528282610de9565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff10814610ac15760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000604482015260640161066b565b565b5f8080610b1184610ad861010088018861174f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ea592505050565b5090925090505f816003811115610b2a57610b2a6117c3565b148015610b3b5750610b3b826106d5565b15610b4a575f925050506103dd565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c9020610b8a81610ad861010089018961174f565b5090935091505f826003811115610ba357610ba36117c3565b148015610bb45750610bb4836106d5565b15610bc4575f93505050506103dd565b50600195945050505050565b6001600160401b038110610c165760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b604482015260640161066b565b50565b8015610c16576040515f90339083908381818185875af1925050503d805f81146107cb576040519150601f19603f3d011682016040523d82523d5f602084013e6107cb565b610ac1610a5e565b5f5f5f845160208601878987f195945050505050565b610ac1610c885f610c8d565b610eee565b60603d8215610ca15782811115610ca15750815b604051602082018101604052818152815f602083013e9392505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f916060918184610cf1836117d7565b9190505550610d04898989898989610ef6565b92509250505b965096945050505050565b5f5f5f6109863061104d565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d5a57505f91506003905082610ddf565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dab573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610dd657505f925060019150829050610ddf565b92505f91508190505b9450945094915050565b5f826003811115610dfc57610dfc6117c3565b03610e05575050565b6001826003811115610e1957610e196117c3565b03610e375760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e4b57610e4b6117c3565b03610e6c5760405163fce698f760e01b81526004810182905260240161066b565b6003826003811115610e8057610e806117c3565b03610ea1576040516335e2f38360e21b81526004810182905260240161066b565b5050565b5f5f5f8351604103610edc576020840151604085015160608601515f1a610ece88828585610d21565b955095509550505050610ee7565b505081515f91506002905b9250925092565b805160208201fd5b5f6060610f02336106d5565b158015610f23575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15610f4157604051634780295360e11b815260040160405180910390fd5b8360ff165f03610fb257876001600160a01b031683888888604051610f679291906117fb565b5f60405180830381858888f193505050503d805f8114610fa2576040519150601f19603f3d011682016040523d82523d5f602084013e610fa7565b606091505b509092509050610d0a565b8360ff1660010361101157876001600160a01b0316838787604051610fd89291906117fb565b5f604051808303818686f4925050503d805f8114610fa2576040519150601f19603f3d011682016040523d82523d5f602084013e610fa7565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b604482015260640161066b565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611093919061180a565b935093509350509193909250565b6001600160a01b0381168114610c16575f5ffd5b5f5f83601f8401126110c5575f5ffd5b5081356001600160401b038111156110db575f5ffd5b6020830191508360208285010111156110f2575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611110575f5ffd5b883561111b816110a1565b9750602089013561112b816110a1565b9650604089013561113b816110a1565b95506060890135945060808901356001600160401b0381111561115c575f5ffd5b6111688b828c016110b5565b90955093505060a08901356001600160401b03811115611186575f5ffd5b6111928b828c016110b5565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610c16575f5ffd5b5f602082840312156111cb575f5ffd5b813561058d816111a6565b5f5f5f5f5f608086880312156111ea575f5ffd5b85356111f5816110a1565b94506020860135611205816110a1565b93506040860135925060608601356001600160401b03811115611226575f5ffd5b611232888289016110b5565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611268575f5ffd5b8235915060208301356001600160401b03811115611284575f5ffd5b8301601f81018513611294575f5ffd5b80356001600160401b038111156112ad576112ad611243565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112db576112db611243565b6040528181528282016020018710156112f2575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215611323575f5ffd5b83356001600160401b03811115611338575f5ffd5b8401610120818703121561134a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261136f575f5ffd5b5081356001600160401b03811115611385575f5ffd5b6020830191508360208260051b85010111156110f2575f5ffd5b5f5f602083850312156113b0575f5ffd5b82356001600160401b038111156113c5575f5ffd5b6113d18582860161135f565b90969095509350505050565b803560ff811681146113ed575f5ffd5b919050565b5f5f5f5f5f60808688031215611406575f5ffd5b8535611411816110a1565b94506020860135935060408601356001600160401b03811115611432575f5ffd5b61143e888289016110b5565b90945092506114519050606087016113dd565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61058d602083018461145d565b5f5f5f604084860312156114af575f5ffd5b83356114ba816110a1565b925060208401356001600160401b038111156114d4575f5ffd5b6114e0868287016110b5565b9497909650939450505050565b5f602082840312156114fd575f5ffd5b813561058d816110a1565b5f5f5f5f6060858703121561151b575f5ffd5b8435611526816110a1565b93506020850135925060408501356001600160401b03811115611547575f5ffd5b611553878288016110b5565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b031215611576575f5ffd5b8835611581816110a1565b97506020890135611591816110a1565b965060408901356001600160401b038111156115ab575f5ffd5b6115b78b828c0161135f565b90975095505060608901356001600160401b038111156115d5575f5ffd5b6115e18b828c0161135f565b90955093505060808901356001600160401b03811115611186575f5ffd5b5f5f5f5f5f5f60a08789031215611614575f5ffd5b863561161f816110a1565b95506020870135945060408701356001600160401b03811115611640575f5ffd5b61164c89828a016110b5565b909550935061165f9050606088016113dd565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a08789031215611689575f5ffd5b8635611694816110a1565b955060208701356116a4816110a1565b9450604087013593506060870135925060808701356001600160401b038111156116cc575f5ffd5b6116d889828a016110b5565b979a9699509497509295939492505050565b828152604060208201525f6106cd604083018461145d565b5f60208284031215611712575f5ffd5b815161058d816111a6565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611745575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611764575f5ffd5b8301803591506001600160401b0382111561177d575f5ffd5b6020019150368190038213156110f2575f5ffd5b5f602082840312156117a1575f5ffd5b815161058d816110a1565b5f602082840312156117bc575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b5f600182016117f457634e487b7160e01b5f52601160045260245ffd5b5060010190565b818382375f9101908152919050565b5f5f5f6060848603121561181c575f5ffd5b8351602085015190935061182f816110a1565b604094909401519295939450919291505056fea264697066735822122026b84c7e0030ace2dad6873636642127a17736dad1010cae2604a26e8c3d668864736f6c634300081c003360a0604052348015600e575f5ffd5b5060405161051d38038061051d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516104a061007d5f395f607a01526104a05ff3fe608060405260043610610021575f3560e01c8063d1f578941461003257610028565b3661002857005b610030610045565b005b610030610040366004610383565b610057565b610055610050610132565b610169565b565b7f7d0893b5fe6077fb4cf083ec3487b8eece7e03b4ab6e888f7a8a1758010f8c007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146100df57805460ff16156100bf576100ba610045565b6100df565b60405163572190d160e01b81523360048201526024015b60405180910390fd5b805460ff16156101015760405162dc149f60e41b815260040160405180910390fd5b5f61010a610132565b6001600160a01b03160361012d57805460ff1916600117815561012d8383610187565b505050565b5f6101647f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e808015610183573d5ff35b3d5ffd5b610190826101e0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101d45761012d8282610256565b6101dc6102c8565b5050565b806001600160a01b03163b5f0361021557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100d6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516102729190610454565b5f60405180830381855af49150503d805f81146102aa576040519150601f19603f3d011682016040523d82523d5f602084013e6102af565b606091505b50915091506102bf8583836102e7565b95945050505050565b34156100555760405163b398979f60e01b815260040160405180910390fd5b6060826102fc576102f782610346565b61033f565b815115801561031357506001600160a01b0384163b155b1561033c57604051639996b31560e01b81526001600160a01b03851660048201526024016100d6565b50805b9392505050565b8051156103565780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610394575f5ffd5b82356001600160a01b03811681146103aa575f5ffd5b9150602083013567ffffffffffffffff8111156103c5575f5ffd5b8301601f810185136103d5575f5ffd5b803567ffffffffffffffff8111156103ef576103ef61036f565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561041e5761041e61036f565b604052818152828201602001871015610435575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212205c8437c90a52b26afb62a6e21b8baa0d106dcc547054521f0074dea229fd630f64736f6c634300081c003380bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212209ab2d5e814edafb6f18f548396487d6042a41f7021b3d3f4c12c0e62f67ce81164736f6c634300081c0033","sourceMap":"973:14003:189:-:0;;;1171:4:93;1128:48;;2002:53:189;;;;;;;;;-1:-1:-1;2026:22:189;:20;:22::i;:::-;973:14003;;7711:422:92;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:92;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:92;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:92;-1:-1:-1;;;;;8035:33:92;;;;;8087:29;;158:50:262;;;8087:29:92;;146:2:262;131:18;8087:29:92;;;;;;;7981:146;7760:373;7711:422::o;14:200:262:-;973:14003:189;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101fc575f3560e01c806370a0823111610113578063b88d4fde1161009d578063e852398b1161006d578063e852398b1461060c578063e985e9c51461062b578063edc160841461064a578063f89536451461066d578063fcdb781e146106a1575f5ffd5b8063b88d4fde14610590578063c4d66de8146105af578063c87b56dd146105ce578063d547741f146105ed575f5ffd5b806391d14854116100e357806391d14854146104fb57806395d89b411461051a578063a217fddf1461052e578063a22cb46514610541578063ad3cb1cc14610560575f5ffd5b806370a082311461047f57806374e088291461049e5780637788b5a8146104bd5780638eaa6ac0146104dc575f5ffd5b806323b872dd1161019457806336568abe1161016457806336568abe146103fb57806342842e0e1461041a5780634f1ef2861461043957806352d1902d1461044c5780636352211e14610460575f5ffd5b806323b872dd1461036a578063248a9ca31461038957806327244d1e146103a85780632f2ff15d146103dc575f5ffd5b8063095ea7b3116101cf578063095ea7b3146102ab5780630ae186a8146102cc578063150b7a02146102fa5780632124b6921461033d575f5ffd5b806301ffc9a71461020057806306fdde0314610234578063081812fc14610255578063094cefed1461028c575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046126d8565b6106d9565b60405190151581526020015b60405180910390f35b34801561023f575f5ffd5b506102486106e9565b60405161022b9190612721565b348015610260575f5ffd5b5061027461026f366004612733565b61078a565b6040516001600160a01b03909116815260200161022b565b348015610297575f5ffd5b506102746102a63660046127a2565b61079e565b3480156102b6575f5ffd5b506102ca6102c5366004612834565b6108f8565b005b3480156102d7575f5ffd5b506102eb6102e6366004612733565b610907565b60405161022b9392919061285e565b348015610305575f5ffd5b50610324610314366004612926565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200161022b565b348015610348575f5ffd5b5061035c61035736600461298d565b6109bc565b60405190815260200161022b565b348015610375575f5ffd5b506102ca6103843660046129d4565b6109f2565b348015610394575f5ffd5b5061035c6103a3366004612733565b610a80565b3480156103b3575f5ffd5b506102746103c2366004612733565b5f908152602081905260409020546001600160a01b031690565b3480156103e7575f5ffd5b506102ca6103f6366004612a12565b610aa0565b348015610406575f5ffd5b506102ca610415366004612a12565b610abc565b348015610425575f5ffd5b506102ca6104343660046129d4565b610af4565b6102ca610447366004612a40565b610b0e565b348015610457575f5ffd5b5061035c610b29565b34801561046b575f5ffd5b5061027461047a366004612733565b610b44565b34801561048a575f5ffd5b5061035c610499366004612a8c565b610b4e565b3480156104a9575f5ffd5b506102ca6104b8366004612a8c565b610ba6565b3480156104c8575f5ffd5b5061035c6104d7366004612aa7565b610c45565b3480156104e7575f5ffd5b506102eb6104f6366004612733565b610d7f565b348015610506575f5ffd5b5061021f610515366004612a12565b610e98565b348015610525575f5ffd5b50610248610ece565b348015610539575f5ffd5b5061035c5f81565b34801561054c575f5ffd5b506102ca61055b366004612b11565b610f0c565b34801561056b575f5ffd5b50610248604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561059b575f5ffd5b506102ca6105aa366004612926565b610f17565b3480156105ba575f5ffd5b506102ca6105c9366004612a8c565b610f2f565b3480156105d9575f5ffd5b506102486105e8366004612733565b611125565b3480156105f8575f5ffd5b506102ca610607366004612a12565b6113b2565b348015610617575f5ffd5b5061035c610626366004612aa7565b6113ce565b348015610636575f5ffd5b5061021f610645366004612b41565b611552565b348015610655575f5ffd5b506102746f6551c19487814612e58fe0681377575881565b348015610678575f5ffd5b5061068c61068736600461298d565b61159e565b6040805192835260208301919091520161022b565b3480156106ac575f5ffd5b506102486040518060400160405280600d81526020016c7e6d657461646174612d75726960981b81525081565b5f6106e3826115d8565b92915050565b5f516020614ca05f395f51905f52805460609190819061070890612b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461073490612b6d565b801561077f5780601f106107565761010080835404028352916020019161077f565b820191905f5260205f20905b81548152906001019060200180831161076257829003601f168201915b505050505091505090565b5f61079482611617565b506106e38261164e565b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201829052506107df93508492509050611687565b5f6107e861178a565b90505f5f6107f7838b8b6117d3565b5f85815260208190526040812060010154929450909250906001600160a01b03161561083d57505f8381526020819052604090206001908101546001600160a01b031696505b60408051602081018490520160408051601f198184030181529082905261086391612ba5565b604051809103902083857fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18e8e60405161089e929190612be3565b60405180910390a46108e88c8489848d8d8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506117f092505050565b9c9b505050505050505050505050565b610903828233611a7e565b5050565b5f602081905290815260409020805460018201546002830180546001600160a01b0393841694929093169261093b90612b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461096790612b6d565b80156109b25780601f10610989576101008083540402835291602001916109b2565b820191905f5260205f20905b81548152906001019060200180831161099557829003601f168201915b5050505050905083565b5f604082106109de57604051633ea2fbc360e11b815260040160405180910390fd5b6109e98484846117d3565b50949350505050565b6001600160a01b038216610a2057604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610a2c838333611a8b565b9050836001600160a01b0316816001600160a01b031614610a7a576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a17565b50505050565b5f9081525f516020614ce05f395f51905f52602052604090206001015490565b610aa982610a80565b610ab281611b8f565b610a7a8383611b9c565b6001600160a01b0381163314610ae55760405163334bd91960e11b815260040160405180910390fd5b610aef8282611c3d565b505050565b610aef83838360405180602001604052805f815250610f17565b610b16611cb6565b610b1f82611d5c565b6109038282611d66565b5f610b32611e22565b505f516020614cc05f395f51905f5290565b5f6106e382611617565b5f5f516020614ca05f395f51905f526001600160a01b038316610b86576040516322718ad960e21b81525f6004820152602401610a17565b6001600160a01b039092165f908152600390920160205250604090205490565b5f610baf61178a565b5f818152602081905260409020600101549091506001600160a01b031615610bea5760405163f3dda33360e01b815260040160405180910390fd5b5f8181526020819052604080822060010180546001600160a01b0319166001600160a01b0386169081179091559051909183917fde0ec2494e561683ac09b109d8c4c4a08b4ddbd4fcd23b609fe107e63176ef5a9190a35050565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250845185945090925015159050610c8f57610c8f612bf6565b6020910101516001600160f81b031916603f60f91b14610cc25760405163a3b9ac9560e01b815260040160405180910390fd5b610ccd816001611687565b5f610cd661178a565b90505f5f610ce5838a8a6117d3565b5f8281526020819052604090209193509150600201610d05878983612c4e565b5060408051602081018390520160408051601f1981840301815290829052610d2c91612ba5565b604051809103902082847fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48c8c8c8c604051610d6b9493929190612d07565b60405180910390a450979650505050505050565b5f8181526020818152604080832081516060818101845282546001600160a01b0390811683526001840154169482019490945260028201805486959486949290840191610dcb90612b6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610df790612b6d565b8015610e425780601f10610e1957610100808354040283529160200191610e42565b820191905f5260205f20905b815481529060010190602001808311610e2557829003601f168201915b5050509190925250508151919250506001600160a01b0316610e6f57604001515f93508392509050610e91565b8051610e7a86610b44565b60405180602001604052805f815250935093509350505b9193909250565b5f9182525f516020614ce05f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060915f516020614ca05f395f51905f529161070890612b6d565b610903338383611e6b565b610f228484846109f2565b610a7a3385858585611f1a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f735750825b90505f826001600160401b03166001148015610f8e5750303b155b905081158015610f9c575080155b15610fba5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610fe457845460ff60401b1916600160401b1785555b61102e60405180604001604052806008815260200167048797065726d61760c41b81525060405180604001604052806008815260200167048595045524d41560c41b815250612040565b611036612052565b61103e612052565b611046612052565b61104e612052565b5f60405161105b906126a9565b604051809103905ff080158015611074573d5f5f3e3d5ffd5b5090505f611095885f5f1b845f60405180602001604052805f8152506117f0565b90506110a15f89611b9c565b506040516001600160a01b038216907fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c0905f90a25050831561111d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b606061113082611617565b50604080518082018252600d81526c7e6d657461646174612d75726960981b602082015290516310925b4960e11b81525f913091632124b6929161117991879190600401612d38565b602060405180830381865afa158015611194573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b89190612d50565b5f818152602081905260408120600201805492935090916111d890612b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461120490612b6d565b801561124f5780601f106112265761010080835404028352916020019161124f565b820191905f5260205f20905b81548152906001019060200180831161123257829003601f168201915b50505050509050835f1415801561126557508051155b1561138c57604080518082018252600d81526c7e6d657461646174612d75726960981b602082015290516310925b4960e11b81523091632124b692916112af915f91600401612d38565b602060405180830381865afa1580156112ca573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ee9190612d50565b5f81815260208190526040902060020180549193509061130d90612b6d565b80601f016020809104026020016040519081016040528092919081815260200182805461133990612b6d565b80156113845780601f1061135b57610100808354040283529160200191611384565b820191905f5260205f20905b81548152906001019060200180831161136757829003601f168201915b505050505090505b5f8151116113a85760405180602001604052805f8152506113aa565b805b949350505050565b6113bb82610a80565b6113c481611b8f565b610a7a8383611c3d565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084518594509092501515905061141857611418612bf6565b6020910101516001600160f81b031916602160f81b1461144b57604051636ae27d4f60e01b815260040160405180910390fd5b611456816001611687565b5f61145f61178a565b90505f5f61146e838a8a6117d3565b915091505f5f8381526020019081526020015f20600201805461149090612b6d565b1590506114b057604051632950bb6760e21b815260040160405180910390fd5b5f8690036114d1576040516301b3720560e01b815260040160405180910390fd5b5f8281526020819052604090206002016114ec878983612c4e565b5060408051602081018390520160408051601f198184030181529082905261151391612ba5565b604051809103902082847f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8c8c8c8c604051610d6b9493929190612d07565b6001600160a01b039182165f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b5f80604083106115c157604051633ea2fbc360e11b815260040160405180910390fd5b6115cc8585856117d3565b91509150935093915050565b5f6001600160e01b031982166380ac58cd60e01b148061160857506001600160e01b03198216635b5e139f60e01b145b806106e357506106e38261205a565b5f5f6116228361208e565b90506001600160a01b0381166106e357604051637e27328960e01b815260048101849052602401610a17565b5f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b81518082106116a957604051631406d65b60e11b815260040160405180910390fd5b604081106116ca57604051633ea2fbc360e11b815260040160405180910390fd5b815b81811015610a7a575f8482815181106116e7576116e7612bf6565b01602001516001600160f81b0319169050600360fc1b811080159061171a5750603960f81b6001600160f81b0319821611155b8061174c5750606160f81b6001600160f81b031982161080159061174c5750603d60f91b6001600160f81b0319821611155b806117645750602d60f81b6001600160f81b03198216145b61178157604051633a1fdfd160e21b815260040160405180910390fd5b506001016116cc565b5f5f611795336120c7565b5f818152602081905260409020549093508392506001600160a01b0316331490506106e357604051631c09fe6560e11b815260040160405180910390fd5b5f5f82845f3750505f908120928152602083905260409020929050565b5f848152602081905260408120546001600160a01b03161561182557604051633480a50360e21b815260040160405180910390fd5b6f6551c19487814612e58fe068137757586001600160a01b0316638a54c52f8630604051611852906126b6565b6001600160a01b0390911681526020018190604051809103905ff590508015801561187f573d5f5f3e3d5ffd5b5060405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018890524660448201523060648201526084810188905260a4016020604051808303815f875af11580156118dd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119019190612d67565b90506040518060600160405280826001600160a01b0316815260200184611928575f61192a565b855b6001600160a01b03908116825260408051602081810183525f8083529481019190915289845283815292819020845181549084166001600160a01b0319918216178255938501516001820180549190941694169390931790915582015160028201906119969082612d82565b506119a591503090508661211b565b5f816001600160a01b031663d1f5789460e01b86856040516024016119cb929190612e3c565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051611a099190612ba5565b5f604051808303815f865af19150503d805f8114611a42576040519150601f19603f3d011682016040523d82523d5f602084013e611a47565b606091505b5050905080611a695760405163169c52c760e21b815260040160405180910390fd5b611a7430888861217c565b5095945050505050565b610aef8383836001612196565b5f5f516020614ca05f395f51905f5281611aa48561208e565b90506001600160a01b03841615611ac057611ac08185876122a9565b6001600160a01b03811615611afc57611adb5f865f5f612196565b6001600160a01b0381165f908152600383016020526040902080545f190190555b6001600160a01b03861615611b2c576001600160a01b0386165f9081526003830160205260409020805460010190555b5f85815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49150505b9392505050565b611b99813361230d565b50565b5f5f516020614ce05f395f51905f52611bb58484610e98565b611c34575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611bea3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506106e3565b5f9150506106e3565b5f5f516020614ce05f395f51905f52611c568484610e98565b15611c34575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506106e3565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611d3c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611d305f516020614cc05f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15611d5a5760405163703e46dd60e11b815260040160405180910390fd5b565b5f61090381611b8f565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611dc0575060408051601f3d908101601f19168201909252611dbd91810190612d50565b60015b611de857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610a17565b5f516020614cc05f395f51905f528114611e1857604051632a87526960e21b815260048101829052602401610a17565b610aef8383612346565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611d5a5760405163703e46dd60e11b815260040160405180910390fd5b5f516020614ca05f395f51905f526001600160a01b038316611eab57604051630b61174360e31b81526001600160a01b0384166004820152602401610a17565b6001600160a01b038481165f818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b1561203957604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611f5c908890889087908790600401612e5f565b6020604051808303815f875af1925050508015611f96575060408051601f3d908101601f19168201909252611f9391810190612e9b565b60015b611ffd573d808015611fc3576040519150601f19603f3d011682016040523d82523d5f602084013e611fc8565b606091505b5080515f03611ff557604051633250574960e11b81526001600160a01b0385166004820152602401610a17565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461111d57604051633250574960e11b81526001600160a01b0385166004820152602401610a17565b5050505050565b61204861239b565b61090382826123e4565b611d5a61239b565b5f6001600160e01b03198216637965db0b60e01b14806106e357506301ffc9a760e01b6001600160e01b03198316146106e3565b5f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c8080602001905181019061210d9190612eb6565b935093509350509193909250565b6001600160a01b03821661214457604051633250574960e11b81525f6004820152602401610a17565b5f61215083835f611a8b565b90506001600160a01b03811615610aef576040516339e3563760e11b81525f6004820152602401610a17565b610aef83838360405180602001604052805f815250612414565b5f516020614ca05f395f51905f5281806121b857506001600160a01b03831615155b15612279575f6121c785611617565b90506001600160a01b038416158015906121f35750836001600160a01b0316816001600160a01b031614155b801561220657506122048185611552565b155b1561222f5760405163a9fbf51f60e01b81526001600160a01b0385166004820152602401610a17565b82156122775784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5f93845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6122b483838361241f565b610aef576001600160a01b0383166122e257604051637e27328960e01b815260048101829052602401610a17565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610a17565b6123178282610e98565b6109035760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610a17565b61234f82612483565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561239357610aef82826124e6565b610903612558565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611d5a57604051631afcd79f60e31b815260040160405180910390fd5b6123ec61239b565b5f516020614ca05f395f51905f52806124058482612d82565b5060018101610a7a8382612d82565b610f22848484612577565b5f6001600160a01b038316158015906113aa5750826001600160a01b0316846001600160a01b0316148061245857506124588484611552565b806113aa5750826001600160a01b03166124718361164e565b6001600160a01b031614949350505050565b806001600160a01b03163b5f036124b857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610a17565b5f516020614cc05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516125029190612ba5565b5f60405180830381855af49150503d805f811461253a576040519150601f19603f3d011682016040523d82523d5f602084013e61253f565b606091505b509150915061254f858383612624565b95945050505050565b3415611d5a5760405163b398979f60e01b815260040160405180910390fd5b6001600160a01b0382166125a057604051633250574960e11b81525f6004820152602401610a17565b5f6125ac83835f611a8b565b90506001600160a01b0381166125d857604051637e27328960e01b815260048101839052602401610a17565b836001600160a01b0316816001600160a01b031614610a7a576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610a17565b6060826126395761263482612680565b611b88565b815115801561265057506001600160a01b0384163b155b1561267957604051639996b31560e01b81526001600160a01b0385166004820152602401610a17565b5080611b88565b8051156126905780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61189480612eef83390190565b61051d8061478383390190565b6001600160e01b031981168114611b99575f5ffd5b5f602082840312156126e8575f5ffd5b8135611b88816126c3565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f611b8860208301846126f3565b5f60208284031215612743575f5ffd5b5035919050565b6001600160a01b0381168114611b99575f5ffd5b5f5f83601f84011261276e575f5ffd5b5081356001600160401b03811115612784575f5ffd5b60208301915083602082850101111561279b575f5ffd5b9250929050565b5f5f5f5f5f5f608087890312156127b7575f5ffd5b86356127c28161274a565b955060208701356001600160401b038111156127dc575f5ffd5b6127e889828a0161275e565b90965094505060408701356001600160401b03811115612806575f5ffd5b61281289828a0161275e565b90945092505060608701356128268161274a565b809150509295509295509295565b5f5f60408385031215612845575f5ffd5b82356128508161274a565b946020939093013593505050565b6001600160a01b038481168252831660208201526060604082018190525f9061254f908301846126f3565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126128ac575f5ffd5b81356001600160401b038111156128c5576128c5612889565b604051601f8201601f19908116603f011681016001600160401b03811182821017156128f3576128f3612889565b60405281815283820160200185101561290a575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215612939575f5ffd5b84356129448161274a565b935060208501356129548161274a565b92506040850135915060608501356001600160401b03811115612975575f5ffd5b6129818782880161289d565b91505092959194509250565b5f5f5f6040848603121561299f575f5ffd5b8335925060208401356001600160401b038111156129bb575f5ffd5b6129c78682870161275e565b9497909650939450505050565b5f5f5f606084860312156129e6575f5ffd5b83356129f18161274a565b92506020840135612a018161274a565b929592945050506040919091013590565b5f5f60408385031215612a23575f5ffd5b823591506020830135612a358161274a565b809150509250929050565b5f5f60408385031215612a51575f5ffd5b8235612a5c8161274a565b915060208301356001600160401b03811115612a76575f5ffd5b612a828582860161289d565b9150509250929050565b5f60208284031215612a9c575f5ffd5b8135611b888161274a565b5f5f5f5f60408587031215612aba575f5ffd5b84356001600160401b03811115612acf575f5ffd5b612adb8782880161275e565b90955093505060208501356001600160401b03811115612af9575f5ffd5b612b058782880161275e565b95989497509550505050565b5f5f60408385031215612b22575f5ffd5b8235612b2d8161274a565b915060208301358015158114612a35575f5ffd5b5f5f60408385031215612b52575f5ffd5b8235612b5d8161274a565b91506020830135612a358161274a565b600181811c90821680612b8157607f821691505b602082108103612b9f57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f82518060208501845e5f920191825250919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6113aa602083018486612bbb565b634e487b7160e01b5f52603260045260245ffd5b601f821115610aef57805f5260205f20601f840160051c81016020851015612c2f5750805b601f840160051c820191505b81811015612039575f8155600101612c3b565b6001600160401b03831115612c6557612c65612889565b612c7983612c738354612b6d565b83612c0a565b5f601f841160018114612caa575f8515612c935750838201355b5f19600387901b1c1916600186901b178355612039565b5f83815260208120601f198716915b82811015612cd95786850135825560209485019460019092019101612cb9565b5086821015612cf5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f612d1a604083018688612bbb565b8281036020840152612d2d818587612bbb565b979650505050505050565b828152604060208201525f6113aa60408301846126f3565b5f60208284031215612d60575f5ffd5b5051919050565b5f60208284031215612d77575f5ffd5b8151611b888161274a565b81516001600160401b03811115612d9b57612d9b612889565b612daf81612da98454612b6d565b84612c0a565b6020601f821160018114612de1575f8315612dca5750848201515b5f19600385901b1c1916600184901b178455612039565b5f84815260208120601f198516915b82811015612e105787850151825560209485019460019092019101612df0565b5084821015612e2d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03831681526040602082018190525f906113aa908301846126f3565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90612e91908301846126f3565b9695505050505050565b5f60208284031215612eab575f5ffd5b8151611b88816126c3565b5f5f5f60608486031215612ec8575f5ffd5b83516020850151909350612edb8161274a565b604094909401519295939450919291505056fe6080604052348015600e575f5ffd5b506118788061001c5f395ff3fe608060405260043610610112575f3560e01c80638f41ec5a1161009d578063c19d93fb11610062578063c19d93fb1461031a578063ca3b98bb1461032e578063d087d28814610341578063f23a6e6114610355578063fc0c546a14610381575f5ffd5b80638f41ec5a146102785780639cdf379c1461028c578063b0d691fe1461029f578063b61d27f6146102cd578063bc197c81146102ec575f5ffd5b806319822f7c116100e357806319822f7c146101ce57806334fcd5be146101fb578063519454471461021a578063523e32601461023a5780636d70f7ae14610259575f5ffd5b806223de291461011d57806301ffc9a714610143578063150b7a02146101775780631626ba7e146101af575f5ffd5b3661011957005b5f5ffd5b348015610128575f5ffd5b506101416101373660046110f9565b5050505050505050565b005b34801561014e575f5ffd5b5061016261015d3660046111bb565b6103b8565b60405190151581526020015b60405180910390f35b348015610182575f5ffd5b506101966101913660046111d6565b6103e3565b6040516001600160e01b0319909116815260200161016e565b3480156101ba575f5ffd5b506101966101c9366004611257565b61043d565b3480156101d9575f5ffd5b506101ed6101e8366004611311565b610562565b60405190815260200161016e565b348015610206575f5ffd5b5061014161021536600461139f565b610594565b61022d6102283660046113f2565b610684565b60405161016e919061148b565b348015610245575f5ffd5b5061019661025436600461149d565b6106b0565b348015610264575f5ffd5b506101626102733660046114ed565b6106d5565b348015610283575f5ffd5b506101ed600181565b348015610297575f5ffd5b506101ed5f81565b3480156102aa575f5ffd5b50604051734337084d9e255ff0702461cf8895ce9e3b5ff108815260200161016e565b3480156102d8575f5ffd5b506101416102e7366004611508565b610773565b3480156102f7575f5ffd5b5061019661030636600461155f565b63bc197c8160e01b98975050505050505050565b348015610325575f5ffd5b506101ed6107d2565b61022d61033c3660046115ff565b6108b9565b34801561034c575f5ffd5b506101ed6108f2565b348015610360575f5ffd5b5061019661036f366004611674565b63f23a6e6160e01b9695505050505050565b34801561038c575f5ffd5b5061039561097b565b604080519384526001600160a01b0390921660208401529082015260600161016e565b5f6103c282610991565b806103dd57506001600160e01b03198216636faff5f160e01b145b92915050565b5f5f5f6103ee61097b565b909350915050336001600160a01b03831614801561040b57508086145b156104295760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61045d85602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610528578285830160200161047e826106d5565b15801561049457506001600160a01b0382163014155b156104af57506001600160e01b031994506103dd9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104dd908b9085906004016116ea565b602060405180830381865afa1580156104f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051c9190611702565b955050505050506103dd565b61053761027387838686610a32565b1561054f5750630b135d3f60e11b92506103dd915050565b506001600160e01b031995945050505050565b5f61056b610a5e565b6105758484610ac3565b90506105848460200135610bd0565b61058d82610c19565b9392505050565b61059c610c5e565b805f5b8181101561067e57368484838181106105ba576105ba61171d565b90506020028101906105cc9190611731565b90505f61062a6105df60208401846114ed565b60208401356105f1604086018661174f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610c66565b905080610674578360010361064657610641610c7c565b610674565b826106505f610c8d565b604051635a15467560e01b815260040161066b9291906116ea565b60405180910390fd5b505060010161059f565b50505050565b60605f61069587878787875a610cbe565b92509050806106a657815160208301fd5b5095945050505050565b5f6106ba846106d5565b6106c4575f6106cd565b630291f19360e51b5b949350505050565b5f5f5f6106e061097b565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561072d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107519190611791565b6001600160a01b03161480156106cd57505050506001600160a01b0316151590565b61077b610c5e565b5f6107bc858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610c66565b9050806107cb576107cb610c7c565b5050505050565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610857573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087b91906117ac565b825460405191925061089a918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f6108d6888888888888156108d05788610cbe565b5a610cbe565b92509050806108e757815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610952573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097691906117ac565b905090565b5f5f5f610986610d15565b925092509250909192565b5f6001600160e01b03198216633ce4a3e960e01b14806109c157506001600160e01b031982166301ffc9a760e01b145b806109dc57506001600160e01b031982166306608bdf60e21b145b806109f757506001600160e01b03198216630b135d3f60e11b145b80610a1257506001600160e01b03198216630271189760e51b145b806103dd57506001600160e01b03198216635194544760e01b1492915050565b5f5f5f5f610a4288888888610d21565b925092509250610a528282610de9565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff10814610ac15760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000604482015260640161066b565b565b5f8080610b1184610ad861010088018861174f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ea592505050565b5090925090505f816003811115610b2a57610b2a6117c3565b148015610b3b5750610b3b826106d5565b15610b4a575f925050506103dd565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c9020610b8a81610ad861010089018961174f565b5090935091505f826003811115610ba357610ba36117c3565b148015610bb45750610bb4836106d5565b15610bc4575f93505050506103dd565b50600195945050505050565b6001600160401b038110610c165760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b604482015260640161066b565b50565b8015610c16576040515f90339083908381818185875af1925050503d805f81146107cb576040519150601f19603f3d011682016040523d82523d5f602084013e6107cb565b610ac1610a5e565b5f5f5f845160208601878987f195945050505050565b610ac1610c885f610c8d565b610eee565b60603d8215610ca15782811115610ca15750815b604051602082018101604052818152815f602083013e9392505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f916060918184610cf1836117d7565b9190505550610d04898989898989610ef6565b92509250505b965096945050505050565b5f5f5f6109863061104d565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d5a57505f91506003905082610ddf565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dab573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610dd657505f925060019150829050610ddf565b92505f91508190505b9450945094915050565b5f826003811115610dfc57610dfc6117c3565b03610e05575050565b6001826003811115610e1957610e196117c3565b03610e375760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e4b57610e4b6117c3565b03610e6c5760405163fce698f760e01b81526004810182905260240161066b565b6003826003811115610e8057610e806117c3565b03610ea1576040516335e2f38360e21b81526004810182905260240161066b565b5050565b5f5f5f8351604103610edc576020840151604085015160608601515f1a610ece88828585610d21565b955095509550505050610ee7565b505081515f91506002905b9250925092565b805160208201fd5b5f6060610f02336106d5565b158015610f23575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15610f4157604051634780295360e11b815260040160405180910390fd5b8360ff165f03610fb257876001600160a01b031683888888604051610f679291906117fb565b5f60405180830381858888f193505050503d805f8114610fa2576040519150601f19603f3d011682016040523d82523d5f602084013e610fa7565b606091505b509092509050610d0a565b8360ff1660010361101157876001600160a01b0316838787604051610fd89291906117fb565b5f604051808303818686f4925050503d805f8114610fa2576040519150601f19603f3d011682016040523d82523d5f602084013e610fa7565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b604482015260640161066b565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611093919061180a565b935093509350509193909250565b6001600160a01b0381168114610c16575f5ffd5b5f5f83601f8401126110c5575f5ffd5b5081356001600160401b038111156110db575f5ffd5b6020830191508360208285010111156110f2575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611110575f5ffd5b883561111b816110a1565b9750602089013561112b816110a1565b9650604089013561113b816110a1565b95506060890135945060808901356001600160401b0381111561115c575f5ffd5b6111688b828c016110b5565b90955093505060a08901356001600160401b03811115611186575f5ffd5b6111928b828c016110b5565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610c16575f5ffd5b5f602082840312156111cb575f5ffd5b813561058d816111a6565b5f5f5f5f5f608086880312156111ea575f5ffd5b85356111f5816110a1565b94506020860135611205816110a1565b93506040860135925060608601356001600160401b03811115611226575f5ffd5b611232888289016110b5565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611268575f5ffd5b8235915060208301356001600160401b03811115611284575f5ffd5b8301601f81018513611294575f5ffd5b80356001600160401b038111156112ad576112ad611243565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112db576112db611243565b6040528181528282016020018710156112f2575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215611323575f5ffd5b83356001600160401b03811115611338575f5ffd5b8401610120818703121561134a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261136f575f5ffd5b5081356001600160401b03811115611385575f5ffd5b6020830191508360208260051b85010111156110f2575f5ffd5b5f5f602083850312156113b0575f5ffd5b82356001600160401b038111156113c5575f5ffd5b6113d18582860161135f565b90969095509350505050565b803560ff811681146113ed575f5ffd5b919050565b5f5f5f5f5f60808688031215611406575f5ffd5b8535611411816110a1565b94506020860135935060408601356001600160401b03811115611432575f5ffd5b61143e888289016110b5565b90945092506114519050606087016113dd565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61058d602083018461145d565b5f5f5f604084860312156114af575f5ffd5b83356114ba816110a1565b925060208401356001600160401b038111156114d4575f5ffd5b6114e0868287016110b5565b9497909650939450505050565b5f602082840312156114fd575f5ffd5b813561058d816110a1565b5f5f5f5f6060858703121561151b575f5ffd5b8435611526816110a1565b93506020850135925060408501356001600160401b03811115611547575f5ffd5b611553878288016110b5565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b031215611576575f5ffd5b8835611581816110a1565b97506020890135611591816110a1565b965060408901356001600160401b038111156115ab575f5ffd5b6115b78b828c0161135f565b90975095505060608901356001600160401b038111156115d5575f5ffd5b6115e18b828c0161135f565b90955093505060808901356001600160401b03811115611186575f5ffd5b5f5f5f5f5f5f60a08789031215611614575f5ffd5b863561161f816110a1565b95506020870135945060408701356001600160401b03811115611640575f5ffd5b61164c89828a016110b5565b909550935061165f9050606088016113dd565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a08789031215611689575f5ffd5b8635611694816110a1565b955060208701356116a4816110a1565b9450604087013593506060870135925060808701356001600160401b038111156116cc575f5ffd5b6116d889828a016110b5565b979a9699509497509295939492505050565b828152604060208201525f6106cd604083018461145d565b5f60208284031215611712575f5ffd5b815161058d816111a6565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611745575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611764575f5ffd5b8301803591506001600160401b0382111561177d575f5ffd5b6020019150368190038213156110f2575f5ffd5b5f602082840312156117a1575f5ffd5b815161058d816110a1565b5f602082840312156117bc575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b5f600182016117f457634e487b7160e01b5f52601160045260245ffd5b5060010190565b818382375f9101908152919050565b5f5f5f6060848603121561181c575f5ffd5b8351602085015190935061182f816110a1565b604094909401519295939450919291505056fea264697066735822122026b84c7e0030ace2dad6873636642127a17736dad1010cae2604a26e8c3d668864736f6c634300081c003360a0604052348015600e575f5ffd5b5060405161051d38038061051d833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516104a061007d5f395f607a01526104a05ff3fe608060405260043610610021575f3560e01c8063d1f578941461003257610028565b3661002857005b610030610045565b005b610030610040366004610383565b610057565b610055610050610132565b610169565b565b7f7d0893b5fe6077fb4cf083ec3487b8eece7e03b4ab6e888f7a8a1758010f8c007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146100df57805460ff16156100bf576100ba610045565b6100df565b60405163572190d160e01b81523360048201526024015b60405180910390fd5b805460ff16156101015760405162dc149f60e41b815260040160405180910390fd5b5f61010a610132565b6001600160a01b03160361012d57805460ff1916600117815561012d8383610187565b505050565b5f6101647f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e808015610183573d5ff35b3d5ffd5b610190826101e0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101d45761012d8282610256565b6101dc6102c8565b5050565b806001600160a01b03163b5f0361021557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100d6565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516102729190610454565b5f60405180830381855af49150503d805f81146102aa576040519150601f19603f3d011682016040523d82523d5f602084013e6102af565b606091505b50915091506102bf8583836102e7565b95945050505050565b34156100555760405163b398979f60e01b815260040160405180910390fd5b6060826102fc576102f782610346565b61033f565b815115801561031357506001600160a01b0384163b155b1561033c57604051639996b31560e01b81526001600160a01b03851660048201526024016100d6565b50805b9392505050565b8051156103565780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610394575f5ffd5b82356001600160a01b03811681146103aa575f5ffd5b9150602083013567ffffffffffffffff8111156103c5575f5ffd5b8301601f810185136103d5575f5ffd5b803567ffffffffffffffff8111156103ef576103ef61036f565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561041e5761041e61036f565b604052818152828201602001871015610435575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea26469706673582212205c8437c90a52b26afb62a6e21b8baa0d106dcc547054521f0074dea229fd630f64736f6c634300081c003380bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212209ab2d5e814edafb6f18f548396487d6042a41f7021b3d3f4c12c0e62f67ce81164736f6c634300081c0033","sourceMap":"973:14003:189:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14229:240;;;;;;;;;;-1:-1:-1;14229:240:189;;;;;:::i;:::-;;:::i;:::-;;;565:14:262;;558:22;540:41;;528:2;513:18;14229:240:189;;;;;;;;3545:146:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4791:154::-;;;;;;;;;;-1:-1:-1;4791:154:95;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1506:32:262;;;1488:51;;1476:2;1461:18;4791:154:95;1342:203:262;3567:1163:189;;;;;;;;;;-1:-1:-1;3567:1163:189;;;;;:::i;:::-;;:::i;4617:113:95:-;;;;;;;;;;-1:-1:-1;4617:113:95;;;;;:::i;:::-;;:::i;:::-;;430:46:190;;;;;;;;;;-1:-1:-1;430:46:190;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;639:153:52:-;;;;;;;;;;-1:-1:-1;639:153:52;;;;;:::i;:::-;-1:-1:-1;;;639:153:52;;;;;;;;;;-1:-1:-1;;;;;;5798:33:262;;;5780:52;;5768:2;5753:18;639:153:52;5636:202:262;9434:205:189;;;;;;;;;;-1:-1:-1;9434:205:189;;;;;:::i;:::-;;:::i;:::-;;;6517:25:262;;;6505:2;6490:18;9434:205:189;6371:177:262;5494:578:95;;;;;;;;;;-1:-1:-1;5494:578:95;;;;;:::i;:::-;;:::i;4759:191:83:-;;;;;;;;;;-1:-1:-1;4759:191:83;;;;;:::i;:::-;;:::i;9044:102:189:-;;;;;;;;;;-1:-1:-1;9044:102:189;;;;;:::i;:::-;9095:11;9125:10;;;;;;;;;;:14;-1:-1:-1;;;;;9125:14:189;;9044:102;5246:136:83;;;;;;;;;;-1:-1:-1;5246:136:83;;;;;:::i;:::-;;:::i;6348:245::-;;;;;;;;;;-1:-1:-1;6348:245:83;;;;;:::i;:::-;;:::i;6138:132:95:-;;;;;;;;;;-1:-1:-1;6138:132:95;;;;;:::i;:::-;;:::i;4161:214:93:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;3365:118:95:-;;;;;;;;;;-1:-1:-1;3365:118:95;;;;;:::i;:::-;;:::i;3043:265::-;;;;;;;;;;-1:-1:-1;3043:265:95;;;;;:::i;:::-;;:::i;7660:324:189:-;;;;;;;;;;-1:-1:-1;7660:324:189;;;;;:::i;:::-;;:::i;6126:573::-;;;;;;;;;;-1:-1:-1;6126:573:189;;;;;:::i;:::-;;:::i;8461:331::-;;;;;;;;;;-1:-1:-1;8461:331:189;;;;;:::i;:::-;;:::i;3732:207:83:-;;;;;;;;;;-1:-1:-1;3732:207:83;;;;;:::i;:::-;;:::i;3755:150:95:-;;;;;;;;;;;;;:::i;2317:49:83:-;;;;;;;;;;-1:-1:-1;2317:49:83;2362:4;2317:49;;5012:144:95;;;;;;;;;;-1:-1:-1;5012:144:95;;;;;:::i;:::-;;:::i;1819:58:93:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:93;;;;;6336:233:95;;;;;;;;;;-1:-1:-1;6336:233:95;;;;;:::i;:::-;;:::i;2339:546:189:-;;;;;;;;;;-1:-1:-1;2339:546:189;;;;;:::i;:::-;;:::i;14475:499::-;;;;;;;;;;-1:-1:-1;14475:499:189;;;;;:::i;:::-;;:::i;5662:138:83:-;;;;;;;;;;-1:-1:-1;5662:138:83;;;;;:::i;:::-;;:::i;5168:612:189:-;;;;;;;;;;-1:-1:-1;5168:612:189;;;;;:::i;:::-;;:::i;5222:210:95:-;;;;;;;;;;-1:-1:-1;5222:210:95;;;;;:::i;:::-;;:::i;311:112:190:-;;;;;;;;;;;;380:42;311:112;;10023:218:189;;;;;;;;;;-1:-1:-1;10023:218:189;;;;;:::i;:::-;;:::i;:::-;;;;10271:25:262;;;10327:2;10312:18;;10305:34;;;;10244:18;10023:218:189;10097:248:262;247:57:190;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;247:57:190;;;;;14229:240:189;14399:4;14426:36;14450:11;14426:23;:36::i;:::-;14419:43;14229:240;-1:-1:-1;;14229:240:189:o;3545:146:95:-;-1:-1:-1;;;;;;;;;;;3670:14:95;;3590:13;;2076:21;;;3670:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3545:146;:::o;4791:154::-;4858:7;4877:22;4891:7;4877:13;:22::i;:::-;;4917:21;4930:7;4917:12;:21::i;3567:1163:189:-;3726:11;3702:5;;1466:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1512:23:189;;-1:-1:-1;1526:5:189;;-1:-1:-1;1466:87:189;-1:-1:-1;1512:13:189;:23::i;:::-;3873:14:::1;3890:17;:15;:17::i;:::-;3873:34;;3964:13;3979:17;4000:20;4006:6;4014:5;;4000;:20::i;:::-;4031:12;4263:11:::0;;;::::1;::::0;;;;;;:16:::1;;::::0;3963:57;;-1:-1:-1;3963:57:189;;-1:-1:-1;4031:12:189;-1:-1:-1;;;;;4263:16:189::1;:30:::0;4259:122:::1;;-1:-1:-1::0;4326:3:189::1;:11:::0;;;::::1;::::0;;;;;;:16:::1;::::0;;::::1;::::0;-1:-1:-1;;;;;4326:16:189::1;::::0;-1:-1:-1;4259:122:189::1;4614:27;::::0;;::::1;::::0;::::1;11087:19:262::0;;;11122:12;4614:27:189::1;::::0;;-1:-1:-1;;4614:27:189;;::::1;::::0;;;;;;;4594:55:::1;::::0;::::1;:::i;:::-;;;;;;;;4607:5;4599:6;4594:55;4643:5;;4594:55;;;;;;;:::i;:::-;;;;;;;;4666:57;4672:2;4676:5;4683:14;4699:7;4708:14;;4666:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;4666:5:189::1;::::0;-1:-1:-1;;;4666:57:189:i:1;:::-;4660:63:::0;3567:1163;-1:-1:-1;;;;;;;;;;;;3567:1163:189:o;4617:113:95:-;4688:35;4697:2;4701:7;966:10:97;4688:8:95;:35::i;:::-;4617:113;;:::o;430:46:190:-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;430:46:190;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9434:205:189:-;9511:16;9559:2;9543:18;;9539:45;;9570:14;;-1:-1:-1;;;9570:14:189;;;;;;;;;;;9539:45;9608:24;9614:10;9626:5;;9608;:24::i;:::-;-1:-1:-1;9594:38:189;9434:205;-1:-1:-1;;;;9434:205:189:o;5494:578:95:-;-1:-1:-1;;;;;5588:16:95;;5584:87;;5627:33;;-1:-1:-1;;;5627:33:95;;5657:1;5627:33;;;1488:51:262;1461:18;;5627:33:95;;;;;;;;5584:87;5889:21;5913:34;5921:2;5925:7;966:10:97;5913:7:95;:34::i;:::-;5889:58;;5978:4;-1:-1:-1;;;;;5961:21:95;:13;-1:-1:-1;;;;;5961:21:95;;5957:109;;6005:50;;-1:-1:-1;;;6005:50:95;;-1:-1:-1;;;;;12191:32:262;;;6005:50:95;;;12173:51:262;12240:18;;;12233:34;;;12303:32;;12283:18;;;12276:60;12146:18;;6005:50:95;11971:371:262;5957:109:95;5574:498;5494:578;;;:::o;4759:191:83:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:83;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;6348:245::-:0;-1:-1:-1;;;;;6441:34:83;;966:10:97;6441:34:83;6437:102;;6498:30;;-1:-1:-1;;;6498:30:83;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;6138:132:95:-;6224:39;6241:4;6247:2;6251:7;6224:39;;;;;;;;;;;;:16;:39::i;4161:214:93:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:93;:::o;3365:118:95:-;3428:7;3454:22;3468:7;3454:13;:22::i;3043:265::-;3106:7;-1:-1:-1;;;;;;;;;;;;;;;;3184:19:95;;3180:87;;3226:30;;-1:-1:-1;;;3226:30:95;;3253:1;3226:30;;;1488:51:262;1461:18;;3226:30:95;1342:203:262;3180:87:95;-1:-1:-1;;;;;3283:18:95;;;;;;;:11;;;;:18;;-1:-1:-1;3283:18:95;;;;;3043:265::o;7660:324:189:-;7782:14;7799:17;:15;:17::i;:::-;7858:1;7830:11;;;;;;;;;;:16;;;7782:34;;-1:-1:-1;;;;;;7830:16:189;:30;7826:84;;7883:16;;-1:-1:-1;;;7883:16:189;;;;;;;;;;;7826:84;7919:3;:11;;;;;;;;;;;:16;;:24;;-1:-1:-1;;;;;;7919:24:189;-1:-1:-1;;;;;7919:24:189;;;;;;;;7958:19;;7919:24;;:11;;7958:19;;7919:3;7958:19;7698:286;7660:324;:::o;6126:573::-;6216:7;6200:5;;1625:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1675:8:189;;:5;;-1:-1:-1;1625:150:189;;-1:-1:-1;1675:8:189;;;-1:-1:-1;1675:8:189;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1675:8:189;-1:-1:-1;;;1675:16:189;1671:53;;1700:24;;-1:-1:-1;;;1700:24:189;;;;;;;;;;;1671:53;1734:23;1748:5;1755:1;1734:13;:23::i;:::-;6314:14:::1;6331:17;:15;:17::i;:::-;6314:34;;6407:16;6425:17;6446:20;6452:6;6460:5;;6446;:20::i;:::-;6560:3;:13:::0;;;::::1;::::0;;;;;;6406:60;;-1:-1:-1;6406:60:189;-1:-1:-1;6560:18:189::1;;:26;6581:5:::0;;6560:18;:26:::1;:::i;:::-;-1:-1:-1::0;6624:27:189::1;::::0;;::::1;::::0;::::1;11087:19:262::0;;;11122:12;6624:27:189::1;::::0;;-1:-1:-1;;6624:27:189;;::::1;::::0;;;;;;;6601:65:::1;::::0;::::1;:::i;:::-;;;;;;;;6614:8;6606:6;6601:65;6653:5;;6660;;6601:65;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;6684:8:189;6126:573;-1:-1:-1;;;;;;;6126:573:189:o;8461:331::-;8515:7;8578:13;;;;;;;;;;;8557:34;;8533:12;8557:34;;;;;;;-1:-1:-1;;;;;8557:34:189;;;;;;;;;;;;;;;;;;;;;;8515:7;;8533:12;8515:7;;8578:13;8557:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8557:34:189;;;;-1:-1:-1;;8605:9:189;;8557:34;;-1:-1:-1;;;;;;;8605:23:189;8601:185;;8676:10;;;8660:1;;-1:-1:-1;8660:1:189;;-1:-1:-1;8676:10:189;-1:-1:-1;8644:43:189;;8601:185;8726:9;;8737:26;8753:8;8737:7;:26::i;:::-;8765:9;;;;;;;;;;;;8718:57;;;;;;;8461:331;;;;;;:::o;3732:207:83:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:83;;;;;;;;-1:-1:-1;;;;;3901:31:83;;;;;;;;;;;;;;;3732:207::o;3755:150:95:-;3889:9;3882:16;;3802:13;;-1:-1:-1;;;;;;;;;;;2076:21:95;3882:16;;;:::i;5012:144::-;5097:52;966:10:97;5130:8:95;5140;5097:18;:52::i;6336:233::-;6449:31;6462:4;6468:2;6472:7;6449:12;:31::i;:::-;6490:72;966:10:97;6538:4:95;6544:2;6548:7;6557:4;6490:33;:72::i;2339:546:189:-;8870:21:92;4302:15;;-1:-1:-1;;;4302:15:92;;;;4301:16;;-1:-1:-1;;;;;4348:14:92;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:92;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:92;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:92;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:92;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:92;-1:-1:-1;;;5013:22:92;;;4979:67;2404:37:189::1;;;;;;;;;;;;;;-1:-1:-1::0;;;2404:37:189::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;2404:37:189::1;;::::0;:13:::1;:37::i;:::-;2451:22;:20;:22::i;:::-;2483:24;:22;:24::i;:::-;2517:15;:13;:15::i;:::-;2542:16;:14;:16::i;:::-;2648:31;2690:18;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;2648:61;;2720:15;2738:64;2744:6;2760:1;2752:10;;2764:23;2789:5;2738:64;;;;;;;;;;;::::0;:5:::1;:64::i;:::-;2720:82:::0;-1:-1:-1;2812:38:189::1;2362:4:83;2843:6:189::0;2812:10:::1;:38::i;:::-;-1:-1:-1::0;2865:13:189::1;::::0;-1:-1:-1;;;;;2865:13:189;::::1;::::0;::::1;::::0;;;::::1;2394:491;;5070:14:92::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:92;;;5142:14;;-1:-1:-1;15085:50:262;;5142:14:92;;15073:2:262;15058:18;5142:14:92;;;;;;;5066:101;4092:1081;;;;;2339:546:189;:::o;14475:499::-;14540:13;14565:22;14579:7;14565:13;:22::i;:::-;-1:-1:-1;14645:17:189;;;;;;;;;;;-1:-1:-1;;;14645:17:189;;;;14617:46;;-1:-1:-1;;;14617:46:189;;14598:16;;14617:4;;:9;;:46;;14635:7;;14645:17;14617:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14674:16;14693:13;;;;;;;;;;:18;;14674:37;;14598:65;;-1:-1:-1;14674:16:189;;:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14725:7;14736:1;14725:12;;:31;;;;-1:-1:-1;14741:10:189;;:15;14725:31;14721:197;;;14851:17;;;;;;;;;;;-1:-1:-1;;;14851:17:189;;;;14829:40;;-1:-1:-1;;;14829:40:189;;:4;;:9;;:40;;14847:1;;14829:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14889:3;:13;;;;;;;;;;:18;;14883:24;;14818:51;;-1:-1:-1;14889:18:189;14883:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14721:197;14947:1;14934:3;:10;:14;:33;;;;;;;;;;;;;;;;;14958:3;14934:33;14927:40;14475:499;-1:-1:-1;;;;14475:499:189:o;5662:138:83:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;5168:612:189:-:0;5258:7;5242:5;;1847:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:8:189;;:5;;-1:-1:-1;1847:149:189;;-1:-1:-1;1897:8:189;;;-1:-1:-1;1897:8:189;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;1897:8:189;-1:-1:-1;;;1897:16:189;1893:52;;1922:23;;-1:-1:-1;;;1922:23:189;;;;;;;;;;;1893:52;1955:23;1969:5;1976:1;1955:13;:23::i;:::-;5356:14:::1;5373:17;:15;:17::i;:::-;5356:34;;5449:16;5467:17;5488:20;5494:6;5502:5;;5488;:20::i;:::-;5448:60;;;;5522:3;:13;5526:8;5522:13;;;;;;;;;;;:18;;:25;;;;;:::i;:::-;:30:::0;;-1:-1:-1;5518:62:189::1;;5561:19;;-1:-1:-1::0;;;5561:19:189::1;;;;;;;;;;;5518:62;5610:1;5594:17:::0;;;5590:41:::1;;5620:11;;-1:-1:-1::0;;;5620:11:189::1;;;;;;;;;;;5590:41;5641:3;:13:::0;;;::::1;::::0;;;;;;:18:::1;;:26;5662:5:::0;;5641:18;:26:::1;:::i;:::-;-1:-1:-1::0;5705:27:189::1;::::0;;::::1;::::0;::::1;11087:19:262::0;;;11122:12;5705:27:189::1;::::0;;-1:-1:-1;;5705:27:189;;::::1;::::0;;;;;;;5682:65:::1;::::0;::::1;:::i;:::-;;;;;;;;5695:8;5687:6;5682:65;5734:5;;5741;;5682:65;;;;;;;;;:::i;5222:210:95:-:0;-1:-1:-1;;;;;5388:27:95;;;5310:4;5388:27;;;:20;:27;;;;;;;;:37;;;;;;;;;;;;;;;5222:210::o;10023:218:189:-;10101:16;;10168:2;10152:18;;10148:45;;10179:14;;-1:-1:-1;;;10179:14:189;;;;;;;;;;;10148:45;10210:24;10216:10;10228:5;;10210;:24::i;:::-;10203:31;;;;10023:218;;;;;;:::o;2673:311:95:-;2786:4;-1:-1:-1;;;;;;2821:40:95;;-1:-1:-1;;;2821:40:95;;:104;;-1:-1:-1;;;;;;;2877:48:95;;-1:-1:-1;;;2877:48:95;2821:104;:156;;;;2941:36;2965:11;2941:23;:36::i;17910:241::-;17973:7;17992:13;18008:17;18017:7;18008:8;:17::i;:::-;17992:33;-1:-1:-1;;;;;;18039:19:95;;18035:88;;18081:31;;-1:-1:-1;;;18081:31:95;;;;;6517:25:262;;;6490:18;;18081:31:95;6371:177:262;7372:184:95;7442:7;7523:26;;;:17;:26;;;;;;-1:-1:-1;;;;;7523:26:95;;7372:184::o;12746:634:189:-;12843:12;;12869:13;;;12865:170;;12891:15;;-1:-1:-1;;;12891:15:189;;;;;;;;;;;12865:170;13010:2;13003:3;:9;12999:36;;13021:14;;-1:-1:-1;;;13021:14:189;;;;;;;;;;;12999:36;13063:6;13046:328;13075:3;13071:1;:7;13046:328;;;13099:11;13113:5;13119:1;13113:8;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;13113:8:189;;-1:-1:-1;;;;13238:12:189;;;;;:28;;-1:-1:-1;;;;;;;;;;13254:12:189;;;;13238:28;13237:64;;;-1:-1:-1;;;;;;;;;;13272:12:189;;;;;;:28;;-1:-1:-1;;;;;;;;;;13288:12:189;;;;13272:28;13237:80;;;-1:-1:-1;;;;;;;;;;13305:12:189;;;13237:80;13135:228;;13340:23;;-1:-1:-1;;;13340:23:189;;;;;;;;;;;13135:228;-1:-1:-1;13080:3:189;;13046:328;;12076:271;12126:13;12155;12172:35;12196:10;12172:23;:35::i;:::-;12217:16;12264:13;;;;;;;;;;:17;12151:56;;-1:-1:-1;12151:56:189;;-1:-1:-1;;;;;;12264:17:189;12285:10;12264:31;;-1:-1:-1;12260:55:189;;12304:11;;-1:-1:-1;;;12304:11:189;;;;;;;;;;;13793:430;13897:16;13915:17;14020:12;14006;14000:4;13987:46;-1:-1:-1;;14069:4:189;14059:29;;;14101:24;;;14145:4;14138:23;;;14202:4;14186:21;;;13793:430;-1:-1:-1;13793:430:189:o;10247:1508::-;10393:11;10424:13;;;;;;;;;;:17;-1:-1:-1;;;;;10424:17:189;:31;10420:63;;10464:19;;-1:-1:-1;;;10464:19:189;;;;;;;;;;;10420:63;380:42:190;-1:-1:-1;;;;;10500:30:189;;10580:8;10598:4;10552:52;;;;;:::i;:::-;-1:-1:-1;;;;;1506:32:262;;;1488:51;;1476:2;1461:18;10552:52:189;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10500:541:189;;;;;;-1:-1:-1;;;;;;10500:541:189;;;-1:-1:-1;;;;;15906:32:262;;;10500:541:189;;;15888:51:262;15955:18;;;15948:34;;;10874:13:189;15998:18:262;;;15991:34;10909:4:189;16041:18:262;;;16034:60;16110:19;;;16103:35;;;15860:19;;10500:541:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10494:547;;11252:60;;;;;;;;11258:3;-1:-1:-1;;;;;11252:60:189;;;;;11263:7;:37;;11298:1;11263:37;;;11273:14;11263:37;-1:-1:-1;;;;;11252:60:189;;;;;11302:9;;;11252:60;11302:9;;;;;-1:-1:-1;11302:9:189;;;11252:60;;;;;;;11236:13;;;;;;;;;;:76;;;;;;;-1:-1:-1;;;;;;11236:76:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;11363:39:189;;-1:-1:-1;11377:4:189;;-1:-1:-1;11392:8:189;11363:5;:39::i;:::-;11476:12;11505:3;-1:-1:-1;;;;;11505:8:189;11537:37;;;11576:14;11592;11514:93;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;11514:93:189;;;;;;;;;;;;;;-1:-1:-1;;;;;11514:93:189;-1:-1:-1;;;;;;11514:93:189;;;;;;;;;;11505:103;;;;11514:93;11505:103;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11475:133;;;11623:7;11618:69;;11653:23;;-1:-1:-1;;;11653:23:189;;;;;;;;;;;11618:69;11697:51;11719:4;11726:2;11738:8;11697:13;:51::i;:::-;10410:1345;10247:1508;;;;;;;:::o;16076:120:95:-;16156:33;16165:2;16169:7;16178:4;16184;16156:8;:33::i;10384:856::-;10470:7;-1:-1:-1;;;;;;;;;;;10470:7:95;10559:17;10568:7;10559:8;:17::i;:::-;10544:32;-1:-1:-1;;;;;;10636:18:95;;;10632:86;;10670:37;10687:4;10693;10699:7;10670:16;:37::i;:::-;-1:-1:-1;;;;;10762:18:95;;;10758:258;;10878:48;10895:1;10899:7;10916:1;10920:5;10878:8;:48::i;:::-;-1:-1:-1;;;;;10969:17:95;;;;;;:11;;;:17;;;;;:22;;-1:-1:-1;;10969:22:95;;;10758:258;-1:-1:-1;;;;;11030:16:95;;;11026:109;;-1:-1:-1;;;;;11090:15:95;;;;;;:11;;;:15;;;;;:20;;11109:1;11090:20;;;11026:109;11145:18;;;;:9;;;:18;;;;;;:23;;-1:-1:-1;;;;;;11145:23:95;-1:-1:-1;;;;;11145:23:95;;;;;;;;;11184:27;;11145:18;;11184:27;;;;;;;11229:4;-1:-1:-1;;10384:856:95;;;;;;:::o;4148:103:83:-;4214:30;4225:4;966:10:97;4214::83;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:83;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:83;;;;;;;;;:38;;-1:-1:-1;;7475:38:83;7509:4;7475:38;;;7559:12;966:10:97;;887:96;7559:12:83;-1:-1:-1;;;;;7532:40:83;7550:7;-1:-1:-1;;;;;7532:40:83;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:83;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:83;;;;;;;;;;:39;;-1:-1:-1;;8097:39:83;;;8155:40;966:10:97;;8097:14:83;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4603:312:93;4683:4;-1:-1:-1;;;;;4692:6:93;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:93;:32;-1:-1:-1;;;;;;;;;;;1519:53:26;-1:-1:-1;;;;;1519:53:26;;1441:138;4753:32:93;-1:-1:-1;;;;;4753:42:93;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:93;;;;;;;;;;;4658:251;4603:312::o;12426:90:189:-;2362:4:83;3191:16;2362:4;3191:10;:16::i;6057:538:93:-;6174:17;-1:-1:-1;;;;;6156:50:93;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:93;;;;;;;;-1:-1:-1;;6156:52:93;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:93;;-1:-1:-1;;;;;1506:32:262;;6518:60:93;;;1488:51:262;1461:18;;6518:60:93;1342:203:262;6152:437:93;-1:-1:-1;;;;;;;;;;;6250:40:93;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:93;;;;;6517:25:262;;;6490:18;;6317:34:93;6371:177:262;6246:120:93;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:93;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:93;;;;;;;;;;;17306:369:95;-1:-1:-1;;;;;;;;;;;;;;;;17468:22:95;;17464:91;;17513:31;;-1:-1:-1;;;17513:31:95;;-1:-1:-1;;;;;1506:32:262;;17513:31:95;;;1488:51:262;1461:18;;17513:31:95;1342:203:262;17464:91:95;-1:-1:-1;;;;;17564:27:95;;;;;;;:20;;;:27;;;;;;;;:37;;;;;;;;;;;;;:48;;-1:-1:-1;;17564:48:95;;;;;;;;;;17627:41;;540::262;;;17627::95;;513:18:262;17627:41:95;;;;;;;17399:276;17306:369;;;:::o;985:924:53:-;-1:-1:-1;;;;;1165:14:53;;;:18;1161:742;;1203:67;;-1:-1:-1;;;1203:67:53;;-1:-1:-1;;;;;1203:36:53;;;;;:67;;1240:8;;1250:4;;1256:7;;1265:4;;1203:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1203:67:53;;;;;;;;-1:-1:-1;;1203:67:53;;;;;;;;;;;;:::i;:::-;;;1199:694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1560:6;:13;1577:1;1560:18;1556:323;;1664:39;;-1:-1:-1;;;1664:39:53;;-1:-1:-1;;;;;1506:32:262;;1664:39:53;;;1488:51:262;1461:18;;1664:39:53;1342:203:262;1556:323:53;1831:6;1825:13;1816:6;1812:2;1808:15;1801:38;1199:694;-1:-1:-1;;;;;;1317:51:53;;-1:-1:-1;;;1317:51:53;1313:182;;1437:39;;-1:-1:-1;;;1437:39:53;;-1:-1:-1;;;;;1506:32:262;;1437:39:53;;;1488:51:262;1461:18;;1437:39:53;1342:203:262;1199:694:53;985:924;;;;;:::o;2232:149:95:-;6931:20:92;:18;:20::i;:::-;2335:39:95::1;2359:5;2366:7;2335:23;:39::i;3231:65:83:-:0;6931:20:92;:18;:20::i;3443:202:83:-;3528:4;-1:-1:-1;;;;;;3551:47:83;;-1:-1:-1;;;3551:47:83;;:87;;-1:-1:-1;;;;;;;;;;1134:40:101;;;3602:36:83;1035:146:101;7084:172:95;7150:7;7231:18;;;:9;:18;;;;;;-1:-1:-1;;;;;7231:18:95;;7084:172::o;1824:361:105:-;1943:15;;;1953:4;1943:15;;;;;;;;;1879:7;;;;;;;;1943:15;;;;;;;;;;;-1:-1:-1;1943:15:105;1916:42;;2094:4;2088;2081;2068:11;2064:22;2055:7;2043:56;2137:11;2126:52;;;;;;;;;;;;:::i;:::-;2119:59;;;;;;;1824:361;;;;;:::o;11562:327:95:-;-1:-1:-1;;;;;11629:16:95;;11625:87;;11668:33;;-1:-1:-1;;;11668:33:95;;11698:1;11668:33;;;1488:51:262;1461:18;;11668:33:95;1342:203:262;11625:87:95;11721:21;11745:32;11753:2;11757:7;11774:1;11745:7;:32::i;:::-;11721:56;-1:-1:-1;;;;;;11791:27:95;;;11787:96;;11841:31;;-1:-1:-1;;;11841:31:95;;11869:1;11841:31;;;1488:51:262;1461:18;;11841:31:95;1342:203:262;15039:128:95;15124:36;15138:4;15144:2;15148:7;15124:36;;;;;;;;;;;;:13;:36::i;16378:719::-;-1:-1:-1;;;;;;;;;;;16593:9:95;;:31;;-1:-1:-1;;;;;;16606:18:95;;;;16593:31;16589:460;;;16640:13;16656:22;16670:7;16656:13;:22::i;:::-;16640:38;-1:-1:-1;;;;;;16806:18:95;;;;;;:35;;;16837:4;-1:-1:-1;;;;;16828:13:95;:5;-1:-1:-1;;;;;16828:13:95;;;16806:35;:69;;;;;16846:29;16863:5;16870:4;16846:16;:29::i;:::-;16845:30;16806:69;16802:142;;;16902:27;;-1:-1:-1;;;16902:27:95;;-1:-1:-1;;;;;1506:32:262;;16902:27:95;;;1488:51:262;1461:18;;16902:27:95;1342:203:262;16802:142:95;16962:9;16958:81;;;17016:7;17012:2;-1:-1:-1;;;;;16996:28:95;17005:5;-1:-1:-1;;;;;16996:28:95;;;;;;;;;;;16958:81;16626:423;16589:460;17059:26;;;;:17;;:26;;-1:-1:-1;;17059:26:95;;;:31;;-1:-1:-1;;;;;;17059:31:95;-1:-1:-1;;;;;17059:31:95;;;;;;;;;;16378:719::o;8571:368::-;8683:38;8697:5;8704:7;8713;8683:13;:38::i;:::-;8678:255;;-1:-1:-1;;;;;8741:19:95;;8737:186;;8787:31;;-1:-1:-1;;;8787:31:95;;;;;6517:25:262;;;6490:18;;8787:31:95;6371:177:262;8737:186:95;8864:44;;-1:-1:-1;;;8864:44:95;;-1:-1:-1;;;;;19451:32:262;;8864:44:95;;;19433:51:262;19500:18;;;19493:34;;;19406:18;;8864:44:95;19259:274:262;4381:197:83;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:83;;-1:-1:-1;;;;;19451:32:262;;4514:47:83;;;19433:51:262;19500:18;;;19493:34;;;19406:18;;4514:47:83;19259:274:262;2264:344:26;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:26;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:92:-;8870:21;8560:40;-1:-1:-1;;;8560:40:92;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:92;;;;;;;;;;;2387:219:95;6931:20:92;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2076:21:95;2555:15:::1;2565:5:::0;2076:21;2555:15:::1;:::i;:::-;-1:-1:-1::0;2580:9:95::1;::::0;::::1;:19;2592:7:::0;2580:9;:19:::1;:::i;15404:229::-:0;15516:28;15526:4;15532:2;15536:7;15516:9;:28::i;7867:272::-;7970:4;-1:-1:-1;;;;;8005:21:95;;;;;;:127;;;8052:7;-1:-1:-1;;;;;8043:16:95;:5;-1:-1:-1;;;;;8043:16:95;;:52;;;;8063:32;8080:5;8087:7;8063:16;:32::i;:::-;8043:88;;;;8124:7;-1:-1:-1;;;;;8099:32:95;:21;8112:7;8099:12;:21::i;:::-;-1:-1:-1;;;;;8099:32:95;;7986:146;7867:272;-1:-1:-1;;;;7867:272:95:o;1671:281:26:-;1748:17;-1:-1:-1;;;;;1748:29:26;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:26;;-1:-1:-1;;;;;1506:32:262;;1805:47:26;;;1488:51:262;1461:18;;1805:47:26;1342:203:262;1744:119:26;-1:-1:-1;;;;;;;;;;;1872:73:26;;-1:-1:-1;;;;;;1872:73:26;-1:-1:-1;;;;;1872:73:26;;;;;;;;;;1671:281::o;3900:253:54:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:54;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:54:o;6113:122:26:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:26;;;;;;;;;;;13645:460:95;-1:-1:-1;;;;;13730:16:95;;13726:87;;13769:33;;-1:-1:-1;;;13769:33:95;;13799:1;13769:33;;;1488:51:262;1461:18;;13769:33:95;1342:203:262;13726:87:95;13822:21;13846:32;13854:2;13858:7;13875:1;13846:7;:32::i;:::-;13822:56;-1:-1:-1;;;;;;13892:27:95;;13888:211;;13942:31;;-1:-1:-1;;;13942:31:95;;;;;6517:25:262;;;6490:18;;13942:31:95;6371:177:262;13888:211:95;14011:4;-1:-1:-1;;;;;13994:21:95;:13;-1:-1:-1;;;;;13994:21:95;;13990:109;;14038:50;;-1:-1:-1;;;14038:50:95;;-1:-1:-1;;;;;12191:32:262;;;14038:50:95;;;12173:51:262;12240:18;;;12233:34;;;12303:32;;12283:18;;;12276:60;12146:18;;14038:50:95;11971:371:262;4421:582:54;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:54;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:54;;-1:-1:-1;;;;;1506:32:262;;4917:24:54;;;1488:51:262;1461:18;;4917:24:54;1342:203:262;4837:119:54;-1:-1:-1;4976:10:54;4969:17;;5543:487;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:54;;;;;;;;;;;-1:-1:-1;;;;;;;;:::o;:::-;;;;;;;;:::o;14:131:262:-;-1:-1:-1;;;;;;88:32:262;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:289::-;634:3;672:5;666:12;699:6;694:3;687:19;755:6;748:4;741:5;737:16;730:4;725:3;721:14;715:47;807:1;800:4;791:6;786:3;782:16;778:27;771:38;870:4;863:2;859:7;854:2;846:6;842:15;838:29;833:3;829:39;825:50;818:57;;;592:289;;;;:::o;886:220::-;1035:2;1024:9;1017:21;998:4;1055:45;1096:2;1085:9;1081:18;1073:6;1055:45;:::i;1111:226::-;1170:6;1223:2;1211:9;1202:7;1198:23;1194:32;1191:52;;;1239:1;1236;1229:12;1191:52;-1:-1:-1;1284:23:262;;1111:226;-1:-1:-1;1111:226:262:o;1550:131::-;-1:-1:-1;;;;;1625:31:262;;1615:42;;1605:70;;1671:1;1668;1661:12;1686:347;1737:8;1747:6;1801:3;1794:4;1786:6;1782:17;1778:27;1768:55;;1819:1;1816;1809:12;1768:55;-1:-1:-1;1842:20:262;;-1:-1:-1;;;;;1874:30:262;;1871:50;;;1917:1;1914;1907:12;1871:50;1954:4;1946:6;1942:17;1930:29;;2006:3;1999:4;1990:6;1982;1978:19;1974:30;1971:39;1968:59;;;2023:1;2020;2013:12;1968:59;1686:347;;;;;:::o;2038:989::-;2146:6;2154;2162;2170;2178;2186;2239:3;2227:9;2218:7;2214:23;2210:33;2207:53;;;2256:1;2253;2246:12;2207:53;2295:9;2282:23;2314:31;2339:5;2314:31;:::i;:::-;2364:5;-1:-1:-1;2420:2:262;2405:18;;2392:32;-1:-1:-1;;;;;2436:30:262;;2433:50;;;2479:1;2476;2469:12;2433:50;2518:58;2568:7;2559:6;2548:9;2544:22;2518:58;:::i;:::-;2595:8;;-1:-1:-1;2492:84:262;-1:-1:-1;;2683:2:262;2668:18;;2655:32;-1:-1:-1;;;;;2699:32:262;;2696:52;;;2744:1;2741;2734:12;2696:52;2783:60;2835:7;2824:8;2813:9;2809:24;2783:60;:::i;:::-;2862:8;;-1:-1:-1;2757:86:262;-1:-1:-1;;2949:2:262;2934:18;;2921:32;2962:33;2921:32;2962:33;:::i;:::-;3014:7;3004:17;;;2038:989;;;;;;;;:::o;3032:367::-;3100:6;3108;3161:2;3149:9;3140:7;3136:23;3132:32;3129:52;;;3177:1;3174;3167:12;3129:52;3216:9;3203:23;3235:31;3260:5;3235:31;:::i;:::-;3285:5;3363:2;3348:18;;;;3335:32;;-1:-1:-1;;;3032:367:262:o;3635:412::-;-1:-1:-1;;;;;3838:32:262;;;3820:51;;3907:32;;3902:2;3887:18;;3880:60;3976:2;3971;3956:18;;3949:30;;;-1:-1:-1;;3996:45:262;;4022:18;;4014:6;3996:45;:::i;4052:127::-;4113:10;4108:3;4104:20;4101:1;4094:31;4144:4;4141:1;4134:15;4168:4;4165:1;4158:15;4184:725;4226:5;4279:3;4272:4;4264:6;4260:17;4256:27;4246:55;;4297:1;4294;4287:12;4246:55;4337:6;4324:20;-1:-1:-1;;;;;4359:6:262;4356:30;4353:56;;;4389:18;;:::i;:::-;4438:2;4432:9;4530:2;4492:17;;-1:-1:-1;;4488:31:262;;;4521:2;4484:40;4480:54;4468:67;;-1:-1:-1;;;;;4550:34:262;;4586:22;;;4547:62;4544:88;;;4612:18;;:::i;:::-;4648:2;4641:22;4672;;;4713:19;;;4734:4;4709:30;4706:39;-1:-1:-1;4703:59:262;;;4758:1;4755;4748:12;4703:59;4822:6;4815:4;4807:6;4803:17;4796:4;4788:6;4784:17;4771:58;4877:1;4849:19;;;4870:4;4845:30;4838:41;;;;4853:6;4184:725;-1:-1:-1;;;4184:725:262:o;4914:717::-;5009:6;5017;5025;5033;5086:3;5074:9;5065:7;5061:23;5057:33;5054:53;;;5103:1;5100;5093:12;5054:53;5142:9;5129:23;5161:31;5186:5;5161:31;:::i;:::-;5211:5;-1:-1:-1;5268:2:262;5253:18;;5240:32;5281:33;5240:32;5281:33;:::i;:::-;5333:7;-1:-1:-1;5413:2:262;5398:18;;5385:32;;-1:-1:-1;5494:2:262;5479:18;;5466:32;-1:-1:-1;;;;;5510:30:262;;5507:50;;;5553:1;5550;5543:12;5507:50;5576:49;5617:7;5608:6;5597:9;5593:22;5576:49;:::i;:::-;5566:59;;;4914:717;;;;;;;:::o;5843:523::-;5922:6;5930;5938;5991:2;5979:9;5970:7;5966:23;5962:32;5959:52;;;6007:1;6004;5997:12;5959:52;6052:23;;;-1:-1:-1;6150:2:262;6135:18;;6122:32;-1:-1:-1;;;;;6166:30:262;;6163:50;;;6209:1;6206;6199:12;6163:50;6248:58;6298:7;6289:6;6278:9;6274:22;6248:58;:::i;:::-;5843:523;;6325:8;;-1:-1:-1;6222:84:262;;-1:-1:-1;;;;5843:523:262:o;6553:508::-;6630:6;6638;6646;6699:2;6687:9;6678:7;6674:23;6670:32;6667:52;;;6715:1;6712;6705:12;6667:52;6754:9;6741:23;6773:31;6798:5;6773:31;:::i;:::-;6823:5;-1:-1:-1;6880:2:262;6865:18;;6852:32;6893:33;6852:32;6893:33;:::i;:::-;6553:508;;6945:7;;-1:-1:-1;;;7025:2:262;7010:18;;;;6997:32;;6553:508::o;7066:367::-;7134:6;7142;7195:2;7183:9;7174:7;7170:23;7166:32;7163:52;;;7211:1;7208;7201:12;7163:52;7256:23;;;-1:-1:-1;7355:2:262;7340:18;;7327:32;7368:33;7327:32;7368:33;:::i;:::-;7420:7;7410:17;;;7066:367;;;;;:::o;7438:455::-;7515:6;7523;7576:2;7564:9;7555:7;7551:23;7547:32;7544:52;;;7592:1;7589;7582:12;7544:52;7631:9;7618:23;7650:31;7675:5;7650:31;:::i;:::-;7700:5;-1:-1:-1;7756:2:262;7741:18;;7728:32;-1:-1:-1;;;;;7772:30:262;;7769:50;;;7815:1;7812;7805:12;7769:50;7838:49;7879:7;7870:6;7859:9;7855:22;7838:49;:::i;:::-;7828:59;;;7438:455;;;;;:::o;7898:247::-;7957:6;8010:2;7998:9;7989:7;7985:23;7981:32;7978:52;;;8026:1;8023;8016:12;7978:52;8065:9;8052:23;8084:31;8109:5;8084:31;:::i;8332:712::-;8422:6;8430;8438;8446;8499:2;8487:9;8478:7;8474:23;8470:32;8467:52;;;8515:1;8512;8505:12;8467:52;8555:9;8542:23;-1:-1:-1;;;;;8580:6:262;8577:30;8574:50;;;8620:1;8617;8610:12;8574:50;8659:58;8709:7;8700:6;8689:9;8685:22;8659:58;:::i;:::-;8736:8;;-1:-1:-1;8633:84:262;-1:-1:-1;;8824:2:262;8809:18;;8796:32;-1:-1:-1;;;;;8840:32:262;;8837:52;;;8885:1;8882;8875:12;8837:52;8924:60;8976:7;8965:8;8954:9;8950:24;8924:60;:::i;:::-;8332:712;;;;-1:-1:-1;9003:8:262;-1:-1:-1;;;;8332:712:262:o;9049:416::-;9114:6;9122;9175:2;9163:9;9154:7;9150:23;9146:32;9143:52;;;9191:1;9188;9181:12;9143:52;9230:9;9217:23;9249:31;9274:5;9249:31;:::i;:::-;9299:5;-1:-1:-1;9356:2:262;9341:18;;9328:32;9398:15;;9391:23;9379:36;;9369:64;;9429:1;9426;9419:12;9470:388;9538:6;9546;9599:2;9587:9;9578:7;9574:23;9570:32;9567:52;;;9615:1;9612;9605:12;9567:52;9654:9;9641:23;9673:31;9698:5;9673:31;:::i;:::-;9723:5;-1:-1:-1;9780:2:262;9765:18;;9752:32;9793:33;9752:32;9793:33;:::i;10573:380::-;10652:1;10648:12;;;;10695;;;10716:61;;10770:4;10762:6;10758:17;10748:27;;10716:61;10823:2;10815:6;10812:14;10792:18;10789:38;10786:161;;10869:10;10864:3;10860:20;10857:1;10850:31;10904:4;10901:1;10894:15;10932:4;10929:1;10922:15;10786:161;;10573:380;;;:::o;11145:301::-;11274:3;11312:6;11306:13;11358:6;11351:4;11343:6;11339:17;11334:3;11328:37;11420:1;11384:16;;11409:13;;;-1:-1:-1;11384:16:262;11145:301;-1:-1:-1;11145:301:262:o;11451:266::-;11539:6;11534:3;11527:19;11591:6;11584:5;11577:4;11572:3;11568:14;11555:43;-1:-1:-1;11643:1:262;11618:16;;;11636:4;11614:27;;;11607:38;;;;11699:2;11678:15;;;-1:-1:-1;;11674:29:262;11665:39;;;11661:50;;11451:266::o;11722:244::-;11879:2;11868:9;11861:21;11842:4;11899:61;11956:2;11945:9;11941:18;11933:6;11925;11899:61;:::i;12347:127::-;12408:10;12403:3;12399:20;12396:1;12389:31;12439:4;12436:1;12429:15;12463:4;12460:1;12453:15;12604:517;12705:2;12700:3;12697:11;12694:421;;;12741:5;12738:1;12731:16;12785:4;12782:1;12772:18;12855:2;12843:10;12839:19;12836:1;12832:27;12826:4;12822:38;12891:4;12879:10;12876:20;12873:47;;;-1:-1:-1;12914:4:262;12873:47;12969:2;12964:3;12960:12;12957:1;12953:20;12947:4;12943:31;12933:41;;13024:81;13042:2;13035:5;13032:13;13024:81;;;13101:1;13087:16;;13068:1;13057:13;13024:81;;13297:1194;-1:-1:-1;;;;;13414:3:262;13411:27;13408:53;;;13441:18;;:::i;:::-;13470:93;13559:3;13519:38;13551:4;13545:11;13519:38;:::i;:::-;13513:4;13470:93;:::i;:::-;13589:1;13614:2;13609:3;13606:11;13631:1;13626:607;;;;14277:1;14294:3;14291:93;;;-1:-1:-1;14350:19:262;;;14337:33;14291:93;-1:-1:-1;;13254:1:262;13250:11;;;13246:24;13242:29;13232:40;13278:1;13274:11;;;13229:57;14397:78;;13599:886;;13626:607;12551:1;12544:14;;;12588:4;12575:18;;-1:-1:-1;;13662:17:262;;;13776:229;13790:7;13787:1;13784:14;13776:229;;;13879:19;;;13866:33;13851:49;;13986:4;13971:20;;;;13939:1;13927:14;;;;13806:12;13776:229;;;13780:3;14033;14024:7;14021:16;14018:159;;;14157:1;14153:6;14147:3;14141;14138:1;14134:11;14130:21;14126:34;14122:39;14109:9;14104:3;14100:19;14087:33;14083:79;14075:6;14068:95;14018:159;;;14220:1;14214:3;14211:1;14207:11;14203:19;14197:4;14190:33;13599:886;;13297:1194;;;:::o;14496:431::-;14709:2;14698:9;14691:21;14672:4;14735:61;14792:2;14781:9;14777:18;14769:6;14761;14735:61;:::i;:::-;14844:9;14836:6;14832:22;14827:2;14816:9;14812:18;14805:50;14872:49;14914:6;14906;14898;14872:49;:::i;:::-;14864:57;14496:431;-1:-1:-1;;;;;;;14496:431:262:o;15146:289::-;15321:6;15310:9;15303:25;15364:2;15359;15348:9;15344:18;15337:30;15284:4;15384:45;15425:2;15414:9;15410:18;15402:6;15384:45;:::i;15440:184::-;15510:6;15563:2;15551:9;15542:7;15538:23;15534:32;15531:52;;;15579:1;15576;15569:12;15531:52;-1:-1:-1;15602:16:262;;15440:184;-1:-1:-1;15440:184:262:o;16149:251::-;16219:6;16272:2;16260:9;16251:7;16247:23;16243:32;16240:52;;;16288:1;16285;16278:12;16240:52;16320:9;16314:16;16339:31;16364:5;16339:31;:::i;16405:1295::-;16529:3;16523:10;-1:-1:-1;;;;;16548:6:262;16545:30;16542:56;;;16578:18;;:::i;:::-;16607:96;16696:6;16656:38;16688:4;16682:11;16656:38;:::i;:::-;16650:4;16607:96;:::i;:::-;16752:4;16783:2;16772:14;;16800:1;16795:648;;;;17487:1;17504:6;17501:89;;;-1:-1:-1;17556:19:262;;;17550:26;17501:89;-1:-1:-1;;13254:1:262;13250:11;;;13246:24;13242:29;13232:40;13278:1;13274:11;;;13229:57;17603:81;;16765:929;;16795:648;12551:1;12544:14;;;12588:4;12575:18;;-1:-1:-1;;16831:20:262;;;16948:222;16962:7;16959:1;16956:14;16948:222;;;17044:19;;;17038:26;17023:42;;17151:4;17136:20;;;;17104:1;17092:14;;;;16978:12;16948:222;;;16952:3;17198:6;17189:7;17186:19;17183:201;;;17259:19;;;17253:26;-1:-1:-1;;17342:1:262;17338:14;;;17354:3;17334:24;17330:37;17326:42;17311:58;17296:74;;17183:201;-1:-1:-1;;;;17430:1:262;17414:14;;;17410:22;17397:36;;-1:-1:-1;16405:1295:262:o;17705:315::-;-1:-1:-1;;;;;17880:32:262;;17862:51;;17949:2;17944;17929:18;;17922:30;;;-1:-1:-1;;17969:45:262;;17995:18;;17987:6;17969:45;:::i;18025:485::-;-1:-1:-1;;;;;18256:32:262;;;18238:51;;18325:32;;18320:2;18305:18;;18298:60;18389:2;18374:18;;18367:34;;;18437:3;18432:2;18417:18;;18410:31;;;-1:-1:-1;;18458:46:262;;18484:19;;18476:6;18458:46;:::i;:::-;18450:54;18025:485;-1:-1:-1;;;;;;18025:485:262:o;18515:249::-;18584:6;18637:2;18625:9;18616:7;18612:23;18608:32;18605:52;;;18653:1;18650;18643:12;18605:52;18685:9;18679:16;18704:30;18728:5;18704:30;:::i;18769:485::-;18865:6;18873;18881;18934:2;18922:9;18913:7;18909:23;18905:32;18902:52;;;18950:1;18947;18940:12;18902:52;18995:16;;19080:2;19065:18;;19059:25;18995:16;;-1:-1:-1;19093:33:262;19059:25;19093:33;:::i;:::-;19218:2;19203:18;;;;19197:25;18769:485;;19145:7;;-1:-1:-1;19197:25:262;;18769:485;-1:-1:-1;;18769:485:262:o","linkReferences":{},"immutableReferences":{"25031":[{"start":7361,"length":32},{"start":7402,"length":32},{"start":7725,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","ERC6551_REGISTRY()":"edc16084","METADATA_NOTE_KEY()":"fcdb781e","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","fact(bytes,bytes)":"e852398b","gene(address)":"74e08829","get(bytes32)":"8eaa6ac0","getApproved(uint256)":"081812fc","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address)":"c4d66de8","isApprovedForAll(address,address)":"e985e9c5","leaf(bytes32,bytes)":"2124b692","leafl(bytes32,bytes)":"f8953645","map(bytes32)":"0ae186a8","mint(address,bytes,bytes,address)":"094cefed","name()":"06fdde03","note(bytes,bytes)":"7788b5a8","onERC721Received(address,address,uint256,bytes)":"150b7a02","ownerOf(uint256)":"6352211e","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tbaOf(bytes32)":"27244d1e","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","upgradeToAndCall(address,bytes)":"4f1ef286"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CannotCreate2Proxy\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyFact\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FactAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FactMustBeginWithBang\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedToInitializeTBA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GeneAlreadySet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidLabelCharacter\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LabelTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LabelTooShort\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NameAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotParent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoteMustBeginWithTilde\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parenthash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"namehash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"labelhash\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Fact\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"entry\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"gene\",\"type\":\"address\"}],\"name\":\"Gene\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parenthash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"namehash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"labelhash\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"parenthash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"namehash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"labelhash\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"Note\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zeroTba\",\"type\":\"address\"}],\"name\":\"Zero\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC6551_REGISTRY\",\"outputs\":[{\"internalType\":\"contract IERC6551Registry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"METADATA_NOTE_KEY\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_fact\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"fact\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_gene\",\"type\":\"address\"}],\"name\":\"gene\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"namehash\",\"type\":\"bytes32\"}],\"name\":\"get\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parenthash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"}],\"name\":\"leaf\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"namehash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"parenthash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"}],\"name\":\"leafl\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"namehash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"labelhash\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"map\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tba\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"gene\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"label\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"initialization\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tba\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_note\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"note\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"entry\",\"type\":\"bytes32\"}],\"name\":\"tbaOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"tba\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Fact(bytes32,bytes32,bytes,bytes,bytes)\":{\"params\":{\"data\":\"The data stored at the fact.\",\"label\":\"The label of the fact.\",\"labelhash\":\"The hash of only the label (the final entry in the path).\",\"namehash\":\"The hash of the newly created fact's full path.\",\"parenthash\":\"The hash of the parent namespace entry.\"}},\"Gene(bytes32,address)\":{\"params\":{\"entry\":\"The namespace entry's namehash.\",\"gene\":\"The address of the TBA implementation.\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Mint(bytes32,bytes32,bytes,bytes)\":{\"params\":{\"label\":\"The label (the final entry in the path) of the new entry.\",\"labelhash\":\"The hash of only the label (the final entry in the path).\",\"namehash\":\"The hash of the minted namespace entry's full path.\",\"parenthash\":\"The hash of the parent namespace entry.\"}},\"Note(bytes32,bytes32,bytes,bytes,bytes)\":{\"params\":{\"data\":\"The data stored at the note.\",\"label\":\"The label of the note.\",\"labelhash\":\"The hash of only the label (the final entry in the path).\",\"namehash\":\"The hash of the newly created note's full path.\",\"parenthash\":\"The hash of the parent namespace entry.\"}},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"},\"Zero(address)\":{\"params\":{\"zeroTba\":\"The address of the zeroth TBA\"}}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"fact(bytes,bytes)\":{\"details\":\"Must be called by a namespace entry's TBA, and the entry must not already have a fact with the same label.\",\"params\":{\"_data\":\"The data to be stored at the fact.\",\"_fact\":\"The fact label to create. Must be prepended with an exclamation mark (!).\"},\"returns\":{\"_0\":\"namehash The namehash of the newly created fact.\"}},\"gene(address)\":{\"details\":\"Must be called by the associated entry's token bound account.Upgradeable TBA implementations can have their implementation changed by the TBA owner (through an upgrade).Similarly, TBA implementations that have `delegatecall` can also have their implementations changed. This includes all contracts inheriting from src/account/mech/Mech.sol.\",\"params\":{\"_gene\":\"The address of the TBA implementation to set for all children of the calling namespace entry.\"}},\"get(bytes32)\":{\"params\":{\"namehash\":\"The namehash of the namespace entry to query.\"},\"returns\":{\"_0\":\"tba The address of the token-bound account associated with the entry. (zero if note or fact).\",\"_1\":\"owner The address of the entry owner. (zero if note or fact).\",\"_2\":\"data The note or fact bytes associated with the entry (empty if not a note or fact).\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address)\":{\"params\":{\"_admin\":\"The address of the owner of the root entry account. for the root entry token-bound account.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"leaf(bytes32,bytes)\":{\"params\":{\"label\":\"the label with which to produce the child namehash\",\"parenthash\":\"the namehash of the parent name entry.\"},\"returns\":{\"namehash\":\"the namehash of the newly formed entry\"}},\"leafl(bytes32,bytes)\":{\"params\":{\"label\":\"the label with which to produce the child namehash\",\"parenthash\":\"the namehash of the parent name entry.\"},\"returns\":{\"labelhash\":\"the labelhash (the final entry in the path) of the newly formed entry\",\"namehash\":\"the namehash of the newly formed entry\"}},\"mint(address,bytes,bytes,address)\":{\"params\":{\"implementation\":\"The address of the implementation contract for the token-bound account: this will be overriden by the gene if the parent entry has one set.\",\"initialization\":\"Initialization calldata applied to the new minted entry's token-bound account.\",\"label\":\"The label to mint beneath the calling parent entry.\",\"to\":\"The address to own the new namespace entry.\"},\"returns\":{\"tba\":\"The address of the new entry's token-bound account.\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"note(bytes,bytes)\":{\"details\":\"Must be called by a namespace entry's TBA.\",\"params\":{\"_data\":\"The data to be stored at the note.\",\"_note\":\"The note label to create. Must be prepended with a tilde (~).\"},\"returns\":{\"_0\":\"namehash The namehash of the newly created note.\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tbaOf(bytes32)\":{\"params\":{\"entry\":\"The entry namehash for which to get the token-bound account.\"},\"returns\":{\"tba\":\"The token-bound account address of the namespace entry.\"}},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"events\":{\"Fact(bytes32,bytes32,bytes,bytes,bytes)\":{\"notice\":\"Emitted when a fact is created on an existing namespace entry. Facts are immutable and may only be written once. A fact label is prepended with an exclamation mark (!) to indicate that it is a fact.\"},\"Gene(bytes32,address)\":{\"notice\":\"Emitted when a gene is set for an existing namespace entry. A gene is a specific TBA implementation which will be applied to all sub-entries of the namespace entry.\"},\"Mint(bytes32,bytes32,bytes,bytes)\":{\"notice\":\"Emitted when a new namespace entry is minted.\"},\"Note(bytes32,bytes32,bytes,bytes,bytes)\":{\"notice\":\"Emitted when a new note is created on an existing namespace entry. Notes are mutable. A note label is prepended with a tilde (~) to indicate that it is a note.\"},\"Zero(address)\":{\"notice\":\"Emitted when the zeroth namespace entry is minted. Occurs exactly once at initialization.\"}},\"kind\":\"user\",\"methods\":{\"fact(bytes,bytes)\":{\"notice\":\"Creates a new fact beneath the calling namespace entry.\"},\"gene(address)\":{\"notice\":\"Public function callable by a name entry's token bound account in order to create a gene entry. A gene entry defines the token bound account implementation that will be used for all entries in the tree beneath this name entry. For instance, if gene() is called for `.hypr`, then `sub.hypr` as well as `sub.sub.hypr` will have the same implementation, and so on.\"},\"get(bytes32)\":{\"notice\":\"Retrieves information about a specific namespace entry.\"},\"initialize(address)\":{\"notice\":\"Initializes the hypermap contract. Creates a \\\"root entry\\\", which has the namehash of 0 and allows its owner to operate its account.\"},\"leaf(bytes32,bytes)\":{\"notice\":\"Builds a namehash given the parent namehash and a label.\"},\"leafl(bytes32,bytes)\":{\"notice\":\"Builds a namehash given the parent namehash and a label.\"},\"mint(address,bytes,bytes,address)\":{\"notice\":\"Mints a new namespace entry and creates a token-bound account for it. Must be called by a parent namespace entry token-bound account.\"},\"note(bytes,bytes)\":{\"notice\":\"Creates a new note beneath the calling namespace entry.\"},\"tbaOf(bytes32)\":{\"notice\":\"Retrieves the token-bound account address of a namespace entry.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/hypermap/Hypermap.sol\":\"Hypermap\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains-ens-contracts-1.5.2/=dependencies/@ensdomains-ens-contracts-1.5.2/\",\":@ensdomains/ens-contracts/=dependencies/@ensdomains-ens-contracts-1.2.2/\",\":@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs/lz-evm-messagelib-v2/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/\",\":@layerzerolabs/lz-evm-protocol-v2/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/\",\":@layerzerolabs/oapp-evm/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":account-abstraction/=dependencies/account-abstraction/contracts/\",\":ds-test/=dependencies/erc6551-reference-0.3.1/lib/forge-std/lib/ds-test/src/\",\":erc6551-reference-0.3.1/=dependencies/erc6551-reference-0.3.1/\",\":eth-infinitism-account-abstraction-0.8.0/=dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/\",\":eth-infinitism-account-abstraction-0.8/=dependencies/eth-infinitism-account-abstraction-0.8.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/\",\":forge-std/=dependencies/erc6551-reference-0.3.1/lib/forge-std/src/\",\":safe-global-safe-smart-account-1.5.0/=dependencies/safe-global-safe-smart-account-1.5.0/\",\":solady-0.1.26/=dependencies/solady-0.1.26/src/\",\":solidity-bytes-utils-0.8/=dependencies/solidity-bytes-utils-0.8/contracts/\",\":solidity-bytes-utils/=dependencies/solidity-bytes-utils-0.8/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x61a23d601c2ab69dd726ac55058604cbda98e1d728ba31a51c379a3f9eeea715\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8cbb06152d82ebdd5ba1d33454e5759492040f309a82637c7e99c948a04fa20\",\"dweb:/ipfs/QmQQuLr6WSfLu97pMEh6XLefk99TSj9k5Qu1zXGPepwGiK\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/utils/ERC721Holder.sol\":{\"keccak256\":\"0xaad20f8713b5cd98114278482d5d91b9758f9727048527d582e8e88fd4901fd8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5396e8dbb000c2fada59b7d2093b9c7c870fd09413ab0fdaba45d882959c6244\",\"dweb:/ipfs/QmXQn5XckSiUsUBpMYuiFeqnojRX4rKa9jmgjCPeTuPmhh\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Create2.sol\":{\"keccak256\":\"0xbb7e8401583d26268ea9103013bcdcd90866a7718bd91105ebd21c9bf11f4f06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866a11ad89c93ee918078f7a46ae31e17d89216ce64603f0d34be7ed0a5c520e\",\"dweb:/ipfs/QmW3ckLEJg2v2NzuVLNJFmRuerGSipw6Dzg6ntbmqbAGoC\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0xfd473ea8f70e13eaa6475c7e348885b8a32925252e3bc237e07c0e3fde0f10f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea9d17ae8f18568ab1aedf555ebc79906ba3eaaccfa78efbaed05bd3a9e1b6f2\",\"dweb:/ipfs/QmUQDGwCVE72tExiyA9EuwBeaiu9a8DQin3DZxuX76umg4\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/cryptography/EIP712Upgradeable.sol\":{\"keccak256\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Account.sol\":{\"keccak256\":\"0xda097894cc052f451ad669c5a07a9eda3f53a948f8080714850dc68cc1040b42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ca48dd1eff4f9eee3699a6800c09c4d208d103862f2a55d66286e8eb4b7771e\",\"dweb:/ipfs/QmX2KX2fmUV5rbVoJSAq6BTVVwxK1Jy169dRJN2h8UCNLz\"]},\"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Executable.sol\":{\"keccak256\":\"0x9bdb7a7e324bf36203ec6ff68c454446cae3993c1054b0356a081fa52ec43a29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c6187c6633ec42ccb0ae5fdf4f1791fad7a505f29c8b55b1a5fe3ec9ee0148\",\"dweb:/ipfs/QmeANTvdkBMZeumsw6Qe7MHEjgkHJTLju4oQtAfo9HLzNV\"]},\"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Registry.sol\":{\"keccak256\":\"0x871be5b51883d915c0b871cb0baf7bbddd41a2b2e42ae109b922c6418ee7141b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9ce9d28f791e48ff909593ca1d4a20adb6b39b037b80ce6984fe971d90dbe802\",\"dweb:/ipfs/QmPortC41pjKq1CgWTU6nSsBc5CHLyYKFFRu1opEWMj2UR\"]},\"dependencies/erc6551-reference-0.3.1/src/lib/ERC6551AccountLib.sol\":{\"keccak256\":\"0x49e81d01b3aef13b314a6667e4811089a78ad03dfad5cd430b00be2f9ed8ea34\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46b60a9d293324e56f59937e2a4d3a79ef4f69847868b5bbc3d81bcd6d1981a7\",\"dweb:/ipfs/QmTgv7s9kf8UxdXuR1TswCQLguKueVwbABahPLnfJRUXfB\"]},\"dependencies/erc6551-reference-0.3.1/src/lib/ERC6551BytecodeLib.sol\":{\"keccak256\":\"0xc6a20fb273cbe33fa8d9591aaeb6a9f24b8fd9944f8d0017f4bf5b26614731f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740fed446bda3effacea6fa48d23a7d23911363e353bd12c5171b2b21b996acf\",\"dweb:/ipfs/QmNbWP8UkANAUGCc4ZcjfyKDBi89KjSunFQEvnhpXLBFt4\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/BaseAccount.sol\":{\"keccak256\":\"0x071e38cf697bedbfe021955879277620ff763ecca1a1143ce14792e8c86c6d94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d55468ffadcec140a1dc853fac153de985d7335655e70935b9d28e148a495ab\",\"dweb:/ipfs/QmXMPLx92TLCDRtNTdmTLSWBNbPVmSGeN9im2zsK9P9p4R\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/Helpers.sol\":{\"keccak256\":\"0x42b948af5fa14a96149611595df1186800c7558b2de8762e4b45a7c45c16f65e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://737a7908131ece48a5df1faaa3d0be79c42792379c27f5615dae6aa14cd68c2f\",\"dweb:/ipfs/QmPAxGMDxuek7XWSUVfZpvYE8bustfsjTDVDK8hmE88e1f\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x2d3450fa3906422b6fdbbe7f2a2a9e36d6f3751bfa9cd80af88befd6a5be78c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292a0ef5295d7f2016e99d2c228958f7f6de94f5bd9652d8696af15af0094a99\",\"dweb:/ipfs/QmVg4fhkZbUB7AopGcaVPmTdvChq7W9ga8fjrc3XaJNTM2\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x1030b464b49ce80da46b5b6c9af357c2d526f308de61391db6a4ec767d33b864\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://671945f8e18e7305797312b5a209506be3c9bd1d9b9b561c1e8863bccfa61319\",\"dweb:/ipfs/QmVanLK5Aenrb7J94doiE1C9oHwo86jvv8NrpDeNHwvnii\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0xdf580eafa015b81bde436d6a5468cc92b531ada84007cef885e923f6dfc5e8bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99f0060626568619ac94d750eb4c0888d92ca5775a6bd957fef9847843835b77\",\"dweb:/ipfs/QmXJer3D9sTkEj3mmUDqpdqfGpe46Rn9G22nGrfZdP2wAT\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3b0423737e810dd886183ed32cfed9b45edd315f5fb3e1076fc19f86791adc64\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c43081efaa2eda581b6249053281bb58cb0c4eeb6bf87efc55d95daaec2fc931\",\"dweb:/ipfs/QmXRN2JnyzWZNeFMHauTnDuc7jhxGY4ZkY37HTtjXKdC87\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0xee493ae200b8c675bdc0da66f7ac6bb883ecea33672d7d0a95526b9eecdedf87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://979784a0333ac4ef3cc53ab9323a4b7fa574d929bd511f0eed03d3b0370db22d\",\"dweb:/ipfs/QmeiciN5gs4upM6vfKvrRxWiDBUzMU4uJQRRkJajhim9gX\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/ISenderCreator.sol\":{\"keccak256\":\"0x677f651d733162b80d1af7901e4f36469e362737a8353d1d0cc7bb94489e4ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6905a80acd70b444ea230b5b582164cb99aaae518bf72c88f8292df31615570\",\"dweb:/ipfs/QmfTKTPwJYf9pmA3T5PE5cCG8GLLDrLaq3jQqMP3pVRL6w\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xe48e904fcac02295aad07fbfa1c1d449a74bf44c04e432afef6f34d1ef726ae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5882b635ea6f5da9ae411485975888431de571f85d4baf35e3db1a83c1f14b85\",\"dweb:/ipfs/QmVSTX36Byr48y8JBmz1hCTGAAyQdTYegQbsSqdRNuSQYz\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0xb15188e25e45fe73097e279675b6c0beccbd4133ead2260f8f0c4ba840046800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d14c1edd1e95d37c26e54bb34305e2cc9dedc46eb75ec91caeb777678e8ea79\",\"dweb:/ipfs/QmcCL2syVtV7W3XvYx3si84MPkbEJKqEN8hjFNhAPoDDhK\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/utils/Exec.sol\":{\"keccak256\":\"0x9c724ee22011193ea7f92d3c3c467ee6aa27139d3ddc225c7f1254d241e6ccdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96cc246fe944a212cbb9ba82065b2d380ec80954fcdb5d8d982b476bd5b72868\",\"dweb:/ipfs/QmZ25eFixEhukbfWGz5TBjsp7YohxUqD5i2rxhaghfvHt8\"]},\"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"src/account/HyperAccount.sol\":{\"keccak256\":\"0xf06a2e1c8b8010e97341fbb7119d23f258a9ab6da7c78bf71634af655f351002\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc96aacbcbe97fd766cc7d8a3ac03e4fff4dfa8d476cd1b081cabf451859b2de\",\"dweb:/ipfs/Qmf49fx6SMaQQRjk4fJTthPjRtiPcWQ9qYEhRRZau8qQNe\"]},\"src/account/HyperAccountMinter.sol\":{\"keccak256\":\"0xa49fa54936d942b5a41bd76076c5534e50ce0087abaa392e4581d7bd67b9a265\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f04dd6b194a9e74a2e929c39f51c30eda1e5bfd30af198d22486a84e8d3013af\",\"dweb:/ipfs/QmWXfFbKBSFwMWdaYJYbnHiAXyXCCmKc9W71RqJchhxS5y\"]},\"src/account/HyperAccountMinterUpgradable.sol\":{\"keccak256\":\"0x2ee91a27252a8644855e20066c5027f18385aa36e59135913a104338e02fc0c6\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://36dc7b08251a1832ab1985c597682b5eb73a929c583707dfde4ae555f110abf2\",\"dweb:/ipfs/QmcbM3WXGTExCVB67Cwg4M29UfP7xHh31zLtru3LpgVKb4\"]},\"src/account/HyperAccountProxy.sol\":{\"keccak256\":\"0x7140345c230730dd2ce79f83150fd71b5dbff72c3c3f32bc9748cd51ea27b753\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://7e02d8600c8a55a0207e51c014b7992b01ef7daed08480da3918f5bf60e49311\",\"dweb:/ipfs/QmYbsi3noV9KNgjecd1NR8GniAD5Ev6TaZhRy1VpxSDBWc\"]},\"src/account/mech/Account.sol\":{\"keccak256\":\"0x2a0e5d82ee1e808a7cbc3e4567b9e65c16fb5a0e51ce40d08f927a8bfd55c3a9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0a70b3b31ffcf4ee094d3fae5a3f426f8f35abace5735e1b4fdf9fc6695ea6cf\",\"dweb:/ipfs/QmdGcmp7uKKFcsoLZqNoPsvsEjqusT3ypNmsqSTW6HTwXR\"]},\"src/account/mech/ERC721TokenBoundMech.sol\":{\"keccak256\":\"0x517279ed3fa7fa2b3a851da8c256dd396f80929970be2420a5e6b07d3f3f5f40\",\"license\":\"LGPL-3.0\",\"urls\":[\"bzz-raw://717d316548f0f0c0a8d5abf62af66930620ab637b2d6857deb98310723c422b7\",\"dweb:/ipfs/QmPZUQRfLPD1hEbvNa4ftFbqME5jkKwh6uJnTgWygbmPka\"]},\"src/account/mech/Mech.sol\":{\"keccak256\":\"0x6bd4c9f07654a347024c803c8fa9d6ea3e879d7564319051f9bd21e201c3e6db\",\"license\":\"LGPL-3.0\",\"urls\":[\"bzz-raw://f0ca040cdca52d4ccb6eb60a070be7167c9a8e778e0141ed52dd9e1a0f754abb\",\"dweb:/ipfs/QmZuNa44UovvuLBCNKMuEcagY1Ln5XgZQp6VmwbwsEgR36\"]},\"src/account/mech/Receiver.sol\":{\"keccak256\":\"0x2c8e560a54990548a16a316234d7cc337e11427419d3ef83c87f56fc5ec979ee\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6face80784f718bc7d233e6fd8608ba836402c4d143c1ab07cc62591d21a33eb\",\"dweb:/ipfs/QmPnVBbxcAdMzowti6ohufDJMUqTe96mKe7XgFeEgLY6Zf\"]},\"src/account/mech/TokenBoundMech.sol\":{\"keccak256\":\"0x72e0e80254a35385fb044d0dc1af7ae0a83ff489be2f23af6014a272b5e96c45\",\"license\":\"LGPL-3.0\",\"urls\":[\"bzz-raw://d0cc703c11c6bb8ef8f25fc4dd602c97b98a3af141fdd907328f5f3eba6c4df0\",\"dweb:/ipfs/QmfNwYP4PcirRmmEyZUNtgvigX6bBHxNH3FNMpRprtJHwK\"]},\"src/hypermap/Hypermap.sol\":{\"keccak256\":\"0x0900c9d44668bdb16cab93a4d1083b06c6c6ec1f76e38fb4ed6a7a7efa0c9cc1\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9a2574e7dadd5ab1a1e13dbccbf4ba14b1bdedafa702785a2155c8be9532c2e\",\"dweb:/ipfs/QmYjgjv557abetp5vwQXVENV5KjY4EnwtfKeVsPP6U6wJz\"]},\"src/hypermap/HypermapStorage.sol\":{\"keccak256\":\"0xe1e530b13fcc91d5a9eb3649f4de0507eadcd4c64ade3e313d3284539274d181\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0d8e69c99ea1e0525bad7ecab6822d56068562236ee5f071192e0d22c5eccf7f\",\"dweb:/ipfs/QmWSDYcoe1nD4QscJD8k9pJNkFeopP8XbD3nTTjNAQ9JFy\"]},\"src/interfaces/IHyperAccountMinter.sol\":{\"keccak256\":\"0xa05937e7a6fbb54f16e066bacdc98a5a44769d367c2e7a133a22b15e9b1c0b2b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://f2b1869cf8ad4bf23b546ecd8b7997eb1020386ba506d93417c174322637acc6\",\"dweb:/ipfs/QmeJ9zughGyY11wKissxAtktTiNJH4KJzUob5ZvCnRfY3z\"]},\"src/interfaces/IHypermap.sol\":{\"keccak256\":\"0x06cdc791350f25a1e42385d20b56b3aba3aad0e17e1af5c9aeaa4a89eefa40ea\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3147a1bfd62d049fb51af5f056edbb888ea927e47a38e19b9730981e5bafae3d\",\"dweb:/ipfs/QmXP5yTXP8nEXUi3mCbpFtmfNrKt62bevLg4Z44TqT2vm6\"]},\"src/interfaces/IMech.sol\":{\"keccak256\":\"0xc213abfaad7b41517632a4522fe7d1c8e05308ca93161916384fc9e3f56e68de\",\"license\":\"LGPL-3.0\",\"urls\":[\"bzz-raw://aeda78fa6ecb920ab897577a901eb63b96c22484cdd6532fddd1096750b9f762\",\"dweb:/ipfs/QmcqkiEGa5gBFcQCENwhzs6Nt5DXDjqCMQZi2T42yADU4G\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CannotCreate2Proxy"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721IncorrectOwner"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721InsufficientApproval"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"type":"error","name":"ERC721InvalidApprover"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"ERC721InvalidOperator"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"ERC721InvalidOwner"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"type":"error","name":"ERC721InvalidReceiver"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"ERC721InvalidSender"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"type":"error","name":"ERC721NonexistentToken"},{"inputs":[],"type":"error","name":"EmptyFact"},{"inputs":[],"type":"error","name":"FactAlreadyExists"},{"inputs":[],"type":"error","name":"FactMustBeginWithBang"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"FailedToInitializeTBA"},{"inputs":[],"type":"error","name":"GeneAlreadySet"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidLabelCharacter"},{"inputs":[],"type":"error","name":"LabelTooLong"},{"inputs":[],"type":"error","name":"LabelTooShort"},{"inputs":[],"type":"error","name":"NameAlreadyExists"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"NotParent"},{"inputs":[],"type":"error","name":"NoteMustBeginWithTilde"},{"inputs":[],"type":"error","name":"OnlyZero"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"parenthash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"namehash","type":"bytes32","indexed":true},{"internalType":"bytes","name":"labelhash","type":"bytes","indexed":true},{"internalType":"bytes","name":"label","type":"bytes","indexed":false},{"internalType":"bytes","name":"data","type":"bytes","indexed":false}],"type":"event","name":"Fact","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"entry","type":"bytes32","indexed":true},{"internalType":"address","name":"gene","type":"address","indexed":true}],"type":"event","name":"Gene","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"parenthash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"namehash","type":"bytes32","indexed":true},{"internalType":"bytes","name":"labelhash","type":"bytes","indexed":true},{"internalType":"bytes","name":"label","type":"bytes","indexed":false}],"type":"event","name":"Mint","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"parenthash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"namehash","type":"bytes32","indexed":true},{"internalType":"bytes","name":"labelhash","type":"bytes","indexed":true},{"internalType":"bytes","name":"label","type":"bytes","indexed":false},{"internalType":"bytes","name":"data","type":"bytes","indexed":false}],"type":"event","name":"Note","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"address","name":"zeroTba","type":"address","indexed":true}],"type":"event","name":"Zero","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"ERC6551_REGISTRY","outputs":[{"internalType":"contract IERC6551Registry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"METADATA_NOTE_KEY","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"_fact","type":"bytes"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"fact","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"_gene","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"gene"},{"inputs":[{"internalType":"bytes32","name":"namehash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"get","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"parenthash","type":"bytes32"},{"internalType":"bytes","name":"label","type":"bytes"}],"stateMutability":"pure","type":"function","name":"leaf","outputs":[{"internalType":"bytes32","name":"namehash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"parenthash","type":"bytes32"},{"internalType":"bytes","name":"label","type":"bytes"}],"stateMutability":"pure","type":"function","name":"leafl","outputs":[{"internalType":"bytes32","name":"namehash","type":"bytes32"},{"internalType":"bytes32","name":"labelhash","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"map","outputs":[{"internalType":"address","name":"tba","type":"address"},{"internalType":"address","name":"gene","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"label","type":"bytes"},{"internalType":"bytes","name":"initialization","type":"bytes"},{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"address","name":"tba","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes","name":"_note","type":"bytes"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"note","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"bytes32","name":"entry","type":"bytes32"}],"stateMutability":"view","type":"function","name":"tbaOf","outputs":[{"internalType":"address","name":"tba","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256)":{"details":"See {IERC721-approve}."},"balanceOf(address)":{"details":"See {IERC721-balanceOf}."},"fact(bytes,bytes)":{"details":"Must be called by a namespace entry's TBA, and the entry must not already have a fact with the same label.","params":{"_data":"The data to be stored at the fact.","_fact":"The fact label to create. Must be prepended with an exclamation mark (!)."},"returns":{"_0":"namehash The namehash of the newly created fact."}},"gene(address)":{"details":"Must be called by the associated entry's token bound account.Upgradeable TBA implementations can have their implementation changed by the TBA owner (through an upgrade).Similarly, TBA implementations that have `delegatecall` can also have their implementations changed. This includes all contracts inheriting from src/account/mech/Mech.sol.","params":{"_gene":"The address of the TBA implementation to set for all children of the calling namespace entry."}},"get(bytes32)":{"params":{"namehash":"The namehash of the namespace entry to query."},"returns":{"_0":"tba The address of the token-bound account associated with the entry. (zero if note or fact).","_1":"owner The address of the entry owner. (zero if note or fact).","_2":"data The note or fact bytes associated with the entry (empty if not a note or fact)."}},"getApproved(uint256)":{"details":"See {IERC721-getApproved}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address)":{"params":{"_admin":"The address of the owner of the root entry account. for the root entry token-bound account."}},"isApprovedForAll(address,address)":{"details":"See {IERC721-isApprovedForAll}."},"leaf(bytes32,bytes)":{"params":{"label":"the label with which to produce the child namehash","parenthash":"the namehash of the parent name entry."},"returns":{"namehash":"the namehash of the newly formed entry"}},"leafl(bytes32,bytes)":{"params":{"label":"the label with which to produce the child namehash","parenthash":"the namehash of the parent name entry."},"returns":{"labelhash":"the labelhash (the final entry in the path) of the newly formed entry","namehash":"the namehash of the newly formed entry"}},"mint(address,bytes,bytes,address)":{"params":{"implementation":"The address of the implementation contract for the token-bound account: this will be overriden by the gene if the parent entry has one set.","initialization":"Initialization calldata applied to the new minted entry's token-bound account.","label":"The label to mint beneath the calling parent entry.","to":"The address to own the new namespace entry."},"returns":{"tba":"The address of the new entry's token-bound account."}},"name()":{"details":"See {IERC721Metadata-name}."},"note(bytes,bytes)":{"details":"Must be called by a namespace entry's TBA.","params":{"_data":"The data to be stored at the note.","_note":"The note label to create. Must be prepended with a tilde (~)."},"returns":{"_0":"namehash The namehash of the newly created note."}},"onERC721Received(address,address,uint256,bytes)":{"details":"See {IERC721Receiver-onERC721Received}. Always returns `IERC721Receiver.onERC721Received.selector`."},"ownerOf(uint256)":{"details":"See {IERC721-ownerOf}."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"safeTransferFrom(address,address,uint256)":{"details":"See {IERC721-safeTransferFrom}."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"See {IERC721-safeTransferFrom}."},"setApprovalForAll(address,bool)":{"details":"See {IERC721-setApprovalForAll}."},"symbol()":{"details":"See {IERC721Metadata-symbol}."},"tbaOf(bytes32)":{"params":{"entry":"The entry namehash for which to get the token-bound account."},"returns":{"tba":"The token-bound account address of the namespace entry."}},"tokenURI(uint256)":{"details":"See {IERC721Metadata-tokenURI}."},"transferFrom(address,address,uint256)":{"details":"See {IERC721-transferFrom}."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"fact(bytes,bytes)":{"notice":"Creates a new fact beneath the calling namespace entry."},"gene(address)":{"notice":"Public function callable by a name entry's token bound account in order to create a gene entry. A gene entry defines the token bound account implementation that will be used for all entries in the tree beneath this name entry. For instance, if gene() is called for `.hypr`, then `sub.hypr` as well as `sub.sub.hypr` will have the same implementation, and so on."},"get(bytes32)":{"notice":"Retrieves information about a specific namespace entry."},"initialize(address)":{"notice":"Initializes the hypermap contract. Creates a \"root entry\", which has the namehash of 0 and allows its owner to operate its account."},"leaf(bytes32,bytes)":{"notice":"Builds a namehash given the parent namehash and a label."},"leafl(bytes32,bytes)":{"notice":"Builds a namehash given the parent namehash and a label."},"mint(address,bytes,bytes,address)":{"notice":"Mints a new namespace entry and creates a token-bound account for it. Must be called by a parent namespace entry token-bound account."},"note(bytes,bytes)":{"notice":"Creates a new note beneath the calling namespace entry."},"tbaOf(bytes32)":{"notice":"Retrieves the token-bound account address of a namespace entry."}},"version":1}},"settings":{"remappings":["@ensdomains-ens-contracts-1.5.2/=dependencies/@ensdomains-ens-contracts-1.5.2/","@ensdomains/ens-contracts/=dependencies/@ensdomains-ens-contracts-1.2.2/","@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs/lz-evm-messagelib-v2/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/","@layerzerolabs/lz-evm-protocol-v2/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/","@layerzerolabs/oapp-evm/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","account-abstraction/=dependencies/account-abstraction/contracts/","ds-test/=dependencies/erc6551-reference-0.3.1/lib/forge-std/lib/ds-test/src/","erc6551-reference-0.3.1/=dependencies/erc6551-reference-0.3.1/","eth-infinitism-account-abstraction-0.8.0/=dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/","eth-infinitism-account-abstraction-0.8/=dependencies/eth-infinitism-account-abstraction-0.8.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/","forge-std/=dependencies/erc6551-reference-0.3.1/lib/forge-std/src/","safe-global-safe-smart-account-1.5.0/=dependencies/safe-global-safe-smart-account-1.5.0/","solady-0.1.26/=dependencies/solady-0.1.26/src/","solidity-bytes-utils-0.8/=dependencies/solidity-bytes-utils-0.8/contracts/","solidity-bytes-utils/=dependencies/solidity-bytes-utils-0.8/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/hypermap/Hypermap.sol":"Hypermap"},"evmVersion":"prague","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06","urls":["bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c","dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/Proxy.sol":{"keccak256":"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd","urls":["bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac","dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC1155/IERC1155Receiver.sol":{"keccak256":"0x61a23d601c2ab69dd726ac55058604cbda98e1d728ba31a51c379a3f9eeea715","urls":["bzz-raw://d8cbb06152d82ebdd5ba1d33454e5759492040f309a82637c7e99c948a04fa20","dweb:/ipfs/QmQQuLr6WSfLu97pMEh6XLefk99TSj9k5Qu1zXGPepwGiK"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/IERC721.sol":{"keccak256":"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261","urls":["bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11","dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/IERC721Receiver.sol":{"keccak256":"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d","urls":["bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34","dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/utils/ERC721Holder.sol":{"keccak256":"0xaad20f8713b5cd98114278482d5d91b9758f9727048527d582e8e88fd4901fd8","urls":["bzz-raw://5396e8dbb000c2fada59b7d2093b9c7c870fd09413ab0fdaba45d882959c6244","dweb:/ipfs/QmXQn5XckSiUsUBpMYuiFeqnojRX4rKa9jmgjCPeTuPmhh"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/utils/ERC721Utils.sol":{"keccak256":"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855","urls":["bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd","dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Address.sol":{"keccak256":"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5","urls":["bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23","dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Create2.sol":{"keccak256":"0xbb7e8401583d26268ea9103013bcdcd90866a7718bd91105ebd21c9bf11f4f06","urls":["bzz-raw://866a11ad89c93ee918078f7a46ae31e17d89216ce64603f0d34be7ed0a5c520e","dweb:/ipfs/QmW3ckLEJg2v2NzuVLNJFmRuerGSipw6Dzg6ntbmqbAGoC"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27","urls":["bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e","dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/token/ERC721/ERC721Upgradeable.sol":{"keccak256":"0xfd473ea8f70e13eaa6475c7e348885b8a32925252e3bc237e07c0e3fde0f10f5","urls":["bzz-raw://ea9d17ae8f18568ab1aedf555ebc79906ba3eaaccfa78efbaed05bd3a9e1b6f2","dweb:/ipfs/QmUQDGwCVE72tExiyA9EuwBeaiu9a8DQin3DZxuX76umg4"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/cryptography/EIP712Upgradeable.sol":{"keccak256":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Account.sol":{"keccak256":"0xda097894cc052f451ad669c5a07a9eda3f53a948f8080714850dc68cc1040b42","urls":["bzz-raw://8ca48dd1eff4f9eee3699a6800c09c4d208d103862f2a55d66286e8eb4b7771e","dweb:/ipfs/QmX2KX2fmUV5rbVoJSAq6BTVVwxK1Jy169dRJN2h8UCNLz"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Executable.sol":{"keccak256":"0x9bdb7a7e324bf36203ec6ff68c454446cae3993c1054b0356a081fa52ec43a29","urls":["bzz-raw://a9c6187c6633ec42ccb0ae5fdf4f1791fad7a505f29c8b55b1a5fe3ec9ee0148","dweb:/ipfs/QmeANTvdkBMZeumsw6Qe7MHEjgkHJTLju4oQtAfo9HLzNV"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Registry.sol":{"keccak256":"0x871be5b51883d915c0b871cb0baf7bbddd41a2b2e42ae109b922c6418ee7141b","urls":["bzz-raw://9ce9d28f791e48ff909593ca1d4a20adb6b39b037b80ce6984fe971d90dbe802","dweb:/ipfs/QmPortC41pjKq1CgWTU6nSsBc5CHLyYKFFRu1opEWMj2UR"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/lib/ERC6551AccountLib.sol":{"keccak256":"0x49e81d01b3aef13b314a6667e4811089a78ad03dfad5cd430b00be2f9ed8ea34","urls":["bzz-raw://46b60a9d293324e56f59937e2a4d3a79ef4f69847868b5bbc3d81bcd6d1981a7","dweb:/ipfs/QmTgv7s9kf8UxdXuR1TswCQLguKueVwbABahPLnfJRUXfB"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/lib/ERC6551BytecodeLib.sol":{"keccak256":"0xc6a20fb273cbe33fa8d9591aaeb6a9f24b8fd9944f8d0017f4bf5b26614731f9","urls":["bzz-raw://740fed446bda3effacea6fa48d23a7d23911363e353bd12c5171b2b21b996acf","dweb:/ipfs/QmNbWP8UkANAUGCc4ZcjfyKDBi89KjSunFQEvnhpXLBFt4"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/BaseAccount.sol":{"keccak256":"0x071e38cf697bedbfe021955879277620ff763ecca1a1143ce14792e8c86c6d94","urls":["bzz-raw://1d55468ffadcec140a1dc853fac153de985d7335655e70935b9d28e148a495ab","dweb:/ipfs/QmXMPLx92TLCDRtNTdmTLSWBNbPVmSGeN9im2zsK9P9p4R"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/Helpers.sol":{"keccak256":"0x42b948af5fa14a96149611595df1186800c7558b2de8762e4b45a7c45c16f65e","urls":["bzz-raw://737a7908131ece48a5df1faaa3d0be79c42792379c27f5615dae6aa14cd68c2f","dweb:/ipfs/QmPAxGMDxuek7XWSUVfZpvYE8bustfsjTDVDK8hmE88e1f"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/UserOperationLib.sol":{"keccak256":"0x2d3450fa3906422b6fdbbe7f2a2a9e36d6f3751bfa9cd80af88befd6a5be78c1","urls":["bzz-raw://292a0ef5295d7f2016e99d2c228958f7f6de94f5bd9652d8696af15af0094a99","dweb:/ipfs/QmVg4fhkZbUB7AopGcaVPmTdvChq7W9ga8fjrc3XaJNTM2"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAccount.sol":{"keccak256":"0x1030b464b49ce80da46b5b6c9af357c2d526f308de61391db6a4ec767d33b864","urls":["bzz-raw://671945f8e18e7305797312b5a209506be3c9bd1d9b9b561c1e8863bccfa61319","dweb:/ipfs/QmVanLK5Aenrb7J94doiE1C9oHwo86jvv8NrpDeNHwvnii"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAggregator.sol":{"keccak256":"0xdf580eafa015b81bde436d6a5468cc92b531ada84007cef885e923f6dfc5e8bf","urls":["bzz-raw://99f0060626568619ac94d750eb4c0888d92ca5775a6bd957fef9847843835b77","dweb:/ipfs/QmXJer3D9sTkEj3mmUDqpdqfGpe46Rn9G22nGrfZdP2wAT"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IEntryPoint.sol":{"keccak256":"0x3b0423737e810dd886183ed32cfed9b45edd315f5fb3e1076fc19f86791adc64","urls":["bzz-raw://c43081efaa2eda581b6249053281bb58cb0c4eeb6bf87efc55d95daaec2fc931","dweb:/ipfs/QmXRN2JnyzWZNeFMHauTnDuc7jhxGY4ZkY37HTtjXKdC87"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/INonceManager.sol":{"keccak256":"0xee493ae200b8c675bdc0da66f7ac6bb883ecea33672d7d0a95526b9eecdedf87","urls":["bzz-raw://979784a0333ac4ef3cc53ab9323a4b7fa574d929bd511f0eed03d3b0370db22d","dweb:/ipfs/QmeiciN5gs4upM6vfKvrRxWiDBUzMU4uJQRRkJajhim9gX"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/ISenderCreator.sol":{"keccak256":"0x677f651d733162b80d1af7901e4f36469e362737a8353d1d0cc7bb94489e4ba4","urls":["bzz-raw://d6905a80acd70b444ea230b5b582164cb99aaae518bf72c88f8292df31615570","dweb:/ipfs/QmfTKTPwJYf9pmA3T5PE5cCG8GLLDrLaq3jQqMP3pVRL6w"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IStakeManager.sol":{"keccak256":"0xe48e904fcac02295aad07fbfa1c1d449a74bf44c04e432afef6f34d1ef726ae0","urls":["bzz-raw://5882b635ea6f5da9ae411485975888431de571f85d4baf35e3db1a83c1f14b85","dweb:/ipfs/QmVSTX36Byr48y8JBmz1hCTGAAyQdTYegQbsSqdRNuSQYz"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/PackedUserOperation.sol":{"keccak256":"0xb15188e25e45fe73097e279675b6c0beccbd4133ead2260f8f0c4ba840046800","urls":["bzz-raw://5d14c1edd1e95d37c26e54bb34305e2cc9dedc46eb75ec91caeb777678e8ea79","dweb:/ipfs/QmcCL2syVtV7W3XvYx3si84MPkbEJKqEN8hjFNhAPoDDhK"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/utils/Exec.sol":{"keccak256":"0x9c724ee22011193ea7f92d3c3c467ee6aa27139d3ddc225c7f1254d241e6ccdd","urls":["bzz-raw://96cc246fe944a212cbb9ba82065b2d380ec80954fcdb5d8d982b476bd5b72868","dweb:/ipfs/QmZ25eFixEhukbfWGz5TBjsp7YohxUqD5i2rxhaghfvHt8"],"license":"MIT"},"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"src/account/HyperAccount.sol":{"keccak256":"0xf06a2e1c8b8010e97341fbb7119d23f258a9ab6da7c78bf71634af655f351002","urls":["bzz-raw://bc96aacbcbe97fd766cc7d8a3ac03e4fff4dfa8d476cd1b081cabf451859b2de","dweb:/ipfs/Qmf49fx6SMaQQRjk4fJTthPjRtiPcWQ9qYEhRRZau8qQNe"],"license":"Apache-2.0"},"src/account/HyperAccountMinter.sol":{"keccak256":"0xa49fa54936d942b5a41bd76076c5534e50ce0087abaa392e4581d7bd67b9a265","urls":["bzz-raw://f04dd6b194a9e74a2e929c39f51c30eda1e5bfd30af198d22486a84e8d3013af","dweb:/ipfs/QmWXfFbKBSFwMWdaYJYbnHiAXyXCCmKc9W71RqJchhxS5y"],"license":"Apache-2.0"},"src/account/HyperAccountMinterUpgradable.sol":{"keccak256":"0x2ee91a27252a8644855e20066c5027f18385aa36e59135913a104338e02fc0c6","urls":["bzz-raw://36dc7b08251a1832ab1985c597682b5eb73a929c583707dfde4ae555f110abf2","dweb:/ipfs/QmcbM3WXGTExCVB67Cwg4M29UfP7xHh31zLtru3LpgVKb4"],"license":"Apache-2.0"},"src/account/HyperAccountProxy.sol":{"keccak256":"0x7140345c230730dd2ce79f83150fd71b5dbff72c3c3f32bc9748cd51ea27b753","urls":["bzz-raw://7e02d8600c8a55a0207e51c014b7992b01ef7daed08480da3918f5bf60e49311","dweb:/ipfs/QmYbsi3noV9KNgjecd1NR8GniAD5Ev6TaZhRy1VpxSDBWc"],"license":"Apache-2.0"},"src/account/mech/Account.sol":{"keccak256":"0x2a0e5d82ee1e808a7cbc3e4567b9e65c16fb5a0e51ce40d08f927a8bfd55c3a9","urls":["bzz-raw://0a70b3b31ffcf4ee094d3fae5a3f426f8f35abace5735e1b4fdf9fc6695ea6cf","dweb:/ipfs/QmdGcmp7uKKFcsoLZqNoPsvsEjqusT3ypNmsqSTW6HTwXR"],"license":"GPL-3.0"},"src/account/mech/ERC721TokenBoundMech.sol":{"keccak256":"0x517279ed3fa7fa2b3a851da8c256dd396f80929970be2420a5e6b07d3f3f5f40","urls":["bzz-raw://717d316548f0f0c0a8d5abf62af66930620ab637b2d6857deb98310723c422b7","dweb:/ipfs/QmPZUQRfLPD1hEbvNa4ftFbqME5jkKwh6uJnTgWygbmPka"],"license":"LGPL-3.0"},"src/account/mech/Mech.sol":{"keccak256":"0x6bd4c9f07654a347024c803c8fa9d6ea3e879d7564319051f9bd21e201c3e6db","urls":["bzz-raw://f0ca040cdca52d4ccb6eb60a070be7167c9a8e778e0141ed52dd9e1a0f754abb","dweb:/ipfs/QmZuNa44UovvuLBCNKMuEcagY1Ln5XgZQp6VmwbwsEgR36"],"license":"LGPL-3.0"},"src/account/mech/Receiver.sol":{"keccak256":"0x2c8e560a54990548a16a316234d7cc337e11427419d3ef83c87f56fc5ec979ee","urls":["bzz-raw://6face80784f718bc7d233e6fd8608ba836402c4d143c1ab07cc62591d21a33eb","dweb:/ipfs/QmPnVBbxcAdMzowti6ohufDJMUqTe96mKe7XgFeEgLY6Zf"],"license":"LGPL-3.0-only"},"src/account/mech/TokenBoundMech.sol":{"keccak256":"0x72e0e80254a35385fb044d0dc1af7ae0a83ff489be2f23af6014a272b5e96c45","urls":["bzz-raw://d0cc703c11c6bb8ef8f25fc4dd602c97b98a3af141fdd907328f5f3eba6c4df0","dweb:/ipfs/QmfNwYP4PcirRmmEyZUNtgvigX6bBHxNH3FNMpRprtJHwK"],"license":"LGPL-3.0"},"src/hypermap/Hypermap.sol":{"keccak256":"0x0900c9d44668bdb16cab93a4d1083b06c6c6ec1f76e38fb4ed6a7a7efa0c9cc1","urls":["bzz-raw://b9a2574e7dadd5ab1a1e13dbccbf4ba14b1bdedafa702785a2155c8be9532c2e","dweb:/ipfs/QmYjgjv557abetp5vwQXVENV5KjY4EnwtfKeVsPP6U6wJz"],"license":"Apache-2.0"},"src/hypermap/HypermapStorage.sol":{"keccak256":"0xe1e530b13fcc91d5a9eb3649f4de0507eadcd4c64ade3e313d3284539274d181","urls":["bzz-raw://0d8e69c99ea1e0525bad7ecab6822d56068562236ee5f071192e0d22c5eccf7f","dweb:/ipfs/QmWSDYcoe1nD4QscJD8k9pJNkFeopP8XbD3nTTjNAQ9JFy"],"license":"Apache-2.0"},"src/interfaces/IHyperAccountMinter.sol":{"keccak256":"0xa05937e7a6fbb54f16e066bacdc98a5a44769d367c2e7a133a22b15e9b1c0b2b","urls":["bzz-raw://f2b1869cf8ad4bf23b546ecd8b7997eb1020386ba506d93417c174322637acc6","dweb:/ipfs/QmeJ9zughGyY11wKissxAtktTiNJH4KJzUob5ZvCnRfY3z"],"license":"Apache-2.0"},"src/interfaces/IHypermap.sol":{"keccak256":"0x06cdc791350f25a1e42385d20b56b3aba3aad0e17e1af5c9aeaa4a89eefa40ea","urls":["bzz-raw://3147a1bfd62d049fb51af5f056edbb888ea927e47a38e19b9730981e5bafae3d","dweb:/ipfs/QmXP5yTXP8nEXUi3mCbpFtmfNrKt62bevLg4Z44TqT2vm6"],"license":"Apache-2.0"},"src/interfaces/IMech.sol":{"keccak256":"0xc213abfaad7b41517632a4522fe7d1c8e05308ca93161916384fc9e3f56e68de","urls":["bzz-raw://aeda78fa6ecb920ab897577a901eb63b96c22484cdd6532fddd1096750b9f762","dweb:/ipfs/QmcqkiEGa5gBFcQCENwhzs6Nt5DXDjqCMQZi2T42yADU4G"],"license":"LGPL-3.0"}},"version":1},"id":189} \ No newline at end of file diff --git a/src/chain/bytecode/erc1967proxy.txt b/src/chain/bytecode/erc1967proxy.txt deleted file mode 100644 index e99b743f..00000000 --- a/src/chain/bytecode/erc1967proxy.txt +++ /dev/null @@ -1 +0,0 @@ -0x6080604052600a600c565b005b60186014601a565b6026565b565b5f60216044565b905090565b365f5f375f5f365f845af43d5f5f3e805f81146040573d5ff35b3d5ffd5b5f606e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6095565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f81905091905056fea2646970667358221220007164f6221bb880865e4c02f3e712035e61170dee11d10e7bc3f3b8047b844c64736f6c634300081b0033 \ No newline at end of file diff --git a/src/chain/bytecode/erc6551registry.txt b/src/chain/bytecode/erc6551registry.txt deleted file mode 100644 index 895e75dc..00000000 --- a/src/chain/bytecode/erc6551registry.txt +++ /dev/null @@ -1 +0,0 @@ -0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033 \ No newline at end of file diff --git a/src/chain/bytecode/hyperaccount.txt b/src/chain/bytecode/hyperaccount.txt deleted file mode 100644 index f4830a4b..00000000 --- a/src/chain/bytecode/hyperaccount.txt +++ /dev/null @@ -1 +0,0 @@ -0x6080604052600436106100e6575f3560e01c80636d70f7ae11610087578063ca3b98bb11610057578063ca3b98bb1461029d578063d087d28814610289578063f23a6e61146102b0578063fc0c546a146102dc575f5ffd5b80636d70f7ae1461020e578063b0d691fe1461022d578063bc197c811461025b578063c19d93fb14610289575f5ffd5b80631626ba7e116100c25780631626ba7e1461018357806319822f7c146101a257806351945447146101cf578063523e3260146101ef575f5ffd5b806223de29146100f157806301ffc9a714610117578063150b7a021461014b575f5ffd5b366100ed57005b5f5ffd5b3480156100fc575f5ffd5b5061011561010b366004610d14565b5050505050505050565b005b348015610122575f5ffd5b50610136610131366004610dd6565b610313565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061016a610165366004610df1565b61033e565b6040516001600160e01b03199091168152602001610142565b34801561018e575f5ffd5b5061016a61019d366004610e72565b610398565b3480156101ad575f5ffd5b506101c16101bc366004610f2c565b6104bd565b604051908152602001610142565b6101e26101dd366004610f8f565b6104ef565b6040516101429190611028565b3480156101fa575f5ffd5b5061016a61020936600461103a565b610563565b348015610219575f5ffd5b5061013661022836600461108a565b610588565b348015610238575f5ffd5b50604051735ff137d4b0fdcd49dca30c7cf57e578a026d27898152602001610142565b348015610266575f5ffd5b5061016a6102753660046110e5565b63bc197c8160e01b98975050505050505050565b348015610294575f5ffd5b506101c1610626565b6101e26102ab366004611185565b6106af565b3480156102bb575f5ffd5b5061016a6102ca3660046111fa565b63f23a6e6160e01b9695505050505050565b3480156102e7575f5ffd5b506102f0610730565b604080519384526001600160a01b03909216602084015290820152606001610142565b5f61031d82610746565b8061033857506001600160e01b03198216636faff5f160e01b145b92915050565b5f5f5f610349610730565b909350915050336001600160a01b03831614801561036657508086145b156103845760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f6103b885602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f0361048357828583016020016103d982610588565b1580156103ef57506001600160a01b0382163014155b1561040a57506001600160e01b031994506103389350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610438908b908590600401611270565b602060405180830381865afa158015610453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104779190611288565b95505050505050610338565b610492610228878386866107e7565b156104aa5750630b135d3f60e11b9250610338915050565b506001600160e01b031995945050505050565b5f6104c6610813565b6104d0848461087d565b90506104df8460200135610920565b6104e882610969565b9392505050565b60606104fa33610588565b15801561051b575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b1561053957604051634780295360e11b815260040160405180910390fd5b5f61054887878787875a6109be565b925090508061055957815160208301fd5b5095945050505050565b5f61056d84610588565b610577575f610580565b630291f19360e51b5b949350505050565b5f5f5f610593610730565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa1580156105e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060491906112a3565b6001600160a01b031614801561058057505050506001600160a01b0316151590565b5f735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610686573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106aa91906112be565b905090565b60606106ba33610588565b1580156106db575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b156106f957604051634780295360e11b815260040160405180910390fd5b5f6107148888888888881561070e57886109be565b5a6109be565b925090508061072557815160208301fd5b509695505050505050565b5f5f5f61073b610ad8565b925092509250909192565b5f6001600160e01b03198216633ce4a3e960e01b148061077657506001600160e01b031982166301ffc9a760e01b145b8061079157506001600160e01b031982166306608bdf60e21b145b806107ac57506001600160e01b03198216630b135d3f60e11b145b806107c757506001600160e01b03198216630271189760e51b145b8061033857506001600160e01b03198216635194544760e01b1492915050565b5f5f5f5f6107f788888888610ae4565b9250925092506108078282610bac565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d27891461087b5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064015b60405180910390fd5b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120630b135d3f60e11b6108fe826108c56101008801886112d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061039892505050565b6001600160e01b03191614610917576001915050610338565b505f9392505050565b6001600160401b0381106109665760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610872565b50565b8015610966576040515f9033905f1990849084818181858888f193505050503d805f81146109b2576040519150601f19603f3d011682016040523d82523d5f602084013e6109b7565b606091505b5050505050565b5f60608360ff165f03610a3257876001600160a01b0316838888886040516109e7929190611317565b5f60405180830381858888f193505050503d805f8114610a22576040519150601f19603f3d011682016040523d82523d5f602084013e610a27565b606091505b509092509050610acd565b8360ff16600103610a9157876001600160a01b0316838787604051610a58929190611317565b5f604051808303818686f4925050503d805f8114610a22576040519150601f19603f3d011682016040523d82523d5f602084013e610a27565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610872565b965096945050505050565b5f5f5f61073b30610c68565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b1d57505f91506003905082610ba2565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610b6e573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610b9957505f925060019150829050610ba2565b92505f91508190505b9450945094915050565b5f826003811115610bbf57610bbf611326565b03610bc8575050565b6001826003811115610bdc57610bdc611326565b03610bfa5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c0e57610c0e611326565b03610c2f5760405163fce698f760e01b815260048101829052602401610872565b6003826003811115610c4357610c43611326565b03610c64576040516335e2f38360e21b815260048101829052602401610872565b5050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610cae919061133a565b935093509350509193909250565b6001600160a01b0381168114610966575f5ffd5b5f5f83601f840112610ce0575f5ffd5b5081356001600160401b03811115610cf6575f5ffd5b602083019150836020828501011115610d0d575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215610d2b575f5ffd5b8835610d3681610cbc565b97506020890135610d4681610cbc565b96506040890135610d5681610cbc565b95506060890135945060808901356001600160401b03811115610d77575f5ffd5b610d838b828c01610cd0565b90955093505060a08901356001600160401b03811115610da1575f5ffd5b610dad8b828c01610cd0565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610966575f5ffd5b5f60208284031215610de6575f5ffd5b81356104e881610dc1565b5f5f5f5f5f60808688031215610e05575f5ffd5b8535610e1081610cbc565b94506020860135610e2081610cbc565b93506040860135925060608601356001600160401b03811115610e41575f5ffd5b610e4d88828901610cd0565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610e83575f5ffd5b8235915060208301356001600160401b03811115610e9f575f5ffd5b8301601f81018513610eaf575f5ffd5b80356001600160401b03811115610ec857610ec8610e5e565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610ef657610ef6610e5e565b604052818152828201602001871015610f0d575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f3e575f5ffd5b83356001600160401b03811115610f53575f5ffd5b84016101208187031215610f65575f5ffd5b95602085013595506040909401359392505050565b803560ff81168114610f8a575f5ffd5b919050565b5f5f5f5f5f60808688031215610fa3575f5ffd5b8535610fae81610cbc565b94506020860135935060408601356001600160401b03811115610fcf575f5ffd5b610fdb88828901610cd0565b9094509250610fee905060608701610f7a565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104e86020830184610ffa565b5f5f5f6040848603121561104c575f5ffd5b833561105781610cbc565b925060208401356001600160401b03811115611071575f5ffd5b61107d86828701610cd0565b9497909650939450505050565b5f6020828403121561109a575f5ffd5b81356104e881610cbc565b5f5f83601f8401126110b5575f5ffd5b5081356001600160401b038111156110cb575f5ffd5b6020830191508360208260051b8501011115610d0d575f5ffd5b5f5f5f5f5f5f5f5f60a0898b0312156110fc575f5ffd5b883561110781610cbc565b9750602089013561111781610cbc565b965060408901356001600160401b03811115611131575f5ffd5b61113d8b828c016110a5565b90975095505060608901356001600160401b0381111561115b575f5ffd5b6111678b828c016110a5565b90955093505060808901356001600160401b03811115610da1575f5ffd5b5f5f5f5f5f5f60a0878903121561119a575f5ffd5b86356111a581610cbc565b95506020870135945060408701356001600160401b038111156111c6575f5ffd5b6111d289828a01610cd0565b90955093506111e5905060608801610f7a565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a0878903121561120f575f5ffd5b863561121a81610cbc565b9550602087013561122a81610cbc565b9450604087013593506060870135925060808701356001600160401b03811115611252575f5ffd5b61125e89828a01610cd0565b979a9699509497509295939492505050565b828152604060208201525f6105806040830184610ffa565b5f60208284031215611298575f5ffd5b81516104e881610dc1565b5f602082840312156112b3575f5ffd5b81516104e881610cbc565b5f602082840312156112ce575f5ffd5b5051919050565b5f5f8335601e198436030181126112ea575f5ffd5b8301803591506001600160401b03821115611303575f5ffd5b602001915036819003821315610d0d575f5ffd5b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f5f5f6060848603121561134c575f5ffd5b8351602085015190935061135f81610cbc565b604094909401519295939450919291505056fea2646970667358221220a1b85b4ec0e5429d650216036a6c51cf37439508e4e4d3436075592d97c647dc64736f6c634300081b0033 \ No newline at end of file diff --git a/src/chain/bytecode/hypermap.txt b/src/chain/bytecode/hypermap.txt deleted file mode 100644 index 980b88c4..00000000 --- a/src/chain/bytecode/hypermap.txt +++ /dev/null @@ -1 +0,0 @@ -0x6080604052600436106101e6575f3560e01c80636352211e11610108578063a22cb4651161009d578063c87b56dd1161006d578063c87b56dd146105b8578063d547741f146105d7578063e852398b146105f6578063e985e9c514610615578063edc1608414610634575f5ffd5b8063a22cb4651461052b578063ad3cb1cc1461054a578063b88d4fde1461057a578063c4d66de814610599575f5ffd5b80638eaa6ac0116100d85780638eaa6ac0146104c657806391d14854146104e557806395d89b4114610504578063a217fddf14610518575f5ffd5b80636352211e1461044a57806370a082311461046957806374e08829146104885780637788b5a8146104a7575f5ffd5b806323b872dd1161017e57806336568abe1161014e57806336568abe146103e557806342842e0e146104045780634f1ef2861461042357806352d1902d14610436575f5ffd5b806323b872dd14610354578063248a9ca31461037357806327244d1e146103925780632f2ff15d146103c6575f5ffd5b8063095ea7b3116101b9578063095ea7b3146102955780630ae186a8146102b6578063150b7a02146102e45780632124b69214610327575f5ffd5b806301ffc9a7146101ea57806306fdde031461021e578063081812fc1461023f578063094cefed14610276575b5f5ffd5b3480156101f5575f5ffd5b506102096102043660046124d6565b610657565b60405190151581526020015b60405180910390f35b348015610229575f5ffd5b50610232610667565b604051610215919061251f565b34801561024a575f5ffd5b5061025e610259366004612531565b610708565b6040516001600160a01b039091168152602001610215565b348015610281575f5ffd5b5061025e6102903660046125a0565b61071c565b3480156102a0575f5ffd5b506102b46102af366004612632565b61085b565b005b3480156102c1575f5ffd5b506102d56102d0366004612531565b61086a565b6040516102159392919061265c565b3480156102ef575f5ffd5b5061030e6102fe366004612724565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b348015610332575f5ffd5b5061034661034136600461278b565b61091f565b604051908152602001610215565b34801561035f575f5ffd5b506102b461036e3660046127d2565b61094c565b34801561037e575f5ffd5b5061034661038d366004612531565b6109da565b34801561039d575f5ffd5b5061025e6103ac366004612531565b5f908152602081905260409020546001600160a01b031690565b3480156103d1575f5ffd5b506102b46103e0366004612810565b6109fa565b3480156103f0575f5ffd5b506102b46103ff366004612810565b610a16565b34801561040f575f5ffd5b506102b461041e3660046127d2565b610a4e565b6102b461043136600461283e565b610a68565b348015610441575f5ffd5b50610346610a83565b348015610455575f5ffd5b5061025e610464366004612531565b610a9e565b348015610474575f5ffd5b5061034661048336600461288a565b610aa8565b348015610493575f5ffd5b506102b46104a236600461288a565b610b00565b3480156104b2575f5ffd5b506103466104c13660046128a5565b610b9f565b3480156104d1575f5ffd5b506102d56104e0366004612531565b610cbd565b3480156104f0575f5ffd5b506102096104ff366004612810565b610dcc565b34801561050f575f5ffd5b50610232610e02565b348015610523575f5ffd5b506103465f81565b348015610536575f5ffd5b506102b461054536600461290f565b610e40565b348015610555575f5ffd5b50610232604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610585575f5ffd5b506102b4610594366004612724565b610e4b565b3480156105a4575f5ffd5b506102b46105b336600461288a565b610e63565b3480156105c3575f5ffd5b506102326105d2366004612531565b61104c565b3480156105e2575f5ffd5b506102b46105f1366004612810565b6110bd565b348015610601575f5ffd5b506103466106103660046128a5565b6110d9565b348015610620575f5ffd5b5061020961062f36600461293f565b611242565b34801561063f575f5ffd5b5061025e6f6551c19487814612e58fe0681377575881565b5f6106618261128e565b92915050565b5f5160206145ce5f395f51905f5280546060919081906106869061296b565b80601f01602080910402602001604051908101604052809291908181526020018280546106b29061296b565b80156106fd5780601f106106d4576101008083540402835291602001916106fd565b820191905f5260205f20905b8154815290600101906020018083116106e057829003601f168201915b505050505091505090565b5f610712826112cd565b5061066182611304565b5f85858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525061075d9350849250905061133d565b5f610766611440565b90505f610774828a8a61091f565b5f83815260208190526040812060010154919250906001600160a01b0316156107b757505f8281526020819052604090206001908101546001600160a01b031695505b89896040516107c79291906129a3565b604051809103902082847fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18d8d6040516108029291906129da565b60405180910390a461084c8b8388848c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061148992505050565b9b9a5050505050505050505050565b610866828233611717565b5050565b5f602081905290815260409020805460018201546002830180546001600160a01b0393841694929093169261089e9061296b565b80601f01602080910402602001604051908101604052809291908181526020018280546108ca9061296b565b80156109155780601f106108ec57610100808354040283529160200191610915565b820191905f5260205f20905b8154815290600101906020018083116108f857829003601f168201915b5050505050905083565b5f604051602083018101604052828482379190912060408051948552602085019190915290922092915050565b6001600160a01b03821661097a57604051633250574960e11b81525f60048201526024015b60405180910390fd5b5f610986838333611724565b9050836001600160a01b0316816001600160a01b0316146109d4576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610971565b50505050565b5f9081525f51602061460e5f395f51905f52602052604090206001015490565b610a03826109da565b610a0c81611826565b6109d48383611833565b6001600160a01b0381163314610a3f5760405163334bd91960e11b815260040160405180910390fd5b610a4982826118d4565b505050565b610a4983838360405180602001604052805f815250610e4b565b610a7061194d565b610a79826119f3565b61086682826119fd565b5f610a8c611ab9565b505f5160206145ee5f395f51905f5290565b5f610661826112cd565b5f5f5160206145ce5f395f51905f526001600160a01b038316610ae0576040516322718ad960e21b81525f6004820152602401610971565b6001600160a01b039092165f908152600390920160205250604090205490565b5f610b09611440565b5f818152602081905260409020600101549091506001600160a01b031615610b445760405163f3dda33360e01b815260040160405180910390fd5b5f8181526020819052604080822060010180546001600160a01b0319166001600160a01b0386169081179091559051909183917fde0ec2494e561683ac09b109d8c4c4a08b4ddbd4fcd23b609fe107e63176ef5a9190a35050565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250845185945090925015159050610be957610be96129ed565b6020910101516001600160f81b031916603f60f91b14610c1c5760405163a3b9ac9560e01b815260040160405180910390fd5b610c2781600161133d565b5f610c30611440565b9050610c3d81888861091f565b5f818152602081905260409020909350600201610c5b858783612a45565b508686604051610c6c9291906129a3565b604051809103902083827fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48a8a8a8a604051610cab9493929190612afe565b60405180910390a45050949350505050565b5f8181526020818152604080832081516060818101845282546001600160a01b0390811683526001840154169482019490945260028201805486959486949290840191610d099061296b565b80601f0160208091040260200160405190810160405280929190818152602001828054610d359061296b565b8015610d805780601f10610d5757610100808354040283529160200191610d80565b820191905f5260205f20905b815481529060010190602001808311610d6357829003601f168201915b5050509190925250508151919250506001600160a01b0316610dad57604001515f93508392509050610dc5565b8051610db886610a9e565b8260400151935093509350505b9193909250565b5f9182525f51602061460e5f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930180546060915f5160206145ce5f395f51905f52916106869061296b565b610866338383611b02565b610e5684848461094c565b6109d43385858585611bb1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ea75750825b90505f826001600160401b03166001148015610ec25750303b155b905081158015610ed0575080155b15610eee5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f1857845460ff60401b1916600160401b1785555b610f6260405180604001604052806008815260200167048797065726d61760c41b81525060405180604001604052806008815260200167048595045524d41560c41b815250611cd7565b610f6a611ce9565b5f604051610f77906124a7565b604051809103905ff080158015610f90573d5f5f3e3d5ffd5b5090505f610fb1885f5f1b845f60405180602001604052805f815250611489565b9050610fbd5f336118d4565b50610fc85f89611833565b506040516001600160a01b038216907fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c0905f90a25050831561104457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b6060611057826112cd565b505f61106d60408051602081019091525f815290565b90505f81511161108b5760405180602001604052805f8152506110b6565b8061109584611cf1565b6040516020016110a6929190612b46565b6040516020818303038152906040525b9392505050565b6110c6826109da565b6110cf81611826565b6109d483836118d4565b5f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920182905250845185945090925015159050611123576111236129ed565b6020910101516001600160f81b031916602160f81b1461115657604051636ae27d4f60e01b815260040160405180910390fd5b61116181600161133d565b5f61116a611440565b905061117781888861091f565b5f8181526020819052604090206002018054919450906111969061296b565b1590506111b657604051632950bb6760e21b815260040160405180910390fd5b5f8490036111d7576040516301b3720560e01b815260040160405180910390fd5b5f8381526020819052604090206002016111f2858783612a45565b5086866040516112039291906129a3565b604051809103902083827f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8a8a8a8a604051610cab9493929190612afe565b6001600160a01b039182165f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b5f6001600160e01b031982166380ac58cd60e01b14806112be57506001600160e01b03198216635b5e139f60e01b145b80610661575061066182611d80565b5f5f6112d883611db4565b90506001600160a01b03811661066157604051637e27328960e01b815260048101849052602401610971565b5f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b815181810361135f57604051631406d65b60e11b815260040160405180910390fd5b6040811061138057604051633ea2fbc360e11b815260040160405180910390fd5b815b818110156109d4575f84828151811061139d5761139d6129ed565b01602001516001600160f81b0319169050600360fc1b81108015906113d05750603960f81b6001600160f81b0319821611155b806114025750606160f81b6001600160f81b03198216108015906114025750603d60f91b6001600160f81b0319821611155b8061141a5750602d60f81b6001600160f81b03198216145b61143757604051633a1fdfd160e21b815260040160405180910390fd5b50600101611382565b5f5f61144b33611ded565b5f818152602081905260409020549093508392506001600160a01b03163314905061066157604051631c09fe6560e11b815260040160405180910390fd5b5f848152602081905260408120546001600160a01b0316156114be57604051633480a50360e21b815260040160405180910390fd5b6f6551c19487814612e58fe068137757586001600160a01b0316638a54c52f86306040516114eb906124b4565b6001600160a01b0390911681526020018190604051809103905ff5905080158015611518573d5f5f3e3d5ffd5b5060405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018890524660448201523060648201526084810188905260a4016020604051808303815f875af1158015611576573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159a9190612b5a565b90506040518060600160405280826001600160a01b03168152602001846115c1575f6115c3565b855b6001600160a01b03908116825260408051602081810183525f8083529481019190915289845283815292819020845181549084166001600160a01b03199182161782559385015160018201805491909416941693909317909155820151600282019061162f9082612b75565b5061163e915030905086611e41565b5f816001600160a01b031663d1f5789460e01b8685604051602401611664929190612c2f565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516116a29190612c52565b5f604051808303815f865af19150503d805f81146116db576040519150601f19603f3d011682016040523d82523d5f602084013e6116e0565b606091505b50509050806117025760405163169c52c760e21b815260040160405180910390fd5b61170d308888611ea2565b5095945050505050565b610a498383836001611ebc565b5f5f5160206145ce5f395f51905f528161173d85611db4565b90506001600160a01b0384161561175957611759818587611fcf565b6001600160a01b03811615611795576117745f865f5f611ebc565b6001600160a01b0381165f908152600383016020526040902080545f190190555b6001600160a01b038616156117c5576001600160a01b0386165f9081526003830160205260409020805460010190555b5f85815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6118308133612033565b50565b5f5f51602061460e5f395f51905f5261184c8484610dcc565b6118cb575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556118813390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610661565b5f915050610661565b5f5f51602061460e5f395f51905f526118ed8484610dcc565b156118cb575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610661565b306001600160a01b037f000000000000000000000000000000000013a0486ebdc2db1d7b4d1f7fca92ed1614806119d357507f000000000000000000000000000000000013a0486ebdc2db1d7b4d1f7fca92ed6001600160a01b03166119c75f5160206145ee5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156119f15760405163703e46dd60e11b815260040160405180910390fd5b565b5f61086681611826565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611a57575060408051601f3d908101601f19168201909252611a5491810190612c5d565b60015b611a7f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610971565b5f5160206145ee5f395f51905f528114611aaf57604051632a87526960e21b815260048101829052602401610971565b610a49838361206c565b306001600160a01b037f000000000000000000000000000000000013a0486ebdc2db1d7b4d1f7fca92ed16146119f15760405163703e46dd60e11b815260040160405180910390fd5b5f5160206145ce5f395f51905f526001600160a01b038316611b4257604051630b61174360e31b81526001600160a01b0384166004820152602401610971565b6001600160a01b038481165f818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b15611cd057604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611bf3908890889087908790600401612c74565b6020604051808303815f875af1925050508015611c2d575060408051601f3d908101601f19168201909252611c2a91810190612cb0565b60015b611c94573d808015611c5a576040519150601f19603f3d011682016040523d82523d5f602084013e611c5f565b606091505b5080515f03611c8c57604051633250574960e11b81526001600160a01b0385166004820152602401610971565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b1461104457604051633250574960e11b81526001600160a01b0385166004820152602401610971565b5050505050565b611cdf6120c1565b610866828261210a565b6119f16120c1565b60605f611cfd8361213a565b60010190505f816001600160401b03811115611d1b57611d1b612687565b6040519080825280601f01601f191660200182016040528015611d45576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611d4f57509392505050565b5f6001600160e01b03198216637965db0b60e01b148061066157506301ffc9a760e01b6001600160e01b0319831614610661565b5f9081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611e339190612ccb565b935093509350509193909250565b6001600160a01b038216611e6a57604051633250574960e11b81525f6004820152602401610971565b5f611e7683835f611724565b90506001600160a01b03811615610a49576040516339e3563760e11b81525f6004820152602401610971565b610a4983838360405180602001604052805f815250612211565b5f5160206145ce5f395f51905f528180611ede57506001600160a01b03831615155b15611f9f575f611eed856112cd565b90506001600160a01b03841615801590611f195750836001600160a01b0316816001600160a01b031614155b8015611f2c5750611f2a8185611242565b155b15611f555760405163a9fbf51f60e01b81526001600160a01b0385166004820152602401610971565b8215611f9d5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5f93845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b611fda83838361221c565b610a49576001600160a01b03831661200857604051637e27328960e01b815260048101829052602401610971565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610971565b61203d8282610dcc565b6108665760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610971565b61207582612281565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156120b957610a4982826122e4565b610866612356565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166119f157604051631afcd79f60e31b815260040160405180910390fd5b6121126120c1565b5f5160206145ce5f395f51905f528061212b8482612b75565b50600181016109d48382612b75565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106121785772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106121a4576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106121c257662386f26fc10000830492506010015b6305f5e10083106121da576305f5e100830492506008015b61271083106121ee57612710830492506004015b60648310612200576064830492506002015b600a83106106615760010192915050565b610e56848484612375565b5f6001600160a01b038316158015906122795750826001600160a01b0316846001600160a01b0316148061225557506122558484611242565b806122795750826001600160a01b031661226e83611304565b6001600160a01b0316145b949350505050565b806001600160a01b03163b5f036122b657604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610971565b5f5160206145ee5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516123009190612c52565b5f60405180830381855af49150503d805f8114612338576040519150601f19603f3d011682016040523d82523d5f602084013e61233d565b606091505b509150915061234d858383612422565b95945050505050565b34156119f15760405163b398979f60e01b815260040160405180910390fd5b6001600160a01b03821661239e57604051633250574960e11b81525f6004820152602401610971565b5f6123aa83835f611724565b90506001600160a01b0381166123d657604051637e27328960e01b815260048101839052602401610971565b836001600160a01b0316816001600160a01b0316146109d4576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610971565b606082612437576124328261247e565b6110b6565b815115801561244e57506001600160a01b0384163b155b1561247757604051639996b31560e01b81526001600160a01b0385166004820152602401610971565b50806110b6565b80511561248e5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6113c480612d0483390190565b610506806140c883390190565b6001600160e01b031981168114611830575f5ffd5b5f602082840312156124e6575f5ffd5b81356110b6816124c1565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6110b660208301846124f1565b5f60208284031215612541575f5ffd5b5035919050565b6001600160a01b0381168114611830575f5ffd5b5f5f83601f84011261256c575f5ffd5b5081356001600160401b03811115612582575f5ffd5b602083019150836020828501011115612599575f5ffd5b9250929050565b5f5f5f5f5f5f608087890312156125b5575f5ffd5b86356125c081612548565b955060208701356001600160401b038111156125da575f5ffd5b6125e689828a0161255c565b90965094505060408701356001600160401b03811115612604575f5ffd5b61261089828a0161255c565b909450925050606087013561262481612548565b809150509295509295509295565b5f5f60408385031215612643575f5ffd5b823561264e81612548565b946020939093013593505050565b6001600160a01b038481168252831660208201526060604082018190525f9061234d908301846124f1565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126126aa575f5ffd5b81356001600160401b038111156126c3576126c3612687565b604051601f8201601f19908116603f011681016001600160401b03811182821017156126f1576126f1612687565b604052818152838201602001851015612708575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215612737575f5ffd5b843561274281612548565b9350602085013561275281612548565b92506040850135915060608501356001600160401b03811115612773575f5ffd5b61277f8782880161269b565b91505092959194509250565b5f5f5f6040848603121561279d575f5ffd5b8335925060208401356001600160401b038111156127b9575f5ffd5b6127c58682870161255c565b9497909650939450505050565b5f5f5f606084860312156127e4575f5ffd5b83356127ef81612548565b925060208401356127ff81612548565b929592945050506040919091013590565b5f5f60408385031215612821575f5ffd5b82359150602083013561283381612548565b809150509250929050565b5f5f6040838503121561284f575f5ffd5b823561285a81612548565b915060208301356001600160401b03811115612874575f5ffd5b6128808582860161269b565b9150509250929050565b5f6020828403121561289a575f5ffd5b81356110b681612548565b5f5f5f5f604085870312156128b8575f5ffd5b84356001600160401b038111156128cd575f5ffd5b6128d98782880161255c565b90955093505060208501356001600160401b038111156128f7575f5ffd5b6129038782880161255c565b95989497509550505050565b5f5f60408385031215612920575f5ffd5b823561292b81612548565b915060208301358015158114612833575f5ffd5b5f5f60408385031215612950575f5ffd5b823561295b81612548565b9150602083013561283381612548565b600181811c9082168061297f57607f821691505b60208210810361299d57634e487b7160e01b5f52602260045260245ffd5b50919050565b818382375f9101908152919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6122796020830184866129b2565b634e487b7160e01b5f52603260045260245ffd5b601f821115610a4957805f5260205f20601f840160051c81016020851015612a265750805b601f840160051c820191505b81811015611cd0575f8155600101612a32565b6001600160401b03831115612a5c57612a5c612687565b612a7083612a6a835461296b565b83612a01565b5f601f841160018114612aa1575f8515612a8a5750838201355b5f19600387901b1c1916600186901b178355611cd0565b5f83815260208120601f198716915b82811015612ad05786850135825560209485019460019092019101612ab0565b5086821015612aec575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081525f612b116040830186886129b2565b8281036020840152612b248185876129b2565b979650505050505050565b5f81518060208401855e5f93019283525090919050565b5f612279612b548386612b2f565b84612b2f565b5f60208284031215612b6a575f5ffd5b81516110b681612548565b81516001600160401b03811115612b8e57612b8e612687565b612ba281612b9c845461296b565b84612a01565b6020601f821160018114612bd4575f8315612bbd5750848201515b5f19600385901b1c1916600184901b178455611cd0565b5f84815260208120601f198516915b82811015612c035787850151825560209485019460019092019101612be3565b5084821015612c2057868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b03831681526040602082018190525f90612279908301846124f1565b5f6110b68284612b2f565b5f60208284031215612c6d575f5ffd5b5051919050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90612ca6908301846124f1565b9695505050505050565b5f60208284031215612cc0575f5ffd5b81516110b6816124c1565b5f5f5f60608486031215612cdd575f5ffd5b83516020850151909350612cf081612548565b604094909401519295939450919291505056fe6080604052348015600e575f5ffd5b506113a88061001c5f395ff3fe6080604052600436106100e6575f3560e01c80636d70f7ae11610087578063ca3b98bb11610057578063ca3b98bb1461029d578063d087d28814610289578063f23a6e61146102b0578063fc0c546a146102dc575f5ffd5b80636d70f7ae1461020e578063b0d691fe1461022d578063bc197c811461025b578063c19d93fb14610289575f5ffd5b80631626ba7e116100c25780631626ba7e1461018357806319822f7c146101a257806351945447146101cf578063523e3260146101ef575f5ffd5b806223de29146100f157806301ffc9a714610117578063150b7a021461014b575f5ffd5b366100ed57005b5f5ffd5b3480156100fc575f5ffd5b5061011561010b366004610d14565b5050505050505050565b005b348015610122575f5ffd5b50610136610131366004610dd6565b610313565b60405190151581526020015b60405180910390f35b348015610156575f5ffd5b5061016a610165366004610df1565b61033e565b6040516001600160e01b03199091168152602001610142565b34801561018e575f5ffd5b5061016a61019d366004610e72565b610398565b3480156101ad575f5ffd5b506101c16101bc366004610f2c565b6104bd565b604051908152602001610142565b6101e26101dd366004610f8f565b6104ef565b6040516101429190611028565b3480156101fa575f5ffd5b5061016a61020936600461103a565b610563565b348015610219575f5ffd5b5061013661022836600461108a565b610588565b348015610238575f5ffd5b50604051735ff137d4b0fdcd49dca30c7cf57e578a026d27898152602001610142565b348015610266575f5ffd5b5061016a6102753660046110e5565b63bc197c8160e01b98975050505050505050565b348015610294575f5ffd5b506101c1610626565b6101e26102ab366004611185565b6106af565b3480156102bb575f5ffd5b5061016a6102ca3660046111fa565b63f23a6e6160e01b9695505050505050565b3480156102e7575f5ffd5b506102f0610730565b604080519384526001600160a01b03909216602084015290820152606001610142565b5f61031d82610746565b8061033857506001600160e01b03198216636faff5f160e01b145b92915050565b5f5f5f610349610730565b909350915050336001600160a01b03831614801561036657508086145b156103845760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f6103b885602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f0361048357828583016020016103d982610588565b1580156103ef57506001600160a01b0382163014155b1561040a57506001600160e01b031994506103389350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610438908b908590600401611270565b602060405180830381865afa158015610453573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104779190611288565b95505050505050610338565b610492610228878386866107e7565b156104aa5750630b135d3f60e11b9250610338915050565b506001600160e01b031995945050505050565b5f6104c6610813565b6104d0848461087d565b90506104df8460200135610920565b6104e882610969565b9392505050565b60606104fa33610588565b15801561051b575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b1561053957604051634780295360e11b815260040160405180910390fd5b5f61054887878787875a6109be565b925090508061055957815160208301fd5b5095945050505050565b5f61056d84610588565b610577575f610580565b630291f19360e51b5b949350505050565b5f5f5f610593610730565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa1580156105e0573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061060491906112a3565b6001600160a01b031614801561058057505050506001600160a01b0316151590565b5f735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610686573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106aa91906112be565b905090565b60606106ba33610588565b1580156106db575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b156106f957604051634780295360e11b815260040160405180910390fd5b5f6107148888888888881561070e57886109be565b5a6109be565b925090508061072557815160208301fd5b509695505050505050565b5f5f5f61073b610ad8565b925092509250909192565b5f6001600160e01b03198216633ce4a3e960e01b148061077657506001600160e01b031982166301ffc9a760e01b145b8061079157506001600160e01b031982166306608bdf60e21b145b806107ac57506001600160e01b03198216630b135d3f60e11b145b806107c757506001600160e01b03198216630271189760e51b145b8061033857506001600160e01b03198216635194544760e01b1492915050565b5f5f5f5f6107f788888888610ae4565b9250925092506108078282610bac565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d27891461087b5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064015b60405180910390fd5b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120630b135d3f60e11b6108fe826108c56101008801886112d5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061039892505050565b6001600160e01b03191614610917576001915050610338565b505f9392505050565b6001600160401b0381106109665760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610872565b50565b8015610966576040515f9033905f1990849084818181858888f193505050503d805f81146109b2576040519150601f19603f3d011682016040523d82523d5f602084013e6109b7565b606091505b5050505050565b5f60608360ff165f03610a3257876001600160a01b0316838888886040516109e7929190611317565b5f60405180830381858888f193505050503d805f8114610a22576040519150601f19603f3d011682016040523d82523d5f602084013e610a27565b606091505b509092509050610acd565b8360ff16600103610a9157876001600160a01b0316838787604051610a58929190611317565b5f604051808303818686f4925050503d805f8114610a22576040519150601f19603f3d011682016040523d82523d5f602084013e610a27565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610872565b965096945050505050565b5f5f5f61073b30610c68565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b1d57505f91506003905082610ba2565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610b6e573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610b9957505f925060019150829050610ba2565b92505f91508190505b9450945094915050565b5f826003811115610bbf57610bbf611326565b03610bc8575050565b6001826003811115610bdc57610bdc611326565b03610bfa5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c0e57610c0e611326565b03610c2f5760405163fce698f760e01b815260048101829052602401610872565b6003826003811115610c4357610c43611326565b03610c64576040516335e2f38360e21b815260048101829052602401610872565b5050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610cae919061133a565b935093509350509193909250565b6001600160a01b0381168114610966575f5ffd5b5f5f83601f840112610ce0575f5ffd5b5081356001600160401b03811115610cf6575f5ffd5b602083019150836020828501011115610d0d575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215610d2b575f5ffd5b8835610d3681610cbc565b97506020890135610d4681610cbc565b96506040890135610d5681610cbc565b95506060890135945060808901356001600160401b03811115610d77575f5ffd5b610d838b828c01610cd0565b90955093505060a08901356001600160401b03811115610da1575f5ffd5b610dad8b828c01610cd0565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610966575f5ffd5b5f60208284031215610de6575f5ffd5b81356104e881610dc1565b5f5f5f5f5f60808688031215610e05575f5ffd5b8535610e1081610cbc565b94506020860135610e2081610cbc565b93506040860135925060608601356001600160401b03811115610e41575f5ffd5b610e4d88828901610cd0565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610e83575f5ffd5b8235915060208301356001600160401b03811115610e9f575f5ffd5b8301601f81018513610eaf575f5ffd5b80356001600160401b03811115610ec857610ec8610e5e565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610ef657610ef6610e5e565b604052818152828201602001871015610f0d575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f3e575f5ffd5b83356001600160401b03811115610f53575f5ffd5b84016101208187031215610f65575f5ffd5b95602085013595506040909401359392505050565b803560ff81168114610f8a575f5ffd5b919050565b5f5f5f5f5f60808688031215610fa3575f5ffd5b8535610fae81610cbc565b94506020860135935060408601356001600160401b03811115610fcf575f5ffd5b610fdb88828901610cd0565b9094509250610fee905060608701610f7a565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104e86020830184610ffa565b5f5f5f6040848603121561104c575f5ffd5b833561105781610cbc565b925060208401356001600160401b03811115611071575f5ffd5b61107d86828701610cd0565b9497909650939450505050565b5f6020828403121561109a575f5ffd5b81356104e881610cbc565b5f5f83601f8401126110b5575f5ffd5b5081356001600160401b038111156110cb575f5ffd5b6020830191508360208260051b8501011115610d0d575f5ffd5b5f5f5f5f5f5f5f5f60a0898b0312156110fc575f5ffd5b883561110781610cbc565b9750602089013561111781610cbc565b965060408901356001600160401b03811115611131575f5ffd5b61113d8b828c016110a5565b90975095505060608901356001600160401b0381111561115b575f5ffd5b6111678b828c016110a5565b90955093505060808901356001600160401b03811115610da1575f5ffd5b5f5f5f5f5f5f60a0878903121561119a575f5ffd5b86356111a581610cbc565b95506020870135945060408701356001600160401b038111156111c6575f5ffd5b6111d289828a01610cd0565b90955093506111e5905060608801610f7a565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a0878903121561120f575f5ffd5b863561121a81610cbc565b9550602087013561122a81610cbc565b9450604087013593506060870135925060808701356001600160401b03811115611252575f5ffd5b61125e89828a01610cd0565b979a9699509497509295939492505050565b828152604060208201525f6105806040830184610ffa565b5f60208284031215611298575f5ffd5b81516104e881610dc1565b5f602082840312156112b3575f5ffd5b81516104e881610cbc565b5f602082840312156112ce575f5ffd5b5051919050565b5f5f8335601e198436030181126112ea575f5ffd5b8301803591506001600160401b03821115611303575f5ffd5b602001915036819003821315610d0d575f5ffd5b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f5f5f6060848603121561134c575f5ffd5b8351602085015190935061135f81610cbc565b604094909401519295939450919291505056fea2646970667358221220a1b85b4ec0e5429d650216036a6c51cf37439508e4e4d3436075592d97c647dc64736f6c634300081b003360a0604052348015600e575f5ffd5b50604051610506380380610506833981016040819052602b916044565b6001600160a01b03166080525f805460ff19169055606f565b5f602082840312156053575f5ffd5b81516001600160a01b03811681146068575f5ffd5b9392505050565b6080516104806100865f395f606201526104805ff3fe608060405260043610610021575f3560e01c8063d1f578941461003257610028565b3661002857005b610030610045565b005b610030610040366004610363565b610057565b610055610050610111565b610148565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100be575f5460ff161561009e57610099610045565b6100be565b60405163572190d160e01b81523360048201526024015b60405180910390fd5b5f5460ff16156100e05760405162dc149f60e41b815260040160405180910390fd5b5f6100e9610111565b6001600160a01b03160361010d575f805460ff1916600117905561010d8282610166565b5050565b5f6101437f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e808015610162573d5ff35b3d5ffd5b61016f826101c0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101b8576101b38282610236565b505050565b61010d6102a8565b806001600160a01b03163b5f036101f557604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100b5565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516102529190610434565b5f60405180830381855af49150503d805f811461028a576040519150601f19603f3d011682016040523d82523d5f602084013e61028f565b606091505b509150915061029f8583836102c7565b95945050505050565b34156100555760405163b398979f60e01b815260040160405180910390fd5b6060826102dc576102d782610326565b61031f565b81511580156102f357506001600160a01b0384163b155b1561031c57604051639996b31560e01b81526001600160a01b03851660048201526024016100b5565b50805b9392505050565b8051156103365780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610374575f5ffd5b82356001600160a01b038116811461038a575f5ffd5b9150602083013567ffffffffffffffff8111156103a5575f5ffd5b8301601f810185136103b5575f5ffd5b803567ffffffffffffffff8111156103cf576103cf61034f565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103fe576103fe61034f565b604052818152828201602001871015610415575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea2646970667358221220117e3d359e3a2bb948f5bdb70d5aeec72a9db4978309bed659036d34fc5d4f6c64736f6c634300081b003380bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220eedd3485a2a68f4f9c3e3ee6d44d5683e49e027e1c1244ce3eb59879f01dde1364736f6c634300081b0033 \ No newline at end of file diff --git a/src/chain/bytecode/multicall.txt b/src/chain/bytecode/multicall.txt deleted file mode 100644 index 879bc493..00000000 --- a/src/chain/bytecode/multicall.txt +++ /dev/null @@ -1 +0,0 @@ -0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033 \ No newline at end of file diff --git a/src/chain/mod.rs b/src/chain/mod.rs index 5a40a97f..822927b1 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -1,3 +1,6 @@ +use std::collections::HashMap; +use std::fs; +use std::path::PathBuf; use std::process::{Child, Command, Stdio}; use color_eyre::{ @@ -5,6 +8,7 @@ use color_eyre::{ Section, }; use reqwest::Client; +use serde::Deserialize; use tokio::time::{sleep, Duration}; use tracing::{debug, info, instrument}; @@ -20,48 +24,21 @@ use crate::KIT_CACHE; // first account on anvil const OWNER_ADDRESS: &str = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; -const ERC6551_REGISTRY: &str = "0x000000006551c19487814612e58FE06813775758"; -const MULTICALL3: &str = "0xcA11bde05977b3631167028862bE2a173976CA11"; const CREATE2: &str = "0x4e59b44847b379578588920cA78FbF26c0B4956C"; const HYPERMAP_PROXY: &str = "0x000000000044C6B8Cb4d8f0F889a3E47664EAeda"; -const HYPERMAP: &str = "0x000000000013a0486EBDc2DB1D7B4d1f7fCA92eD"; -const HYPER_ACCOUNT: &str = "0x0000000000EDAd72076CBe7b9Cfa3751D5a85C97"; -//const HYPER_ACCOUNT_MINTER: &str = "0xE01dCbD3Ed5f709874A1eA7a25677de18C8661c9"; const DOT_OS_TBA: &str = "0x9b3853358ede717fc7D4806cF75d7A4d4517A9C9"; const ZEROTH_TBA: &str = "0x809A598d9883f2Fb6B77382eBfC9473Fd6A857c9"; - -const HYPERMAP_PROXY_LONG: &str = - "0x000000000000000000000000000000000044C6B8Cb4d8f0F889a3E47664EAeda"; -const HYPERMAP_LONG: &str = "0x000000000000000000000000000000000013a0486EBDc2DB1D7B4d1f7fCA92eD"; - const DEFAULT_MAX_ATTEMPTS: u16 = 16; +const DEFAULT_CONFIG_PATH: &str = "./Contracts.toml"; const PREDEPLOY_CONTRACTS: &[(&str, &str)] = &[ - ( - ERC6551_REGISTRY, - include_str!("./bytecode/erc6551registry.txt"), - ), - (MULTICALL3, include_str!("./bytecode/multicall.txt")), - (HYPER_ACCOUNT, include_str!("./bytecode/hyperaccount.txt")), - (HYPERMAP_PROXY, include_str!("./bytecode/erc1967proxy.txt")), - (HYPERMAP, include_str!("./bytecode/hypermap.txt")), + ]; const STORAGE_SLOTS: &[(&str, &str, &str)] = &[ - // Implementation slot - ( - HYPERMAP_PROXY, - "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc", - HYPERMAP_LONG, - ), - // Hypermap immutable (set to proxy's own address) - ( - HYPERMAP_PROXY, - "0x0000000000000000000000000000000000000000000000000000000000000000", - HYPERMAP_PROXY_LONG, - ), + ]; const TRANSACTIONS: &[(&str, &str)] = &[ @@ -96,6 +73,94 @@ const TRANSACTIONS: &[(&str, &str)] = &[ (ZEROTH_TBA, include_str!("./bytecode/mint-os.txt")), ]; +#[derive(Debug, Deserialize)] +struct ChainConfig { + contracts: Vec, +} + +#[derive(Debug, Deserialize)] +struct ContractConfig { + address: String, + bytecode: Option, + bytecode_path: Option, + #[serde(default)] + storage: HashMap, +} + +#[derive(Debug, Deserialize)] +#[serde(untagged)] +enum StorageValue { + String(String), + Number(u64), +} + +impl StorageValue { + fn to_hex_string(&self) -> String { + match self { + StorageValue::String(s) => { + if s.starts_with("0x") { + // Pad to 32 bytes (64 hex chars + 0x) + let stripped = s.trim_start_matches("0x"); + format!("0x{:0>64}", stripped) + } else { + format!("0x{:0>64}", s) + } + } + StorageValue::Number(n) => format!("0x{:0>64x}", n), + } + } +} + +fn normalize_slot(slot: &str) -> String { + if slot.starts_with("0x") { + // Already has 0x prefix, just pad to 32 bytes + let stripped = slot.trim_start_matches("0x"); + format!("0x{:0>64}", stripped) + } else { + // No 0x prefix, parse as decimal and convert to hex + if let Ok(num) = slot.parse::() { + format!("0x{:0>64x}", num) + } else { + // Assume it's hex without prefix + format!("0x{:0>64}", slot) + } + } +} + +fn load_config(config_path: &PathBuf) -> Result> { + if !config_path.exists() { + debug!("Config file not found at {:?}, skipping", config_path); + return Ok(None); + } + + let content = fs::read_to_string(config_path) + .map_err(|e| eyre!("Failed to read config file: {}", e))?; + + let config: ChainConfig = toml::from_str(&content) + .map_err(|e| eyre!("Failed to parse config file: {}", e))?; + + info!("Loaded config from {:?}", config_path); + Ok(Some(config)) +} + +fn load_bytecode(bytecode_path: &str) -> Result { + let content = fs::read_to_string(bytecode_path) + .map_err(|e| eyre!("Failed to read bytecode file {}: {}", bytecode_path, e))?; + + // Try to parse as JSON first (Foundry artifact format) + if let Ok(json) = serde_json::from_str::(&content) { + if let Some(bytecode) = json.get("bytecode").and_then(|b| b.get("object")).and_then(|o| o.as_str()) { + return Ok(bytecode.to_string()); + } + if let Some(bytecode) = json.get("deployedBytecode").and_then(|b| b.get("object")).and_then(|o| o.as_str()) { + return Ok(bytecode.to_string()); + } + } + + // Otherwise treat as raw hex + Ok(content.trim().to_string()) +} + #[instrument(level = "trace", skip_all)] async fn get_nonce(port: u16, client: &Client, address: &str) -> Result { let url = format!("http://localhost:{}", port); @@ -231,6 +296,62 @@ async fn initialize_contracts(port: u16) -> Result<()> { Ok(()) } +#[instrument(level = "trace", skip_all)] +async fn apply_config_contracts(port: u16, config: &ChainConfig) -> Result<()> { + let client = Client::new(); + let url = format!("http://localhost:{}", port); + + for contract in &config.contracts { + // Deploy bytecode if specified (either inline or from file) + let bytecode = if let Some(inline_bytecode) = &contract.bytecode { + Some(inline_bytecode.clone()) + } else if let Some(bytecode_path) = &contract.bytecode_path { + Some(load_bytecode(bytecode_path)?) + } else { + None + }; + + if let Some(bytecode) = bytecode { + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_setCode", + "params": [&contract.address, bytecode.trim()], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + info!("Deployed contract from config at {}", contract.address); + } + + // Set storage slots + for (slot, value) in &contract.storage { + let normalized_slot = normalize_slot(slot); + let hex_value = value.to_hex_string(); + + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_setStorageAt", + "params": [&contract.address, normalized_slot, hex_value], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + debug!("Set storage slot {} for {} to {}", slot, contract.address, hex_value); + } + } + + Ok(()) +} #[instrument(level = "trace", skip_all)] async fn check_dot_os_tba(port: u16) -> Result { @@ -250,12 +371,25 @@ async fn check_dot_os_tba(port: u16) -> Result { Ok(code != "0x") } +// Public function without custom config #[instrument(level = "trace", skip_all)] pub async fn start_chain( + port: u16, + recv_kill: BroadcastRecvBool, + verbose: bool, + tracing: bool, +) -> Result> { + start_chain_with_config(port, recv_kill, verbose, tracing, None).await +} + +// Public function with custom config +#[instrument(level = "trace", skip_all)] +pub async fn start_chain_with_config( port: u16, mut recv_kill: BroadcastRecvBool, verbose: bool, tracing: bool, + custom_config_path: Option, ) -> Result> { let deps = check_foundry_deps()?; get_deps( @@ -267,11 +401,29 @@ pub async fn start_chain( ) .await?; + // Always try to load default config + let default_config = load_config(&PathBuf::from(DEFAULT_CONFIG_PATH))?; + + // Load custom config if provided + let custom_config = if let Some(path) = custom_config_path { + load_config(&path)? + } else { + None + }; + info!("Checking for Anvil on port {}...", port); if wait_for_anvil(port, 1, None).await.is_ok() { if !check_dot_os_tba(port).await? { predeploy_contracts(port).await?; initialize_contracts(port).await?; + + if let Some(config) = default_config { + apply_config_contracts(port, &config).await?; + } + + if let Some(config) = custom_config { + apply_config_contracts(port, &config).await?; + } } return Ok(None); } @@ -306,6 +458,20 @@ pub async fn start_chain( let _ = child.kill(); return Err(e.wrap_err("Failed to initialize contracts")); } + + if let Some(config) = default_config { + if let Err(e) = apply_config_contracts(port, &config).await { + let _ = child.kill(); + return Err(e.wrap_err("Failed to apply default config contracts")); + } + } + + if let Some(config) = custom_config { + if let Err(e) = apply_config_contracts(port, &config).await { + let _ = child.kill(); + return Err(e.wrap_err("Failed to apply custom config contracts")); + } + } } Ok(Some(child)) @@ -403,7 +569,7 @@ async fn predeploy_contracts(port: u16) -> Result<()> { /// kit chain, alias to anvil #[instrument(level = "trace", skip_all)] -pub async fn execute(port: u16, verbose: bool, tracing: bool) -> Result<()> { +pub async fn execute(port: u16, verbose: bool, tracing: bool, custom_config_path: Option) -> Result<()> { let (send_to_cleanup, mut recv_in_cleanup) = tokio::sync::mpsc::unbounded_channel(); let (send_to_kill, _recv_kill) = tokio::sync::broadcast::channel(1); let recv_kill_in_cos = send_to_kill.subscribe(); @@ -411,7 +577,7 @@ pub async fn execute(port: u16, verbose: bool, tracing: bool) -> Result<()> { let handle_signals = tokio::spawn(cleanup_on_signal(send_to_cleanup.clone(), recv_kill_in_cos)); let recv_kill_in_start_chain = send_to_kill.subscribe(); - let child = start_chain(port, recv_kill_in_start_chain, verbose, tracing).await?; + let child = start_chain_with_config(port, recv_kill_in_start_chain, verbose, tracing, custom_config_path).await?; let Some(mut child) = child else { return Err(eyre!( "Port {} is already in use by another anvil process", @@ -433,4 +599,4 @@ pub async fn execute(port: u16, verbose: bool, tracing: bool) -> Result<()> { let _ = send_to_kill.send(true); Ok(()) -} +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 041525ea..fa0c07ee 100644 --- a/src/main.rs +++ b/src/main.rs @@ -367,7 +367,10 @@ async fn execute( let port = matches.get_one::("PORT").unwrap(); let verbose = matches.get_one::("VERBOSE").unwrap(); let tracing = matches.get_one::("TRACING").unwrap(); - chain::execute(*port, *verbose, *tracing).await + let config_path = matches + .get_one::("CONFIG") + .map(|s| PathBuf::from(s)); + chain::execute(*port, *verbose, *tracing, config_path).await } Some(("connect", matches)) => { let local_port = matches.get_one::("LOCAL_PORT").unwrap(); @@ -1015,6 +1018,13 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .help("If set, enable tracing/steps-tracing") .required(false) ) + .arg(Arg::new("CONFIG") + .action(ArgAction::Set) + .short('c') + .long("config") + .help("Path to contracts config file (TOML format)") + .required(false) + ) ) .subcommand(Command::new("connect") .about("Connect (or disconnect) a ssh tunnel to a remote server") From 9702b06b8a31cdc84e966bd4787cf710a2c5d5c6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 21 Oct 2025 14:19:55 +0000 Subject: [PATCH 02/52] Format Rust code using rustfmt --- src/chain/mod.rs | 67 +++++++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/src/chain/mod.rs b/src/chain/mod.rs index 822927b1..ed8743d4 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -33,13 +33,9 @@ const ZEROTH_TBA: &str = "0x809A598d9883f2Fb6B77382eBfC9473Fd6A857c9"; const DEFAULT_MAX_ATTEMPTS: u16 = 16; const DEFAULT_CONFIG_PATH: &str = "./Contracts.toml"; -const PREDEPLOY_CONTRACTS: &[(&str, &str)] = &[ - -]; +const PREDEPLOY_CONTRACTS: &[(&str, &str)] = &[]; -const STORAGE_SLOTS: &[(&str, &str, &str)] = &[ - -]; +const STORAGE_SLOTS: &[(&str, &str, &str)] = &[]; const TRANSACTIONS: &[(&str, &str)] = &[ // initialize Hypermap: give ownership to OWNER_ADDRESS @@ -133,12 +129,12 @@ fn load_config(config_path: &PathBuf) -> Result> { return Ok(None); } - let content = fs::read_to_string(config_path) - .map_err(|e| eyre!("Failed to read config file: {}", e))?; - - let config: ChainConfig = toml::from_str(&content) - .map_err(|e| eyre!("Failed to parse config file: {}", e))?; - + let content = + fs::read_to_string(config_path).map_err(|e| eyre!("Failed to read config file: {}", e))?; + + let config: ChainConfig = + toml::from_str(&content).map_err(|e| eyre!("Failed to parse config file: {}", e))?; + info!("Loaded config from {:?}", config_path); Ok(Some(config)) } @@ -146,17 +142,25 @@ fn load_config(config_path: &PathBuf) -> Result> { fn load_bytecode(bytecode_path: &str) -> Result { let content = fs::read_to_string(bytecode_path) .map_err(|e| eyre!("Failed to read bytecode file {}: {}", bytecode_path, e))?; - + // Try to parse as JSON first (Foundry artifact format) if let Ok(json) = serde_json::from_str::(&content) { - if let Some(bytecode) = json.get("bytecode").and_then(|b| b.get("object")).and_then(|o| o.as_str()) { + if let Some(bytecode) = json + .get("bytecode") + .and_then(|b| b.get("object")) + .and_then(|o| o.as_str()) + { return Ok(bytecode.to_string()); } - if let Some(bytecode) = json.get("deployedBytecode").and_then(|b| b.get("object")).and_then(|o| o.as_str()) { + if let Some(bytecode) = json + .get("deployedBytecode") + .and_then(|b| b.get("object")) + .and_then(|o| o.as_str()) + { return Ok(bytecode.to_string()); } } - + // Otherwise treat as raw hex Ok(content.trim().to_string()) } @@ -332,7 +336,7 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig) -> Result<()> { for (slot, value) in &contract.storage { let normalized_slot = normalize_slot(slot); let hex_value = value.to_hex_string(); - + let request_body = serde_json::json!({ "jsonrpc": "2.0", "method": "anvil_setStorageAt", @@ -346,7 +350,10 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig) -> Result<()> { .await? .json() .await?; - debug!("Set storage slot {} for {} to {}", slot, contract.address, hex_value); + debug!( + "Set storage slot {} for {} to {}", + slot, contract.address, hex_value + ); } } @@ -403,7 +410,7 @@ pub async fn start_chain_with_config( // Always try to load default config let default_config = load_config(&PathBuf::from(DEFAULT_CONFIG_PATH))?; - + // Load custom config if provided let custom_config = if let Some(path) = custom_config_path { load_config(&path)? @@ -416,11 +423,11 @@ pub async fn start_chain_with_config( if !check_dot_os_tba(port).await? { predeploy_contracts(port).await?; initialize_contracts(port).await?; - + if let Some(config) = default_config { apply_config_contracts(port, &config).await?; } - + if let Some(config) = custom_config { apply_config_contracts(port, &config).await?; } @@ -569,7 +576,12 @@ async fn predeploy_contracts(port: u16) -> Result<()> { /// kit chain, alias to anvil #[instrument(level = "trace", skip_all)] -pub async fn execute(port: u16, verbose: bool, tracing: bool, custom_config_path: Option) -> Result<()> { +pub async fn execute( + port: u16, + verbose: bool, + tracing: bool, + custom_config_path: Option, +) -> Result<()> { let (send_to_cleanup, mut recv_in_cleanup) = tokio::sync::mpsc::unbounded_channel(); let (send_to_kill, _recv_kill) = tokio::sync::broadcast::channel(1); let recv_kill_in_cos = send_to_kill.subscribe(); @@ -577,7 +589,14 @@ pub async fn execute(port: u16, verbose: bool, tracing: bool, custom_config_path let handle_signals = tokio::spawn(cleanup_on_signal(send_to_cleanup.clone(), recv_kill_in_cos)); let recv_kill_in_start_chain = send_to_kill.subscribe(); - let child = start_chain_with_config(port, recv_kill_in_start_chain, verbose, tracing, custom_config_path).await?; + let child = start_chain_with_config( + port, + recv_kill_in_start_chain, + verbose, + tracing, + custom_config_path, + ) + .await?; let Some(mut child) = child else { return Err(eyre!( "Port {} is already in use by another anvil process", @@ -599,4 +618,4 @@ pub async fn execute(port: u16, verbose: bool, tracing: bool, custom_config_path let _ = send_to_kill.send(true); Ok(()) -} \ No newline at end of file +} From 782f6f0be4ec7d9fa167ceed44d4b5a7b6b0248b Mon Sep 17 00:00:00 2001 From: Pax G Date: Thu, 23 Oct 2025 08:14:53 -0700 Subject: [PATCH 03/52] draft poc --- Contracts.toml | 55 +- contracts/HyperAccount.json | 1 + contracts/HyperAccount9CharCommitMinter.json | 46365 ++++++++++++++++ contracts/HyperAccountMinter.json | 40919 ++++++++++++++ contracts/HyperAccountPermissionedMinter.json | 45999 +++++++++++++++ src/chain/mod.rs | 846 +- 6 files changed, 134012 insertions(+), 173 deletions(-) create mode 100644 contracts/HyperAccount.json create mode 100644 contracts/HyperAccount9CharCommitMinter.json create mode 100644 contracts/HyperAccountMinter.json create mode 100644 contracts/HyperAccountPermissionedMinter.json diff --git a/Contracts.toml b/Contracts.toml index 1e91bf3c..1b65bec3 100644 --- a/Contracts.toml +++ b/Contracts.toml @@ -9,23 +9,56 @@ address = "0xcA11bde05977b3631167028862bE2a173976CA11" bytecode = "0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033" [[contracts]] -name = "hypermap-impl" -address = "0x000000000013a0486EBDc2DB1D7B4d1f7fCA92eD" -bytecode_path = "./contracts/Hypermap.json" - +name = "create2" +address = "0x4e59b44847b379578588920ca78fbf26c0b4956c" +bytecode = "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3" [[contracts]] -name = "hyperaccount" -address = "0x0000000000EDAd72076CBe7b9Cfa3751D5a85C97" -bytecode_path = "./contracts/Hypermap.json" - +name = "hypermap-impl" +contract_json_path = "./contracts/Hypermap.json" +constructor_args = [] ####### HYPERMAP [[contracts]] name = "hypermap-proxy" address = "0x000000000044C6B8Cb4d8f0F889a3E47664EAeda" -bytecode_path = "./contracts/ERC1967Proxy.json" +deployed_bytecode_path = "./contracts/ERC1967Proxy.json" [contracts.storage] -"0" = "0x000000000000000000000000000000000044C6B8Cb4d8f0F889a3E47664EAeda" -"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" = "0x000000000000000000000000000000000013a0486EBDc2DB1D7B4d1f7fCA92eD" +"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" = "#hypermap-impl" ####### + +[[contracts]] +name = "hyperaccount" +contract_json_path = "./contracts/HyperAccount.json" +constructor_args = [ + { type = "address", value = "#hypermap-proxy" } +] + +[[contracts]] +name = "hyperaccount-minter" +contract_json_path = "./contracts/HyperAccountMinter.json" +constructor_args = [ + { type = "address", value = "#hypermap-proxy" } +] + +[[contracts]] +name = "hyperaccount-9char-commit-minter" +contract_json_path = "./contracts/HyperAccount9CharCommitMinter.json" +constructor_args = [ + { type = "address", value = "#hypermap-proxy" } +] + +[[contracts]] +name = "hyperaccount-permissioned-minter" +contract_json_path = "./contracts/HyperAccountPermissionedMinter.json" +constructor_args = [ + { type = "address", value = "#hypermap-proxy" } +] + +[[transaction]] +name = "initialize-hypermap" +target = "#hypermap-proxy" +function_signature = "initialize(address)" +args = [ + { type = "address", value = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" } +] diff --git a/contracts/HyperAccount.json b/contracts/HyperAccount.json new file mode 100644 index 00000000..49c13260 --- /dev/null +++ b/contracts/HyperAccount.json @@ -0,0 +1 @@ +{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"SIG_VALIDATION_FAILED","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"SIG_VALIDATION_SUCCEEDED","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"entryPoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IEntryPoint"}],"stateMutability":"view"},{"type":"function","name":"execute","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"uint8"}],"outputs":[{"name":"returnData","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"execute","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execute","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"},{"name":"operation","type":"uint8","internalType":"uint8"},{"name":"txGas","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"returnData","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"executeBatch","inputs":[{"name":"calls","type":"tuple[]","internalType":"struct BaseAccount.Call[]","components":[{"name":"target","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getNonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"signer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isValidSignature","inputs":[{"name":"hash","type":"bytes32","internalType":"bytes32"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"isValidSigner","inputs":[{"name":"signer","type":"address","internalType":"address"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"magicValue","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"onERC1155BatchReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"uint256[]","internalType":"uint256[]"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"onERC1155Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"onERC721Received","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"receivedTokenId","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"state","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"chainId","type":"uint256","internalType":"uint256"},{"name":"tokenContract","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"tokensReceived","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"},{"name":"","type":"uint256","internalType":"uint256"},{"name":"","type":"bytes","internalType":"bytes"},{"name":"","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"validateUserOp","inputs":[{"name":"userOp","type":"tuple","internalType":"struct PackedUserOperation","components":[{"name":"sender","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"initCode","type":"bytes","internalType":"bytes"},{"name":"callData","type":"bytes","internalType":"bytes"},{"name":"accountGasLimits","type":"bytes32","internalType":"bytes32"},{"name":"preVerificationGas","type":"uint256","internalType":"uint256"},{"name":"gasFees","type":"bytes32","internalType":"bytes32"},{"name":"paymasterAndData","type":"bytes","internalType":"bytes"},{"name":"signature","type":"bytes","internalType":"bytes"}]},{"name":"userOpHash","type":"bytes32","internalType":"bytes32"},{"name":"missingAccountFunds","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"validationData","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"ExecuteError","inputs":[{"name":"index","type":"uint256","internalType":"uint256"},{"name":"error","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"NotOperatorOrEntryPoint","inputs":[]},{"type":"error","name":"OwnershipCycle","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f5ffd5b506118788061001c5f395ff3fe608060405260043610610112575f3560e01c80638f41ec5a1161009d578063c19d93fb11610062578063c19d93fb1461031a578063ca3b98bb1461032e578063d087d28814610341578063f23a6e6114610355578063fc0c546a14610381575f5ffd5b80638f41ec5a146102785780639cdf379c1461028c578063b0d691fe1461029f578063b61d27f6146102cd578063bc197c81146102ec575f5ffd5b806319822f7c116100e357806319822f7c146101ce57806334fcd5be146101fb578063519454471461021a578063523e32601461023a5780636d70f7ae14610259575f5ffd5b806223de291461011d57806301ffc9a714610143578063150b7a02146101775780631626ba7e146101af575f5ffd5b3661011957005b5f5ffd5b348015610128575f5ffd5b506101416101373660046110f9565b5050505050505050565b005b34801561014e575f5ffd5b5061016261015d3660046111bb565b6103b8565b60405190151581526020015b60405180910390f35b348015610182575f5ffd5b506101966101913660046111d6565b6103e3565b6040516001600160e01b0319909116815260200161016e565b3480156101ba575f5ffd5b506101966101c9366004611257565b61043d565b3480156101d9575f5ffd5b506101ed6101e8366004611311565b610562565b60405190815260200161016e565b348015610206575f5ffd5b5061014161021536600461139f565b610594565b61022d6102283660046113f2565b610684565b60405161016e919061148b565b348015610245575f5ffd5b5061019661025436600461149d565b6106b0565b348015610264575f5ffd5b506101626102733660046114ed565b6106d5565b348015610283575f5ffd5b506101ed600181565b348015610297575f5ffd5b506101ed5f81565b3480156102aa575f5ffd5b50604051734337084d9e255ff0702461cf8895ce9e3b5ff108815260200161016e565b3480156102d8575f5ffd5b506101416102e7366004611508565b610773565b3480156102f7575f5ffd5b5061019661030636600461155f565b63bc197c8160e01b98975050505050505050565b348015610325575f5ffd5b506101ed6107d2565b61022d61033c3660046115ff565b6108b9565b34801561034c575f5ffd5b506101ed6108f2565b348015610360575f5ffd5b5061019661036f366004611674565b63f23a6e6160e01b9695505050505050565b34801561038c575f5ffd5b5061039561097b565b604080519384526001600160a01b0390921660208401529082015260600161016e565b5f6103c282610991565b806103dd57506001600160e01b03198216636faff5f160e01b145b92915050565b5f5f5f6103ee61097b565b909350915050336001600160a01b03831614801561040b57508086145b156104295760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61045d85602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610528578285830160200161047e826106d5565b15801561049457506001600160a01b0382163014155b156104af57506001600160e01b031994506103dd9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104dd908b9085906004016116ea565b602060405180830381865afa1580156104f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051c9190611702565b955050505050506103dd565b61053761027387838686610a32565b1561054f5750630b135d3f60e11b92506103dd915050565b506001600160e01b031995945050505050565b5f61056b610a5e565b6105758484610ac3565b90506105848460200135610bd0565b61058d82610c19565b9392505050565b61059c610c5e565b805f5b8181101561067e57368484838181106105ba576105ba61171d565b90506020028101906105cc9190611731565b90505f61062a6105df60208401846114ed565b60208401356105f1604086018661174f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610c66565b905080610674578360010361064657610641610c7c565b610674565b826106505f610c8d565b604051635a15467560e01b815260040161066b9291906116ea565b60405180910390fd5b505060010161059f565b50505050565b60605f61069587878787875a610cbe565b92509050806106a657815160208301fd5b5095945050505050565b5f6106ba846106d5565b6106c4575f6106cd565b630291f19360e51b5b949350505050565b5f5f5f6106e061097b565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561072d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107519190611791565b6001600160a01b03161480156106cd57505050506001600160a01b0316151590565b61077b610c5e565b5f6107bc858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610c66565b9050806107cb576107cb610c7c565b5050505050565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610857573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087b91906117ac565b825460405191925061089a918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f6108d6888888888888156108d05788610cbe565b5a610cbe565b92509050806108e757815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610952573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097691906117ac565b905090565b5f5f5f610986610d15565b925092509250909192565b5f6001600160e01b03198216633ce4a3e960e01b14806109c157506001600160e01b031982166301ffc9a760e01b145b806109dc57506001600160e01b031982166306608bdf60e21b145b806109f757506001600160e01b03198216630b135d3f60e11b145b80610a1257506001600160e01b03198216630271189760e51b145b806103dd57506001600160e01b03198216635194544760e01b1492915050565b5f5f5f5f610a4288888888610d21565b925092509250610a528282610de9565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff10814610ac15760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000604482015260640161066b565b565b5f8080610b1184610ad861010088018861174f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ea592505050565b5090925090505f816003811115610b2a57610b2a6117c3565b148015610b3b5750610b3b826106d5565b15610b4a575f925050506103dd565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c9020610b8a81610ad861010089018961174f565b5090935091505f826003811115610ba357610ba36117c3565b148015610bb45750610bb4836106d5565b15610bc4575f93505050506103dd565b50600195945050505050565b6001600160401b038110610c165760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b604482015260640161066b565b50565b8015610c16576040515f90339083908381818185875af1925050503d805f81146107cb576040519150601f19603f3d011682016040523d82523d5f602084013e6107cb565b610ac1610a5e565b5f5f5f845160208601878987f195945050505050565b610ac1610c885f610c8d565b610eee565b60603d8215610ca15782811115610ca15750815b604051602082018101604052818152815f602083013e9392505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f916060918184610cf1836117d7565b9190505550610d04898989898989610ef6565b92509250505b965096945050505050565b5f5f5f6109863061104d565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d5a57505f91506003905082610ddf565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dab573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610dd657505f925060019150829050610ddf565b92505f91508190505b9450945094915050565b5f826003811115610dfc57610dfc6117c3565b03610e05575050565b6001826003811115610e1957610e196117c3565b03610e375760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e4b57610e4b6117c3565b03610e6c5760405163fce698f760e01b81526004810182905260240161066b565b6003826003811115610e8057610e806117c3565b03610ea1576040516335e2f38360e21b81526004810182905260240161066b565b5050565b5f5f5f8351604103610edc576020840151604085015160608601515f1a610ece88828585610d21565b955095509550505050610ee7565b505081515f91506002905b9250925092565b805160208201fd5b5f6060610f02336106d5565b158015610f23575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15610f4157604051634780295360e11b815260040160405180910390fd5b8360ff165f03610fb257876001600160a01b031683888888604051610f679291906117fb565b5f60405180830381858888f193505050503d805f8114610fa2576040519150601f19603f3d011682016040523d82523d5f602084013e610fa7565b606091505b509092509050610d0a565b8360ff1660010361101157876001600160a01b0316838787604051610fd89291906117fb565b5f604051808303818686f4925050503d805f8114610fa2576040519150601f19603f3d011682016040523d82523d5f602084013e610fa7565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b604482015260640161066b565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611093919061180a565b935093509350509193909250565b6001600160a01b0381168114610c16575f5ffd5b5f5f83601f8401126110c5575f5ffd5b5081356001600160401b038111156110db575f5ffd5b6020830191508360208285010111156110f2575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611110575f5ffd5b883561111b816110a1565b9750602089013561112b816110a1565b9650604089013561113b816110a1565b95506060890135945060808901356001600160401b0381111561115c575f5ffd5b6111688b828c016110b5565b90955093505060a08901356001600160401b03811115611186575f5ffd5b6111928b828c016110b5565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610c16575f5ffd5b5f602082840312156111cb575f5ffd5b813561058d816111a6565b5f5f5f5f5f608086880312156111ea575f5ffd5b85356111f5816110a1565b94506020860135611205816110a1565b93506040860135925060608601356001600160401b03811115611226575f5ffd5b611232888289016110b5565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611268575f5ffd5b8235915060208301356001600160401b03811115611284575f5ffd5b8301601f81018513611294575f5ffd5b80356001600160401b038111156112ad576112ad611243565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112db576112db611243565b6040528181528282016020018710156112f2575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215611323575f5ffd5b83356001600160401b03811115611338575f5ffd5b8401610120818703121561134a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261136f575f5ffd5b5081356001600160401b03811115611385575f5ffd5b6020830191508360208260051b85010111156110f2575f5ffd5b5f5f602083850312156113b0575f5ffd5b82356001600160401b038111156113c5575f5ffd5b6113d18582860161135f565b90969095509350505050565b803560ff811681146113ed575f5ffd5b919050565b5f5f5f5f5f60808688031215611406575f5ffd5b8535611411816110a1565b94506020860135935060408601356001600160401b03811115611432575f5ffd5b61143e888289016110b5565b90945092506114519050606087016113dd565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61058d602083018461145d565b5f5f5f604084860312156114af575f5ffd5b83356114ba816110a1565b925060208401356001600160401b038111156114d4575f5ffd5b6114e0868287016110b5565b9497909650939450505050565b5f602082840312156114fd575f5ffd5b813561058d816110a1565b5f5f5f5f6060858703121561151b575f5ffd5b8435611526816110a1565b93506020850135925060408501356001600160401b03811115611547575f5ffd5b611553878288016110b5565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b031215611576575f5ffd5b8835611581816110a1565b97506020890135611591816110a1565b965060408901356001600160401b038111156115ab575f5ffd5b6115b78b828c0161135f565b90975095505060608901356001600160401b038111156115d5575f5ffd5b6115e18b828c0161135f565b90955093505060808901356001600160401b03811115611186575f5ffd5b5f5f5f5f5f5f60a08789031215611614575f5ffd5b863561161f816110a1565b95506020870135945060408701356001600160401b03811115611640575f5ffd5b61164c89828a016110b5565b909550935061165f9050606088016113dd565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a08789031215611689575f5ffd5b8635611694816110a1565b955060208701356116a4816110a1565b9450604087013593506060870135925060808701356001600160401b038111156116cc575f5ffd5b6116d889828a016110b5565b979a9699509497509295939492505050565b828152604060208201525f6106cd604083018461145d565b5f60208284031215611712575f5ffd5b815161058d816111a6565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611745575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611764575f5ffd5b8301803591506001600160401b0382111561177d575f5ffd5b6020019150368190038213156110f2575f5ffd5b5f602082840312156117a1575f5ffd5b815161058d816110a1565b5f602082840312156117bc575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b5f600182016117f457634e487b7160e01b5f52601160045260245ffd5b5060010190565b818382375f9101908152919050565b5f5f5f6060848603121561181c575f5ffd5b8351602085015190935061182f816110a1565b604094909401519295939450919291505056fea264697066735822122026b84c7e0030ace2dad6873636642127a17736dad1010cae2604a26e8c3d668864736f6c634300081c0033","sourceMap":"443:908:166:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610112575f3560e01c80638f41ec5a1161009d578063c19d93fb11610062578063c19d93fb1461031a578063ca3b98bb1461032e578063d087d28814610341578063f23a6e6114610355578063fc0c546a14610381575f5ffd5b80638f41ec5a146102785780639cdf379c1461028c578063b0d691fe1461029f578063b61d27f6146102cd578063bc197c81146102ec575f5ffd5b806319822f7c116100e357806319822f7c146101ce57806334fcd5be146101fb578063519454471461021a578063523e32601461023a5780636d70f7ae14610259575f5ffd5b806223de291461011d57806301ffc9a714610143578063150b7a02146101775780631626ba7e146101af575f5ffd5b3661011957005b5f5ffd5b348015610128575f5ffd5b506101416101373660046110f9565b5050505050505050565b005b34801561014e575f5ffd5b5061016261015d3660046111bb565b6103b8565b60405190151581526020015b60405180910390f35b348015610182575f5ffd5b506101966101913660046111d6565b6103e3565b6040516001600160e01b0319909116815260200161016e565b3480156101ba575f5ffd5b506101966101c9366004611257565b61043d565b3480156101d9575f5ffd5b506101ed6101e8366004611311565b610562565b60405190815260200161016e565b348015610206575f5ffd5b5061014161021536600461139f565b610594565b61022d6102283660046113f2565b610684565b60405161016e919061148b565b348015610245575f5ffd5b5061019661025436600461149d565b6106b0565b348015610264575f5ffd5b506101626102733660046114ed565b6106d5565b348015610283575f5ffd5b506101ed600181565b348015610297575f5ffd5b506101ed5f81565b3480156102aa575f5ffd5b50604051734337084d9e255ff0702461cf8895ce9e3b5ff108815260200161016e565b3480156102d8575f5ffd5b506101416102e7366004611508565b610773565b3480156102f7575f5ffd5b5061019661030636600461155f565b63bc197c8160e01b98975050505050505050565b348015610325575f5ffd5b506101ed6107d2565b61022d61033c3660046115ff565b6108b9565b34801561034c575f5ffd5b506101ed6108f2565b348015610360575f5ffd5b5061019661036f366004611674565b63f23a6e6160e01b9695505050505050565b34801561038c575f5ffd5b5061039561097b565b604080519384526001600160a01b0390921660208401529082015260600161016e565b5f6103c282610991565b806103dd57506001600160e01b03198216636faff5f160e01b145b92915050565b5f5f5f6103ee61097b565b909350915050336001600160a01b03831614801561040b57508086145b156104295760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61045d85602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610528578285830160200161047e826106d5565b15801561049457506001600160a01b0382163014155b156104af57506001600160e01b031994506103dd9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104dd908b9085906004016116ea565b602060405180830381865afa1580156104f8573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061051c9190611702565b955050505050506103dd565b61053761027387838686610a32565b1561054f5750630b135d3f60e11b92506103dd915050565b506001600160e01b031995945050505050565b5f61056b610a5e565b6105758484610ac3565b90506105848460200135610bd0565b61058d82610c19565b9392505050565b61059c610c5e565b805f5b8181101561067e57368484838181106105ba576105ba61171d565b90506020028101906105cc9190611731565b90505f61062a6105df60208401846114ed565b60208401356105f1604086018661174f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610c66565b905080610674578360010361064657610641610c7c565b610674565b826106505f610c8d565b604051635a15467560e01b815260040161066b9291906116ea565b60405180910390fd5b505060010161059f565b50505050565b60605f61069587878787875a610cbe565b92509050806106a657815160208301fd5b5095945050505050565b5f6106ba846106d5565b6106c4575f6106cd565b630291f19360e51b5b949350505050565b5f5f5f6106e061097b565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561072d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107519190611791565b6001600160a01b03161480156106cd57505050506001600160a01b0316151590565b61077b610c5e565b5f6107bc858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610c66565b9050806107cb576107cb610c7c565b5050505050565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610857573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087b91906117ac565b825460405191925061089a918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f6108d6888888888888156108d05788610cbe565b5a610cbe565b92509050806108e757815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610952573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097691906117ac565b905090565b5f5f5f610986610d15565b925092509250909192565b5f6001600160e01b03198216633ce4a3e960e01b14806109c157506001600160e01b031982166301ffc9a760e01b145b806109dc57506001600160e01b031982166306608bdf60e21b145b806109f757506001600160e01b03198216630b135d3f60e11b145b80610a1257506001600160e01b03198216630271189760e51b145b806103dd57506001600160e01b03198216635194544760e01b1492915050565b5f5f5f5f610a4288888888610d21565b925092509250610a528282610de9565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff10814610ac15760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000604482015260640161066b565b565b5f8080610b1184610ad861010088018861174f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ea592505050565b5090925090505f816003811115610b2a57610b2a6117c3565b148015610b3b5750610b3b826106d5565b15610b4a575f925050506103dd565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c9020610b8a81610ad861010089018961174f565b5090935091505f826003811115610ba357610ba36117c3565b148015610bb45750610bb4836106d5565b15610bc4575f93505050506103dd565b50600195945050505050565b6001600160401b038110610c165760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b604482015260640161066b565b50565b8015610c16576040515f90339083908381818185875af1925050503d805f81146107cb576040519150601f19603f3d011682016040523d82523d5f602084013e6107cb565b610ac1610a5e565b5f5f5f845160208601878987f195945050505050565b610ac1610c885f610c8d565b610eee565b60603d8215610ca15782811115610ca15750815b604051602082018101604052818152815f602083013e9392505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f916060918184610cf1836117d7565b9190505550610d04898989898989610ef6565b92509250505b965096945050505050565b5f5f5f6109863061104d565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d5a57505f91506003905082610ddf565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dab573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116610dd657505f925060019150829050610ddf565b92505f91508190505b9450945094915050565b5f826003811115610dfc57610dfc6117c3565b03610e05575050565b6001826003811115610e1957610e196117c3565b03610e375760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e4b57610e4b6117c3565b03610e6c5760405163fce698f760e01b81526004810182905260240161066b565b6003826003811115610e8057610e806117c3565b03610ea1576040516335e2f38360e21b81526004810182905260240161066b565b5050565b5f5f5f8351604103610edc576020840151604085015160608601515f1a610ece88828585610d21565b955095509550505050610ee7565b505081515f91506002905b9250925092565b805160208201fd5b5f6060610f02336106d5565b158015610f23575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15610f4157604051634780295360e11b815260040160405180910390fd5b8360ff165f03610fb257876001600160a01b031683888888604051610f679291906117fb565b5f60405180830381858888f193505050503d805f8114610fa2576040519150601f19603f3d011682016040523d82523d5f602084013e610fa7565b606091505b509092509050610d0a565b8360ff1660010361101157876001600160a01b0316838787604051610fd89291906117fb565b5f604051808303818686f4925050503d805f8114610fa2576040519150601f19603f3d011682016040523d82523d5f602084013e610fa7565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b604482015260640161066b565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611093919061180a565b935093509350509193909250565b6001600160a01b0381168114610c16575f5ffd5b5f5f83601f8401126110c5575f5ffd5b5081356001600160401b038111156110db575f5ffd5b6020830191508360208285010111156110f2575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611110575f5ffd5b883561111b816110a1565b9750602089013561112b816110a1565b9650604089013561113b816110a1565b95506060890135945060808901356001600160401b0381111561115c575f5ffd5b6111688b828c016110b5565b90955093505060a08901356001600160401b03811115611186575f5ffd5b6111928b828c016110b5565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610c16575f5ffd5b5f602082840312156111cb575f5ffd5b813561058d816111a6565b5f5f5f5f5f608086880312156111ea575f5ffd5b85356111f5816110a1565b94506020860135611205816110a1565b93506040860135925060608601356001600160401b03811115611226575f5ffd5b611232888289016110b5565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611268575f5ffd5b8235915060208301356001600160401b03811115611284575f5ffd5b8301601f81018513611294575f5ffd5b80356001600160401b038111156112ad576112ad611243565b604051601f8201601f19908116603f011681016001600160401b03811182821017156112db576112db611243565b6040528181528282016020018710156112f2575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215611323575f5ffd5b83356001600160401b03811115611338575f5ffd5b8401610120818703121561134a575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f84011261136f575f5ffd5b5081356001600160401b03811115611385575f5ffd5b6020830191508360208260051b85010111156110f2575f5ffd5b5f5f602083850312156113b0575f5ffd5b82356001600160401b038111156113c5575f5ffd5b6113d18582860161135f565b90969095509350505050565b803560ff811681146113ed575f5ffd5b919050565b5f5f5f5f5f60808688031215611406575f5ffd5b8535611411816110a1565b94506020860135935060408601356001600160401b03811115611432575f5ffd5b61143e888289016110b5565b90945092506114519050606087016113dd565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61058d602083018461145d565b5f5f5f604084860312156114af575f5ffd5b83356114ba816110a1565b925060208401356001600160401b038111156114d4575f5ffd5b6114e0868287016110b5565b9497909650939450505050565b5f602082840312156114fd575f5ffd5b813561058d816110a1565b5f5f5f5f6060858703121561151b575f5ffd5b8435611526816110a1565b93506020850135925060408501356001600160401b03811115611547575f5ffd5b611553878288016110b5565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b031215611576575f5ffd5b8835611581816110a1565b97506020890135611591816110a1565b965060408901356001600160401b038111156115ab575f5ffd5b6115b78b828c0161135f565b90975095505060608901356001600160401b038111156115d5575f5ffd5b6115e18b828c0161135f565b90955093505060808901356001600160401b03811115611186575f5ffd5b5f5f5f5f5f5f60a08789031215611614575f5ffd5b863561161f816110a1565b95506020870135945060408701356001600160401b03811115611640575f5ffd5b61164c89828a016110b5565b909550935061165f9050606088016113dd565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a08789031215611689575f5ffd5b8635611694816110a1565b955060208701356116a4816110a1565b9450604087013593506060870135925060808701356001600160401b038111156116cc575f5ffd5b6116d889828a016110b5565b979a9699509497509295939492505050565b828152604060208201525f6106cd604083018461145d565b5f60208284031215611712575f5ffd5b815161058d816111a6565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112611745575f5ffd5b9190910192915050565b5f5f8335601e19843603018112611764575f5ffd5b8301803591506001600160401b0382111561177d575f5ffd5b6020019150368190038213156110f2575f5ffd5b5f602082840312156117a1575f5ffd5b815161058d816110a1565b5f602082840312156117bc575f5ffd5b5051919050565b634e487b7160e01b5f52602160045260245ffd5b5f600182016117f457634e487b7160e01b5f52601160045260245ffd5b5060010190565b818382375f9101908152919050565b5f5f5f6060848603121561181c575f5ffd5b8351602085015190935061182f816110a1565b604094909401519295939450919291505056fea264697066735822122026b84c7e0030ace2dad6873636642127a17736dad1010cae2604a26e8c3d668864736f6c634300081c0033","sourceMap":"443:908:166:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:187:182;;;;;;;;;;-1:-1:-1;1416:187:182;;;;;:::i;:::-;;;;;;;;;;;;3732:203:183;;;;;;;;;;-1:-1:-1;3732:203:183;;;;;:::i;:::-;;:::i;:::-;;;2310:14:262;;2303:22;2285:41;;2273:2;2258:18;3732:203:183;;;;;;;;591:419:180;;;;;;;;;;-1:-1:-1;591:419:180;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;3310:33:262;;;3292:52;;3280:2;3265:18;591:419:180;3148:202:262;2199:1425:181;;;;;;;;;;-1:-1:-1;2199:1425:181;;;;;:::i;:::-;;:::i;2487:385:110:-;;;;;;;;;;-1:-1:-1;2487:385:110;;;;;:::i;:::-;;:::i;:::-;;;5335:25:262;;;5323:2;5308:18;2487:385:110;5189:177:262;1887:565:110;;;;;;;;;;-1:-1:-1;1887:565:110;;;;;:::i;:::-;;:::i;5779:481:181:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2999:192:183:-;;;;;;;;;;-1:-1:-1;2999:192:183;;;;;:::i;:::-;;:::i;346:239:180:-;;;;;;;;;;-1:-1:-1;346:239:180;;;;;:::i;:::-;;:::i;737:49:179:-;;;;;;;;;;;;785:1;737:49;;679:52;;;;;;;;;;;;730:1;679:52;;1043:108;;;;;;;;;;-1:-1:-1;1043:108:179;;961:42;8620:51:262;;8608:2;8593:18;1043:108:179;8453:224:262;1383:255:110;;;;;;;;;;-1:-1:-1;1383:255:110;;;;;:::i;:::-;;:::i;931:258:182:-;;;;;;;;;;-1:-1:-1;931:258:182;;;;;:::i;:::-;-1:-1:-1;;;931:258:182;;;;;;;;;;;2128:357:183;;;;;;;;;;;;;:::i;4927:515:181:-;;;;;;:::i;:::-;;:::i;981:121:110:-;;;;;;;;;;;;;:::i;699:226:182:-;;;;;;;;;;-1:-1:-1;699:226:182;;;;;:::i;:::-;-1:-1:-1;;;699:226:182;;;;;;;;;2491:144:183;;;;;;;;;;;;;:::i;:::-;;;;12726:25:262;;;-1:-1:-1;;;;;12787:32:262;;;12782:2;12767:18;;12760:60;12836:18;;;12829:34;12714:2;12699:18;2491:144:183;12524:345:262;3732:203:183;3817:4;3840:36;3864:11;3840:23;:36::i;:::-;:88;;;-1:-1:-1;;;;;;;3880:48:183;;-1:-1:-1;;;3880:48:183;3840:88;3833:95;3732:203;-1:-1:-1;;3732:203:183:o;591:419:180:-;740:6;765:26;793:20;817:7;:5;:7::i;:::-;762:62;;-1:-1:-1;762:62:180;-1:-1:-1;;839:10:180;-1:-1:-1;;;;;839:32:180;;;:67;;;;;894:12;875:15;:31;839:67;835:121;;;929:16;;-1:-1:-1;;;929:16:180;;;;;;;;;;;835:121;-1:-1:-1;;;;973:30:180;591:419;-1:-1:-1;;;;;;;591:419:180:o;2199:1425:181:-;2360:17;2393:9;2412;2431:7;2460:26;2476:9;6792:4;6777:20;;6771:27;6837:4;6822:20;;6816:27;6890:4;6875:20;;;6869:27;6472:7;6861:36;;6771:27;;6816;6400:513;2460:26;2448:38;;-1:-1:-1;2448:38:181;-1:-1:-1;2448:38:181;-1:-1:-1;2501:6:181;;;2506:1;2501:6;2497:1093;;2688:1;3011:17;;;3030:4;3007:28;3200:27;2688:1;3200:10;:27::i;:::-;3199:28;:64;;;;-1:-1:-1;;;;;;3231:32:181;;3258:4;3231:32;;3199:64;3195:120;;;-1:-1:-1;;;;;;;3283:17:181;-1:-1:-1;3283:17:181;;-1:-1:-1;;;;3283:17:181;3195:120;3336:67;;-1:-1:-1;;;3336:67:181;;-1:-1:-1;;;;;3336:42:181;;;;;:67;;3379:4;;3385:17;;3336:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3329:74;;;;;;;;;2497:1093;3480:40;3491:28;3505:4;3511:1;3514;3517;3491:13;:28::i;3480:40::-;3476:104;;;-1:-1:-1;;;;3547:18:181;-1:-1:-1;3540:25:181;;-1:-1:-1;;3540:25:181;3476:104;-1:-1:-1;;;;;;;3600:17:181;2199:1425;-1:-1:-1;;;;;2199:1425:181:o;2487:385:110:-;2662:22;2696:24;:22;:24::i;:::-;2747:38;2766:6;2774:10;2747:18;:38::i;:::-;2730:55;;2795:28;2810:6;:12;;;2795:14;:28::i;:::-;2833:32;2845:19;2833:11;:32::i;:::-;2487:385;;;;;:::o;1887:565::-;1959:20;:18;:20::i;:::-;2012:5;1990:19;2034:412;2058:11;2054:1;:15;2034:412;;;2090:18;2111:5;;2117:1;2111:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2090:29;-1:-1:-1;2133:7:110;2143:56;2153:11;;;;2090:29;2153:11;:::i;:::-;2166:10;;;;2178:9;;;;2166:4;2178:9;:::i;:::-;2143:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2189:9:110;2143;:56::i;:::-;2133:66;;2218:2;2213:223;;2244:11;2259:1;2244:16;2240:182;;2284:27;:25;:27::i;:::-;2240:182;;;2378:1;2381:21;2400:1;2381:18;:21::i;:::-;2365:38;;-1:-1:-1;;;2365:38:110;;;;;;;;;:::i;:::-;;;;;;;;2240:182;-1:-1:-1;;2071:3:110;;2034:412;;;;1949:503;1887:565;;:::o;5779:481:181:-;5911:23;5950:12;5996:44;6002:2;6006:5;6013:4;;6019:9;6030;5996:5;:44::i;:::-;5972:68;-1:-1:-1;5972:68:181;-1:-1:-1;5972:68:181;6051:203;;6218:10;6212:17;6205:4;6193:10;6189:21;6182:48;6051:203;5940:320;5779:481;;;;;;;:::o;2999:192:183:-;3077:17;3113:18;3124:6;3113:10;:18::i;:::-;:71;;3182:1;3113:71;;;-1:-1:-1;;;3113:71:183;3106:78;2999:192;-1:-1:-1;;;;2999:192:183:o;346:239:180:-;420:4;439:21;462:15;481:7;:5;:7::i;:::-;505:39;;-1:-1:-1;;;505:39:180;;;;;5335:25:262;;;436:52:180;;-1:-1:-1;436:52:180;-1:-1:-1;;;;;;505:49:180;;;;-1:-1:-1;505:30:180;;;;;5308:18:262;;505:39:180;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;505:49:180;;:73;;;;-1:-1:-1;;;;;;;;;558:20:180;;;;346:239::o;1383:255:110:-;1479:20;:18;:20::i;:::-;1510:7;1520:41;1530:6;1538:5;1545:4;;1520:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1551:9:110;1520;:41::i;:::-;1510:51;;1576:2;1571:61;;1594:27;:25;:27::i;:::-;1469:169;1383:255;;;;:::o;2128:357:183:-;2168:7;;1108:25;2187:61;-1:-1:-1;2331:23:183;961:42:179;2357:39:183;;-1:-1:-1;;;2357:39:183;;2387:4;2357:39;;;15137:51:262;2394:1:183;15204:18:262;;;15197:60;-1:-1:-1;;;;;2357:21:183;;;;;;;15110:18:262;;2357:39:183;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2443:14;;2432:43;;2331:65;;-1:-1:-1;2432:43:183;;2331:65;;2432:43;;15677:25:262;;;15733:2;15718:18;;15711:34;15665:2;15650:18;;15503:248;2432:43:183;;;;;;;;;;;;;2422:54;;;;;;2414:63;;2406:72;;;;2128:357;:::o;4927:515:181:-;5072:23;5111:12;5157:65;5163:2;5167:5;5174:4;;5180:9;5191:10;;:30;;5216:5;5157;:65::i;5191:30::-;5204:9;5157:5;:65::i;:::-;5133:89;-1:-1:-1;5133:89:181;-1:-1:-1;5133:89:181;5233:203;;5400:10;5394:17;5387:4;5375:10;5371:21;5364:48;5233:203;5101:341;4927:515;;;;;;;;:::o;981:121:110:-;1030:7;961:42:179;1056:39:110;;-1:-1:-1;;;1056:39:110;;1086:4;1056:39;;;15137:51:262;1093:1:110;15204:18:262;;;15197:60;-1:-1:-1;;;;;1056:21:110;;;;;;;15110:18:262;;1056:39:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1049:46;;981:121;:::o;2491:144:183:-;2529:15;2546:21;2569:15;2603:25;:23;:25::i;:::-;2596:32;;;;;;2491:144;;;:::o;7049:410:181:-;7125:4;-1:-1:-1;;;;;;7148:38:181;;-1:-1:-1;;;7148:38:181;;:82;;-1:-1:-1;;;;;;;7190:40:181;;-1:-1:-1;;;7190:40:181;7148:82;:139;;;-1:-1:-1;;;;;;;7246:41:181;;-1:-1:-1;;;7246:41:181;7148:139;:184;;;-1:-1:-1;;;;;;;7291:41:181;;-1:-1:-1;;;7291:41:181;7148:184;:249;;;-1:-1:-1;;;;;;;7348:49:181;;-1:-1:-1;;;7348:49:181;7148:249;:304;;;-1:-1:-1;;;;;;;7401:51:181;;-1:-1:-1;;;7401:51:181;7141:311;7049:410;-1:-1:-1;;7049:410:181:o;6887:260:68:-;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:68;;6887:260;-1:-1:-1;;;;;;6887:260:68:o;2953:183:110:-;3040:10;961:42:179;3040:35:110;3019:110;;;;-1:-1:-1;;;3019:110:110;;15958:2:262;3019:110:110;;;15940:21:262;15997:2;15977:18;;;15970:30;16036;16016:18;;;16009:58;16084:18;;3019:110:110;15756:352:262;3019:110:110;2953:183::o;525:824:166:-;677:22;;;770:46;787:10;799:16;;;;:6;:16;:::i;:::-;770:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;770:16:166;;-1:-1:-1;;;770:46:166:i;:::-;-1:-1:-1;715:101:166;;-1:-1:-1;715:101:166;-1:-1:-1;840:26:166;831:5;:35;;;;;;;;:::i;:::-;;:66;;;;;870:27;881:15;870:10;:27::i;:::-;827:128;;;730:1:179;913:31:166;;;;;;827:128;1376:34:72;1021:12:166;1363:48:72;;;1472:4;1465:25;;;1570:4;1554:21;;1125:40:166;1554:21:72;1148:16:166;;;;;;:::i;1125:40::-;-1:-1:-1;1097:68:166;;-1:-1:-1;1097:68:166;-1:-1:-1;1189:26:166;1180:5;:35;;;;;;;;:::i;:::-;;:66;;;;;1219:27;1230:15;1219:10;:27::i;:::-;1176:128;;;730:1:179;1262:31:166;;;;;;;1176:128;-1:-1:-1;785:1:179;;525:824:166;-1:-1:-1;;;;;525:824:166:o;1189:319:179:-;-1:-1:-1;;;;;1459:24:179;;1451:50;;;;-1:-1:-1;;;1451:50:179;;16447:2:262;1451:50:179;;;16429:21:262;16486:2;16466:18;;;16459:30;-1:-1:-1;;;16505:18:262;;;16498:43;16558:18;;1451:50:179;16245:337:262;1451:50:179;1189:319;:::o;5811:350:110:-;5892:24;;5888:267;;5950:94;;5933:12;;5958:10;;6003:19;;5933:12;5950:94;5933:12;5950:94;6003:19;5958:10;5950:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3142:93;3204:24;:22;:24::i;213:279:128:-;344:12;474:1;471;464:4;458:11;451:4;445;441:15;434:5;430:2;423:5;418:58;407:69;213:279;-1:-1:-1;;;;;213:279:128:o;1988:95::-;2044:32;2059:16;2073:1;2059:13;:16::i;:::-;2044:14;:32::i;1176:508::-;1238:23;1323:16;1355:12;;1352:120;;1397:6;1392:3;1389:15;1386:72;;;-1:-1:-1;1434:6:128;1386:72;1502:4;1496:11;1551:4;1546:3;1542:14;1537:3;1533:24;1527:4;1520:38;1583:3;1578;1571:16;1634:3;1631:1;1624:4;1619:3;1615:14;1600:38;1665:3;1176:508;-1:-1:-1;;;1176:508:128:o;3263:463:183:-;1108:25;3601:16;;3425:12;;3439:23;;1108:25;3425:12;3601:16;;;:::i;:::-;;;;;;3673:46;3685:2;3689:5;3696:4;;3702:9;3713:5;3673:11;:46::i;:::-;3666:53;;;;;3263:463;;;;;;;;;;:::o;2191:111:105:-;2231:7;2240;2249;2275:20;2289:4;2275:5;:20::i;5203:1551:68:-;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:68;;-1:-1:-1;6385:30:68;;-1:-1:-1;6417:1:68;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;17261:25:262;;;17334:4;17322:17;;17302:18;;;17295:45;;;;17356:18;;;17349:34;;;17399:18;;;17392:34;;;6541:24:68;;17233:19:262;;6541:24:68;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:68;;-1:-1:-1;;6541:24:68;;;-1:-1:-1;;;;;;;6579:20:68;;6575:113;;-1:-1:-1;6631:1:68;;-1:-1:-1;6635:29:68;;-1:-1:-1;6631:1:68;;-1:-1:-1;6615:62:68;;6575:113;6706:6;-1:-1:-1;6714:20:68;;-1:-1:-1;6714:20:68;;-1:-1:-1;5203:1551:68;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:68;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:68;;;;;5335:25:262;;;5308:18;;7634:46:68;5189:177:262;7563:243:68;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:68;;;;;5335:25:262;;;5308:18;;7763:32:68;5189:177:262;7697:109:68;7280:532;;:::o;2129:778::-;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:68;;2823:1;;-1:-1:-1;2827:35:68;;2295:606;2129:778;;;;;:::o;1764:174:128:-;1910:10;1904:17;1899:2;1887:10;1883:19;1876:46;3995:499:181;4161:12;4175:23;1240:22;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:181;961:42:179;1266:35:181;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:181;;;;;;;;;;;1235:125;4218:9:::1;:14;;4231:1;4218:14:::0;4214:274:::1;;4272:2;-1:-1:-1::0;;;;;4272:7:181::1;4285:5;4299;4306:4;;4272:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;4248:63:181;;-1:-1:-1;4248:63:181;-1:-1:-1;4214:274:181::1;;;4332:9;:14;;4345:1;4332:14:::0;4328:160:::1;;4386:2;-1:-1:-1::0;;;;;4386:15:181::1;4407:5;4414:4;;4386:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4328:160;4450:27;::::0;-1:-1:-1;;;4450:27:181;;18097:2:262;4450:27:181::1;::::0;::::1;18079:21:262::0;18136:2;18116:18;;;18109:30;-1:-1:-1;;;18155:18:262;;;18148:47;18212:18;;4450:27:181::1;17895:341:262::0;1824:361:105;1943:15;;;1953:4;1943:15;;;;;;;;;1879:7;;;;;;;;1943:15;;;;;;;;;;;-1:-1:-1;1943:15:105;1916:42;;2094:4;2088;2081;2068:11;2064:22;2055:7;2043:56;2137:11;2126:52;;;;;;;;;;;;:::i;:::-;2119:59;;;;;;;1824:361;;;;;:::o;14:131:262:-;-1:-1:-1;;;;;89:31:262;;79:42;;69:70;;135:1;132;125:12;150:347;201:8;211:6;265:3;258:4;250:6;246:17;242:27;232:55;;283:1;280;273:12;232:55;-1:-1:-1;306:20:262;;-1:-1:-1;;;;;338:30:262;;335:50;;;381:1;378;371:12;335:50;418:4;410:6;406:17;394:29;;470:3;463:4;454:6;446;442:19;438:30;435:39;432:59;;;487:1;484;477:12;432:59;150:347;;;;;:::o;502:1252::-;628:6;636;644;652;660;668;676;684;737:3;725:9;716:7;712:23;708:33;705:53;;;754:1;751;744:12;705:53;793:9;780:23;812:31;837:5;812:31;:::i;:::-;862:5;-1:-1:-1;919:2:262;904:18;;891:32;932:33;891:32;932:33;:::i;:::-;984:7;-1:-1:-1;1043:2:262;1028:18;;1015:32;1056:33;1015:32;1056:33;:::i;:::-;1108:7;-1:-1:-1;1188:2:262;1173:18;;1160:32;;-1:-1:-1;1269:3:262;1254:19;;1241:33;-1:-1:-1;;;;;1286:30:262;;1283:50;;;1329:1;1326;1319:12;1283:50;1368:58;1418:7;1409:6;1398:9;1394:22;1368:58;:::i;:::-;1445:8;;-1:-1:-1;1342:84:262;-1:-1:-1;;1533:3:262;1518:19;;1505:33;-1:-1:-1;;;;;1550:32:262;;1547:52;;;1595:1;1592;1585:12;1547:52;1634:60;1686:7;1675:8;1664:9;1660:24;1634:60;:::i;:::-;502:1252;;;;-1:-1:-1;502:1252:262;;-1:-1:-1;502:1252:262;;;;;;1713:8;-1:-1:-1;;;502:1252:262:o;1759:131::-;-1:-1:-1;;;;;;1833:32:262;;1823:43;;1813:71;;1880:1;1877;1870:12;1895:245;1953:6;2006:2;1994:9;1985:7;1981:23;1977:32;1974:52;;;2022:1;2019;2012:12;1974:52;2061:9;2048:23;2080:30;2104:5;2080:30;:::i;2337:806::-;2434:6;2442;2450;2458;2466;2519:3;2507:9;2498:7;2494:23;2490:33;2487:53;;;2536:1;2533;2526:12;2487:53;2575:9;2562:23;2594:31;2619:5;2594:31;:::i;:::-;2644:5;-1:-1:-1;2701:2:262;2686:18;;2673:32;2714:33;2673:32;2714:33;:::i;:::-;2766:7;-1:-1:-1;2846:2:262;2831:18;;2818:32;;-1:-1:-1;2927:2:262;2912:18;;2899:32;-1:-1:-1;;;;;2943:30:262;;2940:50;;;2986:1;2983;2976:12;2940:50;3025:58;3075:7;3066:6;3055:9;3051:22;3025:58;:::i;:::-;2337:806;;;;-1:-1:-1;2337:806:262;;-1:-1:-1;3102:8:262;;2999:84;2337:806;-1:-1:-1;;;2337:806:262:o;3355:127::-;3416:10;3411:3;3407:20;3404:1;3397:31;3447:4;3444:1;3437:15;3471:4;3468:1;3461:15;3487:1058;3564:6;3572;3625:2;3613:9;3604:7;3600:23;3596:32;3593:52;;;3641:1;3638;3631:12;3593:52;3686:23;;;-1:-1:-1;3784:2:262;3769:18;;3756:32;-1:-1:-1;;;;;3800:30:262;;3797:50;;;3843:1;3840;3833:12;3797:50;3866:22;;3919:4;3911:13;;3907:27;-1:-1:-1;3897:55:262;;3948:1;3945;3938:12;3897:55;3988:2;3975:16;-1:-1:-1;;;;;4006:6:262;4003:30;4000:56;;;4036:18;;:::i;:::-;4085:2;4079:9;4177:2;4139:17;;-1:-1:-1;;4135:31:262;;;4168:2;4131:40;4127:54;4115:67;;-1:-1:-1;;;;;4197:34:262;;4233:22;;;4194:62;4191:88;;;4259:18;;:::i;:::-;4295:2;4288:22;4319;;;4360:15;;;4377:2;4356:24;4353:37;-1:-1:-1;4350:57:262;;;4403:1;4400;4393:12;4350:57;4459:6;4454:2;4450;4446:11;4441:2;4433:6;4429:15;4416:50;4512:1;4507:2;4498:6;4490;4486:19;4482:28;4475:39;4533:6;4523:16;;;;;3487:1058;;;;;:::o;4550:634::-;4667:6;4675;4683;4736:2;4724:9;4715:7;4711:23;4707:32;4704:52;;;4752:1;4749;4742:12;4704:52;4792:9;4779:23;-1:-1:-1;;;;;4817:6:262;4814:30;4811:50;;;4857:1;4854;4847:12;4811:50;4880:22;;4936:3;4918:16;;;4914:26;4911:46;;;4953:1;4950;4943:12;4911:46;4976:2;5047;5032:18;;5019:32;;-1:-1:-1;5148:2:262;5133:18;;;5120:32;;4550:634;-1:-1:-1;;;4550:634:262:o;5371:380::-;5447:8;5457:6;5511:3;5504:4;5496:6;5492:17;5488:27;5478:55;;5529:1;5526;5519:12;5478:55;-1:-1:-1;5552:20:262;;-1:-1:-1;;;;;5584:30:262;;5581:50;;;5627:1;5624;5617:12;5581:50;5664:4;5656:6;5652:17;5640:29;;5724:3;5717:4;5707:6;5704:1;5700:14;5692:6;5688:27;5684:38;5681:47;5678:67;;;5741:1;5738;5731:12;5756:475;5867:6;5875;5928:2;5916:9;5907:7;5903:23;5899:32;5896:52;;;5944:1;5941;5934:12;5896:52;5984:9;5971:23;-1:-1:-1;;;;;6009:6:262;6006:30;6003:50;;;6049:1;6046;6039:12;6003:50;6088:83;6163:7;6154:6;6143:9;6139:22;6088:83;:::i;:::-;6190:8;;6062:109;;-1:-1:-1;5756:475:262;-1:-1:-1;;;;5756:475:262:o;6236:156::-;6302:20;;6362:4;6351:16;;6341:27;;6331:55;;6382:1;6379;6372:12;6331:55;6236:156;;;:::o;6397:735::-;6492:6;6500;6508;6516;6524;6577:3;6565:9;6556:7;6552:23;6548:33;6545:53;;;6594:1;6591;6584:12;6545:53;6633:9;6620:23;6652:31;6677:5;6652:31;:::i;:::-;6702:5;-1:-1:-1;6780:2:262;6765:18;;6752:32;;-1:-1:-1;6861:2:262;6846:18;;6833:32;-1:-1:-1;;;;;6877:30:262;;6874:50;;;6920:1;6917;6910:12;6874:50;6959:58;7009:7;7000:6;6989:9;6985:22;6959:58;:::i;:::-;7036:8;;-1:-1:-1;6933:84:262;-1:-1:-1;7090:36:262;;-1:-1:-1;7122:2:262;7107:18;;7090:36;:::i;:::-;7080:46;;6397:735;;;;;;;;:::o;7137:288::-;7178:3;7216:5;7210:12;7243:6;7238:3;7231:19;7299:6;7292:4;7285:5;7281:16;7274:4;7269:3;7265:14;7259:47;7351:1;7344:4;7335:6;7330:3;7326:16;7322:27;7315:38;7414:4;7407:2;7403:7;7398:2;7390:6;7386:15;7382:29;7377:3;7373:39;7369:50;7362:57;;;7137:288;;;;:::o;7430:217::-;7577:2;7566:9;7559:21;7540:4;7597:44;7637:2;7626:9;7622:18;7614:6;7597:44;:::i;7652:544::-;7731:6;7739;7747;7800:2;7788:9;7779:7;7775:23;7771:32;7768:52;;;7816:1;7813;7806:12;7768:52;7855:9;7842:23;7874:31;7899:5;7874:31;:::i;:::-;7924:5;-1:-1:-1;7980:2:262;7965:18;;7952:32;-1:-1:-1;;;;;7996:30:262;;7993:50;;;8039:1;8036;8029:12;7993:50;8078:58;8128:7;8119:6;8108:9;8104:22;8078:58;:::i;:::-;7652:544;;8155:8;;-1:-1:-1;8052:84:262;;-1:-1:-1;;;;7652:544:262:o;8201:247::-;8260:6;8313:2;8301:9;8292:7;8288:23;8284:32;8281:52;;;8329:1;8326;8319:12;8281:52;8368:9;8355:23;8387:31;8412:5;8387:31;:::i;8682:664::-;8770:6;8778;8786;8794;8847:2;8835:9;8826:7;8822:23;8818:32;8815:52;;;8863:1;8860;8853:12;8815:52;8902:9;8889:23;8921:31;8946:5;8921:31;:::i;:::-;8971:5;-1:-1:-1;9049:2:262;9034:18;;9021:32;;-1:-1:-1;9130:2:262;9115:18;;9102:32;-1:-1:-1;;;;;9146:30:262;;9143:50;;;9189:1;9186;9179:12;9143:50;9228:58;9278:7;9269:6;9258:9;9254:22;9228:58;:::i;:::-;8682:664;;;;-1:-1:-1;9305:8:262;-1:-1:-1;;;;8682:664:262:o;9351:1375::-;9511:6;9519;9527;9535;9543;9551;9559;9567;9620:3;9608:9;9599:7;9595:23;9591:33;9588:53;;;9637:1;9634;9627:12;9588:53;9676:9;9663:23;9695:31;9720:5;9695:31;:::i;:::-;9745:5;-1:-1:-1;9802:2:262;9787:18;;9774:32;9815:33;9774:32;9815:33;:::i;:::-;9867:7;-1:-1:-1;9925:2:262;9910:18;;9897:32;-1:-1:-1;;;;;9941:30:262;;9938:50;;;9984:1;9981;9974:12;9938:50;10023:83;10098:7;10089:6;10078:9;10074:22;10023:83;:::i;:::-;10125:8;;-1:-1:-1;9997:109:262;-1:-1:-1;;10213:2:262;10198:18;;10185:32;-1:-1:-1;;;;;10229:32:262;;10226:52;;;10274:1;10271;10264:12;10226:52;10313:85;10390:7;10379:8;10368:9;10364:24;10313:85;:::i;:::-;10417:8;;-1:-1:-1;10287:111:262;-1:-1:-1;;10505:3:262;10490:19;;10477:33;-1:-1:-1;;;;;10522:32:262;;10519:52;;;10567:1;10564;10557:12;10731:856;10835:6;10843;10851;10859;10867;10875;10928:3;10916:9;10907:7;10903:23;10899:33;10896:53;;;10945:1;10942;10935:12;10896:53;10984:9;10971:23;11003:31;11028:5;11003:31;:::i;:::-;11053:5;-1:-1:-1;11131:2:262;11116:18;;11103:32;;-1:-1:-1;11212:2:262;11197:18;;11184:32;-1:-1:-1;;;;;11228:30:262;;11225:50;;;11271:1;11268;11261:12;11225:50;11310:58;11360:7;11351:6;11340:9;11336:22;11310:58;:::i;:::-;11387:8;;-1:-1:-1;11284:84:262;-1:-1:-1;11441:36:262;;-1:-1:-1;11473:2:262;11458:18;;11441:36;:::i;:::-;10731:856;;;;-1:-1:-1;10731:856:262;;;;;11550:3;11535:19;;;11522:33;;-1:-1:-1;;10731:856:262:o;11592:927::-;11698:6;11706;11714;11722;11730;11738;11791:3;11779:9;11770:7;11766:23;11762:33;11759:53;;;11808:1;11805;11798:12;11759:53;11847:9;11834:23;11866:31;11891:5;11866:31;:::i;:::-;11916:5;-1:-1:-1;11973:2:262;11958:18;;11945:32;11986:33;11945:32;11986:33;:::i;:::-;12038:7;-1:-1:-1;12118:2:262;12103:18;;12090:32;;-1:-1:-1;12221:2:262;12206:18;;12193:32;;-1:-1:-1;12302:3:262;12287:19;;12274:33;-1:-1:-1;;;;;12319:30:262;;12316:50;;;12362:1;12359;12352:12;12316:50;12401:58;12451:7;12442:6;12431:9;12427:22;12401:58;:::i;:::-;11592:927;;;;-1:-1:-1;11592:927:262;;-1:-1:-1;11592:927:262;;12478:8;;11592:927;-1:-1:-1;;;11592:927:262:o;12874:288::-;13049:6;13038:9;13031:25;13092:2;13087;13076:9;13072:18;13065:30;13012:4;13112:44;13152:2;13141:9;13137:18;13129:6;13112:44;:::i;13167:249::-;13236:6;13289:2;13277:9;13268:7;13264:23;13260:32;13257:52;;;13305:1;13302;13295:12;13257:52;13337:9;13331:16;13356:30;13380:5;13356:30;:::i;13421:127::-;13482:10;13477:3;13473:20;13470:1;13463:31;13513:4;13510:1;13503:15;13537:4;13534:1;13527:15;13553:322;13644:4;13702:11;13689:25;13796:2;13792:7;13781:8;13765:14;13761:29;13757:43;13737:18;13733:68;13723:96;;13815:1;13812;13805:12;13723:96;13836:33;;;;;13553:322;-1:-1:-1;;13553:322:262:o;13880:521::-;13957:4;13963:6;14023:11;14010:25;14117:2;14113:7;14102:8;14086:14;14082:29;14078:43;14058:18;14054:68;14044:96;;14136:1;14133;14126:12;14044:96;14163:33;;14215:20;;;-1:-1:-1;;;;;;14247:30:262;;14244:50;;;14290:1;14287;14280:12;14244:50;14323:4;14311:17;;-1:-1:-1;14354:14:262;14350:27;;;14340:38;;14337:58;;;14391:1;14388;14381:12;14699:251;14769:6;14822:2;14810:9;14801:7;14797:23;14793:32;14790:52;;;14838:1;14835;14828:12;14790:52;14870:9;14864:16;14889:31;14914:5;14889:31;:::i;15268:230::-;15338:6;15391:2;15379:9;15370:7;15366:23;15362:32;15359:52;;;15407:1;15404;15397:12;15359:52;-1:-1:-1;15452:16:262;;15268:230;-1:-1:-1;15268:230:262:o;16113:127::-;16174:10;16169:3;16165:20;16162:1;16155:31;16205:4;16202:1;16195:15;16229:4;16226:1;16219:15;16797:232;16836:3;16857:17;;;16854:140;;16916:10;16911:3;16907:20;16904:1;16897:31;16951:4;16948:1;16941:15;16979:4;16976:1;16969:15;16854:140;-1:-1:-1;17021:1:262;17010:13;;16797:232::o;17619:271::-;17802:6;17794;17789:3;17776:33;17758:3;17828:16;;17853:13;;;17828:16;17619:271;-1:-1:-1;17619:271:262:o;18241:485::-;18337:6;18345;18353;18406:2;18394:9;18385:7;18381:23;18377:32;18374:52;;;18422:1;18419;18412:12;18374:52;18467:16;;18552:2;18537:18;;18531:25;18467:16;;-1:-1:-1;18565:33:262;18531:25;18565:33;:::i;:::-;18690:2;18675:18;;;;18669:25;18241:485;;18617:7;;-1:-1:-1;18669:25:262;;18241:485;-1:-1:-1;;18241:485:262:o","linkReferences":{}},"methodIdentifiers":{"SIG_VALIDATION_FAILED()":"8f41ec5a","SIG_VALIDATION_SUCCEEDED()":"9cdf379c","entryPoint()":"b0d691fe","execute(address,uint256,bytes)":"b61d27f6","execute(address,uint256,bytes,uint8)":"51945447","execute(address,uint256,bytes,uint8,uint256)":"ca3b98bb","executeBatch((address,uint256,bytes)[])":"34fcd5be","getNonce()":"d087d288","isOperator(address)":"6d70f7ae","isValidSignature(bytes32,bytes)":"1626ba7e","isValidSigner(address,bytes)":"523e3260","onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)":"bc197c81","onERC1155Received(address,address,uint256,uint256,bytes)":"f23a6e61","onERC721Received(address,address,uint256,bytes)":"150b7a02","state()":"c19d93fb","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","tokensReceived(address,address,address,uint256,bytes,bytes)":"0023de29","validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)":"19822f7c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"error\",\"type\":\"bytes\"}],\"name\":\"ExecuteError\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOperatorOrEntryPoint\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OwnershipCycle\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SIG_VALIDATION_FAILED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SIG_VALIDATION_SUCCEEDED\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"entryPoint\",\"outputs\":[{\"internalType\":\"contract IEntryPoint\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"operation\",\"type\":\"uint8\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"operation\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"txGas\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct BaseAccount.Call[]\",\"name\":\"calls\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"isValidSigner\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"receivedTokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"state\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"tokenContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"tokensReceived\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"callData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"accountGasLimits\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"preVerificationGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"gasFees\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"paymasterAndData\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct PackedUserOperation\",\"name\":\"userOp\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"userOpHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"missingAccountFunds\",\"type\":\"uint256\"}],\"name\":\"validateUserOp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"validationData\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{\"execute(address,uint256,bytes,uint8)\":{\"details\":\"Allows the mech operator to execute arbitrary transactions\",\"params\":{\"data\":\"Data payload of transaction.\",\"operation\":\"Operation type of transaction.\",\"to\":\"Destination address of transaction.\",\"value\":\"Ether value of transaction.\"},\"returns\":{\"returnData\":\"Return data of the call\"}},\"execute(address,uint256,bytes,uint8,uint256)\":{\"details\":\"Allows the mech operator to execute arbitrary transactions\",\"params\":{\"data\":\"Data payload of transaction.\",\"operation\":\"Operation type of transaction.\",\"to\":\"Destination address of transaction.\",\"txGas\":\"Gas to send for executing the meta transaction, if 0 all left will be sent\",\"value\":\"Ether value of transaction.\"},\"returns\":{\"returnData\":\"Return data of the call\"}},\"isOperator(address)\":{\"details\":\"Return if the passed address is authorized to sign on behalf of the mech, must be implemented by the child contract\",\"params\":{\"signer\":\"The address to check\"}},\"isValidSignature(bytes32,bytes)\":{\"details\":\"Checks whether the signature provided is valid for the provided hash, complies with EIP-1271. A signature is valid if either: - It's a valid ECDSA signature by the mech operator - It's a valid EIP-1271 signature by the mech operator - It's a valid EIP-1271 signature by the mech itself\",\"params\":{\"hash\":\"Hash of the data (could be either a message hash or transaction hash)\",\"signature\":\"Signature to validate. Can be an ECDSA signature or a EIP-1271 contract signature (identified by v=0)\"}},\"isValidSigner(address,bytes)\":{\"details\":\"Returns a magic value indicating whether a given signer is authorized to act on behalf of the account\",\"params\":{\"signer\":\"The address to check signing authorization for\"},\"returns\":{\"magicValue\":\"Magic value indicating whether the signer is valid\"}},\"state()\":{\"details\":\"Returns the current account state per EIP-6551NOTE: This does not change for arbitrary account state changes!The model used here is to change it for *owner-initiated* state changes.E.g., sending a token held by this account should change the state(),but receiving a token should not.This is to prevent griefing if, e.g., a marketplace requires constant state()from listing to sale: an attacked could send a spam token to kill the sale.However, even here, NOT ALL *OWNER-INITIATED* STATE CHANGES ARE CAPTURED.E.g., an owner might approve a contract to transferFrom from this TBA,and such transfers would NOT be reflected with a state change.As such, we advise you do NOT consider this a source of truth, but instead,for the sale-of-TBA case, commit to the state in a more comprehensive, offchain way.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if a given interfaceId is supported by this account. This method can be extended by an override\"},\"token()\":{\"details\":\"Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.\",\"returns\":{\"chainId\":\" The EIP-155 ID of the chain the token exists on\",\"tokenContract\":\"The contract address of the token\",\"tokenId\":\" The ID of the token\"}},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"details\":\"Must validate caller is the entryPoint. Must validate the signature and nonce\",\"params\":{\"missingAccountFunds\":\"- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \\\"entryPoint.withdrawTo()\\\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.\",\"userOp\":\"- The operation that is about to be executed.\",\"userOpHash\":\"- Hash of the user's request data. can be used as the basis for signature.\"},\"returns\":{\"validationData\":\" - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \\\"aggregator\\\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \\\"indefinitely\\\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"entryPoint()\":{\"notice\":\"Return the entryPoint used by this account. Subclass should return the current entryPoint used by this account.\"},\"execute(address,uint256,bytes)\":{\"notice\":\"execute a single call from the account.\"},\"executeBatch((address,uint256,bytes)[])\":{\"notice\":\"execute a batch of calls. revert on the first call that fails. If the batch reverts, and it contains more than a single call, then wrap the revert with ExecuteError, to mark the failing call index.\"},\"getNonce()\":{\"notice\":\"Return the account nonce. This method returns the next sequential nonce. For a nonce of a specific key, use `entrypoint.getNonce(account, key)`\"},\"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)\":{\"notice\":\"Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \\\"simulation call\\\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/account/HyperAccount.sol\":\"HyperAccount\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains-ens-contracts-1.5.2/=dependencies/@ensdomains-ens-contracts-1.5.2/\",\":@ensdomains/ens-contracts/=dependencies/@ensdomains-ens-contracts-1.2.2/\",\":@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/contracts/\",\":@layerzerolabs/lz-evm-messagelib-v2/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/\",\":@layerzerolabs/lz-evm-protocol-v2/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/\",\":@layerzerolabs/oapp-evm/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/\",\":@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/\",\":@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/\",\":@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/\",\":account-abstraction/=dependencies/account-abstraction/contracts/\",\":ds-test/=dependencies/erc6551-reference-0.3.1/lib/forge-std/lib/ds-test/src/\",\":erc6551-reference-0.3.1/=dependencies/erc6551-reference-0.3.1/\",\":eth-infinitism-account-abstraction-0.8.0/=dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/\",\":eth-infinitism-account-abstraction-0.8/=dependencies/eth-infinitism-account-abstraction-0.8.0/\",\":forge-std-1.9.4/=dependencies/forge-std-1.9.4/\",\":forge-std/=dependencies/erc6551-reference-0.3.1/lib/forge-std/src/\",\":safe-global-safe-smart-account-1.5.0/=dependencies/safe-global-safe-smart-account-1.5.0/\",\":solady-0.1.26/=dependencies/solady-0.1.26/src/\",\":solidity-bytes-utils-0.8/=dependencies/solidity-bytes-utils-0.8/contracts/\",\":solidity-bytes-utils/=dependencies/solidity-bytes-utils-0.8/\"]},\"sources\":{\"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1271.sol\":{\"keccak256\":\"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710\",\"dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0x61a23d601c2ab69dd726ac55058604cbda98e1d728ba31a51c379a3f9eeea715\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8cbb06152d82ebdd5ba1d33454e5759492040f309a82637c7e99c948a04fa20\",\"dweb:/ipfs/QmQQuLr6WSfLu97pMEh6XLefk99TSj9k5Qu1zXGPepwGiK\"]},\"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Create2.sol\":{\"keccak256\":\"0xbb7e8401583d26268ea9103013bcdcd90866a7718bd91105ebd21c9bf11f4f06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://866a11ad89c93ee918078f7a46ae31e17d89216ce64603f0d34be7ed0a5c520e\",\"dweb:/ipfs/QmW3ckLEJg2v2NzuVLNJFmRuerGSipw6Dzg6ntbmqbAGoC\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Account.sol\":{\"keccak256\":\"0xda097894cc052f451ad669c5a07a9eda3f53a948f8080714850dc68cc1040b42\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8ca48dd1eff4f9eee3699a6800c09c4d208d103862f2a55d66286e8eb4b7771e\",\"dweb:/ipfs/QmX2KX2fmUV5rbVoJSAq6BTVVwxK1Jy169dRJN2h8UCNLz\"]},\"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Executable.sol\":{\"keccak256\":\"0x9bdb7a7e324bf36203ec6ff68c454446cae3993c1054b0356a081fa52ec43a29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9c6187c6633ec42ccb0ae5fdf4f1791fad7a505f29c8b55b1a5fe3ec9ee0148\",\"dweb:/ipfs/QmeANTvdkBMZeumsw6Qe7MHEjgkHJTLju4oQtAfo9HLzNV\"]},\"dependencies/erc6551-reference-0.3.1/src/lib/ERC6551AccountLib.sol\":{\"keccak256\":\"0x49e81d01b3aef13b314a6667e4811089a78ad03dfad5cd430b00be2f9ed8ea34\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://46b60a9d293324e56f59937e2a4d3a79ef4f69847868b5bbc3d81bcd6d1981a7\",\"dweb:/ipfs/QmTgv7s9kf8UxdXuR1TswCQLguKueVwbABahPLnfJRUXfB\"]},\"dependencies/erc6551-reference-0.3.1/src/lib/ERC6551BytecodeLib.sol\":{\"keccak256\":\"0xc6a20fb273cbe33fa8d9591aaeb6a9f24b8fd9944f8d0017f4bf5b26614731f9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740fed446bda3effacea6fa48d23a7d23911363e353bd12c5171b2b21b996acf\",\"dweb:/ipfs/QmNbWP8UkANAUGCc4ZcjfyKDBi89KjSunFQEvnhpXLBFt4\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/BaseAccount.sol\":{\"keccak256\":\"0x071e38cf697bedbfe021955879277620ff763ecca1a1143ce14792e8c86c6d94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d55468ffadcec140a1dc853fac153de985d7335655e70935b9d28e148a495ab\",\"dweb:/ipfs/QmXMPLx92TLCDRtNTdmTLSWBNbPVmSGeN9im2zsK9P9p4R\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/Helpers.sol\":{\"keccak256\":\"0x42b948af5fa14a96149611595df1186800c7558b2de8762e4b45a7c45c16f65e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://737a7908131ece48a5df1faaa3d0be79c42792379c27f5615dae6aa14cd68c2f\",\"dweb:/ipfs/QmPAxGMDxuek7XWSUVfZpvYE8bustfsjTDVDK8hmE88e1f\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x2d3450fa3906422b6fdbbe7f2a2a9e36d6f3751bfa9cd80af88befd6a5be78c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292a0ef5295d7f2016e99d2c228958f7f6de94f5bd9652d8696af15af0094a99\",\"dweb:/ipfs/QmVg4fhkZbUB7AopGcaVPmTdvChq7W9ga8fjrc3XaJNTM2\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x1030b464b49ce80da46b5b6c9af357c2d526f308de61391db6a4ec767d33b864\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://671945f8e18e7305797312b5a209506be3c9bd1d9b9b561c1e8863bccfa61319\",\"dweb:/ipfs/QmVanLK5Aenrb7J94doiE1C9oHwo86jvv8NrpDeNHwvnii\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0xdf580eafa015b81bde436d6a5468cc92b531ada84007cef885e923f6dfc5e8bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99f0060626568619ac94d750eb4c0888d92ca5775a6bd957fef9847843835b77\",\"dweb:/ipfs/QmXJer3D9sTkEj3mmUDqpdqfGpe46Rn9G22nGrfZdP2wAT\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3b0423737e810dd886183ed32cfed9b45edd315f5fb3e1076fc19f86791adc64\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c43081efaa2eda581b6249053281bb58cb0c4eeb6bf87efc55d95daaec2fc931\",\"dweb:/ipfs/QmXRN2JnyzWZNeFMHauTnDuc7jhxGY4ZkY37HTtjXKdC87\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0xee493ae200b8c675bdc0da66f7ac6bb883ecea33672d7d0a95526b9eecdedf87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://979784a0333ac4ef3cc53ab9323a4b7fa574d929bd511f0eed03d3b0370db22d\",\"dweb:/ipfs/QmeiciN5gs4upM6vfKvrRxWiDBUzMU4uJQRRkJajhim9gX\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/ISenderCreator.sol\":{\"keccak256\":\"0x677f651d733162b80d1af7901e4f36469e362737a8353d1d0cc7bb94489e4ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6905a80acd70b444ea230b5b582164cb99aaae518bf72c88f8292df31615570\",\"dweb:/ipfs/QmfTKTPwJYf9pmA3T5PE5cCG8GLLDrLaq3jQqMP3pVRL6w\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xe48e904fcac02295aad07fbfa1c1d449a74bf44c04e432afef6f34d1ef726ae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5882b635ea6f5da9ae411485975888431de571f85d4baf35e3db1a83c1f14b85\",\"dweb:/ipfs/QmVSTX36Byr48y8JBmz1hCTGAAyQdTYegQbsSqdRNuSQYz\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0xb15188e25e45fe73097e279675b6c0beccbd4133ead2260f8f0c4ba840046800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d14c1edd1e95d37c26e54bb34305e2cc9dedc46eb75ec91caeb777678e8ea79\",\"dweb:/ipfs/QmcCL2syVtV7W3XvYx3si84MPkbEJKqEN8hjFNhAPoDDhK\"]},\"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/utils/Exec.sol\":{\"keccak256\":\"0x9c724ee22011193ea7f92d3c3c467ee6aa27139d3ddc225c7f1254d241e6ccdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96cc246fe944a212cbb9ba82065b2d380ec80954fcdb5d8d982b476bd5b72868\",\"dweb:/ipfs/QmZ25eFixEhukbfWGz5TBjsp7YohxUqD5i2rxhaghfvHt8\"]},\"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC1155TokenReceiver.sol\":{\"keccak256\":\"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c\",\"dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM\"]},\"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC721TokenReceiver.sol\":{\"keccak256\":\"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c\",\"dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n\"]},\"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC777TokensRecipient.sol\":{\"keccak256\":\"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06\",\"dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ\"]},\"src/account/HyperAccount.sol\":{\"keccak256\":\"0xf06a2e1c8b8010e97341fbb7119d23f258a9ab6da7c78bf71634af655f351002\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://bc96aacbcbe97fd766cc7d8a3ac03e4fff4dfa8d476cd1b081cabf451859b2de\",\"dweb:/ipfs/Qmf49fx6SMaQQRjk4fJTthPjRtiPcWQ9qYEhRRZau8qQNe\"]},\"src/account/mech/Account.sol\":{\"keccak256\":\"0x2a0e5d82ee1e808a7cbc3e4567b9e65c16fb5a0e51ce40d08f927a8bfd55c3a9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0a70b3b31ffcf4ee094d3fae5a3f426f8f35abace5735e1b4fdf9fc6695ea6cf\",\"dweb:/ipfs/QmdGcmp7uKKFcsoLZqNoPsvsEjqusT3ypNmsqSTW6HTwXR\"]},\"src/account/mech/ERC721TokenBoundMech.sol\":{\"keccak256\":\"0x517279ed3fa7fa2b3a851da8c256dd396f80929970be2420a5e6b07d3f3f5f40\",\"license\":\"LGPL-3.0\",\"urls\":[\"bzz-raw://717d316548f0f0c0a8d5abf62af66930620ab637b2d6857deb98310723c422b7\",\"dweb:/ipfs/QmPZUQRfLPD1hEbvNa4ftFbqME5jkKwh6uJnTgWygbmPka\"]},\"src/account/mech/Mech.sol\":{\"keccak256\":\"0x6bd4c9f07654a347024c803c8fa9d6ea3e879d7564319051f9bd21e201c3e6db\",\"license\":\"LGPL-3.0\",\"urls\":[\"bzz-raw://f0ca040cdca52d4ccb6eb60a070be7167c9a8e778e0141ed52dd9e1a0f754abb\",\"dweb:/ipfs/QmZuNa44UovvuLBCNKMuEcagY1Ln5XgZQp6VmwbwsEgR36\"]},\"src/account/mech/Receiver.sol\":{\"keccak256\":\"0x2c8e560a54990548a16a316234d7cc337e11427419d3ef83c87f56fc5ec979ee\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://6face80784f718bc7d233e6fd8608ba836402c4d143c1ab07cc62591d21a33eb\",\"dweb:/ipfs/QmPnVBbxcAdMzowti6ohufDJMUqTe96mKe7XgFeEgLY6Zf\"]},\"src/account/mech/TokenBoundMech.sol\":{\"keccak256\":\"0x72e0e80254a35385fb044d0dc1af7ae0a83ff489be2f23af6014a272b5e96c45\",\"license\":\"LGPL-3.0\",\"urls\":[\"bzz-raw://d0cc703c11c6bb8ef8f25fc4dd602c97b98a3af141fdd907328f5f3eba6c4df0\",\"dweb:/ipfs/QmfNwYP4PcirRmmEyZUNtgvigX6bBHxNH3FNMpRprtJHwK\"]},\"src/interfaces/IMech.sol\":{\"keccak256\":\"0xc213abfaad7b41517632a4522fe7d1c8e05308ca93161916384fc9e3f56e68de\",\"license\":\"LGPL-3.0\",\"urls\":[\"bzz-raw://aeda78fa6ecb920ab897577a901eb63b96c22484cdd6532fddd1096750b9f762\",\"dweb:/ipfs/QmcqkiEGa5gBFcQCENwhzs6Nt5DXDjqCMQZi2T42yADU4G\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.28+commit.7893614a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"bytes","name":"error","type":"bytes"}],"type":"error","name":"ExecuteError"},{"inputs":[],"type":"error","name":"NotOperatorOrEntryPoint"},{"inputs":[],"type":"error","name":"OwnershipCycle"},{"inputs":[],"stateMutability":"view","type":"function","name":"SIG_VALIDATION_FAILED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SIG_VALIDATION_SUCCEEDED","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"entryPoint","outputs":[{"internalType":"contract IEntryPoint","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint8","name":"operation","type":"uint8"}],"stateMutability":"payable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"returnData","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"execute"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint8","name":"operation","type":"uint8"},{"internalType":"uint256","name":"txGas","type":"uint256"}],"stateMutability":"payable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"returnData","type":"bytes"}]},{"inputs":[{"internalType":"struct BaseAccount.Call[]","name":"calls","type":"tuple[]","components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}]}],"stateMutability":"nonpayable","type":"function","name":"executeBatch"},{"inputs":[],"stateMutability":"view","type":"function","name":"getNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSignature","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"isValidSigner","outputs":[{"internalType":"bytes4","name":"magicValue","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"receivedTokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function","name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"state","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"tokenContract","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function","name":"tokensReceived"},{"inputs":[{"internalType":"struct PackedUserOperation","name":"userOp","type":"tuple","components":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"initCode","type":"bytes"},{"internalType":"bytes","name":"callData","type":"bytes"},{"internalType":"bytes32","name":"accountGasLimits","type":"bytes32"},{"internalType":"uint256","name":"preVerificationGas","type":"uint256"},{"internalType":"bytes32","name":"gasFees","type":"bytes32"},{"internalType":"bytes","name":"paymasterAndData","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}]},{"internalType":"bytes32","name":"userOpHash","type":"bytes32"},{"internalType":"uint256","name":"missingAccountFunds","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"validateUserOp","outputs":[{"internalType":"uint256","name":"validationData","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"execute(address,uint256,bytes,uint8)":{"details":"Allows the mech operator to execute arbitrary transactions","params":{"data":"Data payload of transaction.","operation":"Operation type of transaction.","to":"Destination address of transaction.","value":"Ether value of transaction."},"returns":{"returnData":"Return data of the call"}},"execute(address,uint256,bytes,uint8,uint256)":{"details":"Allows the mech operator to execute arbitrary transactions","params":{"data":"Data payload of transaction.","operation":"Operation type of transaction.","to":"Destination address of transaction.","txGas":"Gas to send for executing the meta transaction, if 0 all left will be sent","value":"Ether value of transaction."},"returns":{"returnData":"Return data of the call"}},"isOperator(address)":{"details":"Return if the passed address is authorized to sign on behalf of the mech, must be implemented by the child contract","params":{"signer":"The address to check"}},"isValidSignature(bytes32,bytes)":{"details":"Checks whether the signature provided is valid for the provided hash, complies with EIP-1271. A signature is valid if either: - It's a valid ECDSA signature by the mech operator - It's a valid EIP-1271 signature by the mech operator - It's a valid EIP-1271 signature by the mech itself","params":{"hash":"Hash of the data (could be either a message hash or transaction hash)","signature":"Signature to validate. Can be an ECDSA signature or a EIP-1271 contract signature (identified by v=0)"}},"isValidSigner(address,bytes)":{"details":"Returns a magic value indicating whether a given signer is authorized to act on behalf of the account","params":{"signer":"The address to check signing authorization for"},"returns":{"magicValue":"Magic value indicating whether the signer is valid"}},"state()":{"details":"Returns the current account state per EIP-6551NOTE: This does not change for arbitrary account state changes!The model used here is to change it for *owner-initiated* state changes.E.g., sending a token held by this account should change the state(),but receiving a token should not.This is to prevent griefing if, e.g., a marketplace requires constant state()from listing to sale: an attacked could send a spam token to kill the sale.However, even here, NOT ALL *OWNER-INITIATED* STATE CHANGES ARE CAPTURED.E.g., an owner might approve a contract to transferFrom from this TBA,and such transfers would NOT be reflected with a state change.As such, we advise you do NOT consider this a source of truth, but instead,for the sale-of-TBA case, commit to the state in a more comprehensive, offchain way."},"supportsInterface(bytes4)":{"details":"Returns true if a given interfaceId is supported by this account. This method can be extended by an override"},"token()":{"details":"Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.","returns":{"chainId":" The EIP-155 ID of the chain the token exists on","tokenContract":"The contract address of the token","tokenId":" The ID of the token"}},"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)":{"details":"Must validate caller is the entryPoint. Must validate the signature and nonce","params":{"missingAccountFunds":"- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.","userOp":"- The operation that is about to be executed.","userOpHash":"- Hash of the user's request data. can be used as the basis for signature."},"returns":{"validationData":" - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \"aggregator\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \"indefinitely\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly."}}},"version":1},"userdoc":{"kind":"user","methods":{"entryPoint()":{"notice":"Return the entryPoint used by this account. Subclass should return the current entryPoint used by this account."},"execute(address,uint256,bytes)":{"notice":"execute a single call from the account."},"executeBatch((address,uint256,bytes)[])":{"notice":"execute a batch of calls. revert on the first call that fails. If the batch reverts, and it contains more than a single call, then wrap the revert with ExecuteError, to mark the failing call index."},"getNonce()":{"notice":"Return the account nonce. This method returns the next sequential nonce. For a nonce of a specific key, use `entrypoint.getNonce(account, key)`"},"validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)":{"notice":"Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \"simulation call\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure."}},"version":1}},"settings":{"remappings":["@ensdomains-ens-contracts-1.5.2/=dependencies/@ensdomains-ens-contracts-1.5.2/","@ensdomains/ens-contracts/=dependencies/@ensdomains-ens-contracts-1.2.2/","@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/contracts/","@layerzerolabs/lz-evm-messagelib-v2/=dependencies/@layerzerolabs-lz-evm-messagelib-v2-3.0.38-ton-uln.0/","@layerzerolabs/lz-evm-protocol-v2/=dependencies/@layerzerolabs-lz-evm-protocol-v2-3.0.38-ton-uln.0/","@layerzerolabs/oapp-evm/=dependencies/@layerzerolabs-lz-evm-oapp-v2-3.0.38-ton-uln.0/","@openzeppelin-contracts-5.1.0/=dependencies/@openzeppelin-contracts-5.1.0/","@openzeppelin-contracts-upgradeable-5.1.0/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts-upgradeable/=dependencies/@openzeppelin-contracts-upgradeable-5.1.0/","@openzeppelin/contracts/=dependencies/@openzeppelin-contracts-5.1.0/","account-abstraction/=dependencies/account-abstraction/contracts/","ds-test/=dependencies/erc6551-reference-0.3.1/lib/forge-std/lib/ds-test/src/","erc6551-reference-0.3.1/=dependencies/erc6551-reference-0.3.1/","eth-infinitism-account-abstraction-0.8.0/=dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/","eth-infinitism-account-abstraction-0.8/=dependencies/eth-infinitism-account-abstraction-0.8.0/","forge-std-1.9.4/=dependencies/forge-std-1.9.4/","forge-std/=dependencies/erc6551-reference-0.3.1/lib/forge-std/src/","safe-global-safe-smart-account-1.5.0/=dependencies/safe-global-safe-smart-account-1.5.0/","solady-0.1.26/=dependencies/solady-0.1.26/src/","solidity-bytes-utils-0.8/=dependencies/solidity-bytes-utils-0.8/contracts/","solidity-bytes-utils/=dependencies/solidity-bytes-utils-0.8/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/account/HyperAccount.sol":"HyperAccount"},"evmVersion":"prague","libraries":{}},"sources":{"dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1271.sol":{"keccak256":"0x4aaaf1c0737dd16e81f0d2b9833c549747a5ede6873bf1444bc72aa572d03e98","urls":["bzz-raw://eada27d7668eebaea16c3b890aa1b38ffc53965292e26c96f7c44834623f4710","dweb:/ipfs/QmVSWuLtxyCqNbLyY89ptxkvsk4CLLKDQYigEne5Qj8k1L"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC1155/IERC1155Receiver.sol":{"keccak256":"0x61a23d601c2ab69dd726ac55058604cbda98e1d728ba31a51c379a3f9eeea715","urls":["bzz-raw://d8cbb06152d82ebdd5ba1d33454e5759492040f309a82637c7e99c948a04fa20","dweb:/ipfs/QmQQuLr6WSfLu97pMEh6XLefk99TSj9k5Qu1zXGPepwGiK"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/token/ERC721/IERC721.sol":{"keccak256":"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261","urls":["bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11","dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Create2.sol":{"keccak256":"0xbb7e8401583d26268ea9103013bcdcd90866a7718bd91105ebd21c9bf11f4f06","urls":["bzz-raw://866a11ad89c93ee918078f7a46ae31e17d89216ce64603f0d34be7ed0a5c520e","dweb:/ipfs/QmW3ckLEJg2v2NzuVLNJFmRuerGSipw6Dzg6ntbmqbAGoC"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/Strings.sol":{"keccak256":"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed","urls":["bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0","dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/ECDSA.sol":{"keccak256":"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84","urls":["bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9","dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"dependencies/@openzeppelin-contracts-5.1.0/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Account.sol":{"keccak256":"0xda097894cc052f451ad669c5a07a9eda3f53a948f8080714850dc68cc1040b42","urls":["bzz-raw://8ca48dd1eff4f9eee3699a6800c09c4d208d103862f2a55d66286e8eb4b7771e","dweb:/ipfs/QmX2KX2fmUV5rbVoJSAq6BTVVwxK1Jy169dRJN2h8UCNLz"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Executable.sol":{"keccak256":"0x9bdb7a7e324bf36203ec6ff68c454446cae3993c1054b0356a081fa52ec43a29","urls":["bzz-raw://a9c6187c6633ec42ccb0ae5fdf4f1791fad7a505f29c8b55b1a5fe3ec9ee0148","dweb:/ipfs/QmeANTvdkBMZeumsw6Qe7MHEjgkHJTLju4oQtAfo9HLzNV"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/lib/ERC6551AccountLib.sol":{"keccak256":"0x49e81d01b3aef13b314a6667e4811089a78ad03dfad5cd430b00be2f9ed8ea34","urls":["bzz-raw://46b60a9d293324e56f59937e2a4d3a79ef4f69847868b5bbc3d81bcd6d1981a7","dweb:/ipfs/QmTgv7s9kf8UxdXuR1TswCQLguKueVwbABahPLnfJRUXfB"],"license":"MIT"},"dependencies/erc6551-reference-0.3.1/src/lib/ERC6551BytecodeLib.sol":{"keccak256":"0xc6a20fb273cbe33fa8d9591aaeb6a9f24b8fd9944f8d0017f4bf5b26614731f9","urls":["bzz-raw://740fed446bda3effacea6fa48d23a7d23911363e353bd12c5171b2b21b996acf","dweb:/ipfs/QmNbWP8UkANAUGCc4ZcjfyKDBi89KjSunFQEvnhpXLBFt4"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/BaseAccount.sol":{"keccak256":"0x071e38cf697bedbfe021955879277620ff763ecca1a1143ce14792e8c86c6d94","urls":["bzz-raw://1d55468ffadcec140a1dc853fac153de985d7335655e70935b9d28e148a495ab","dweb:/ipfs/QmXMPLx92TLCDRtNTdmTLSWBNbPVmSGeN9im2zsK9P9p4R"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/Helpers.sol":{"keccak256":"0x42b948af5fa14a96149611595df1186800c7558b2de8762e4b45a7c45c16f65e","urls":["bzz-raw://737a7908131ece48a5df1faaa3d0be79c42792379c27f5615dae6aa14cd68c2f","dweb:/ipfs/QmPAxGMDxuek7XWSUVfZpvYE8bustfsjTDVDK8hmE88e1f"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/UserOperationLib.sol":{"keccak256":"0x2d3450fa3906422b6fdbbe7f2a2a9e36d6f3751bfa9cd80af88befd6a5be78c1","urls":["bzz-raw://292a0ef5295d7f2016e99d2c228958f7f6de94f5bd9652d8696af15af0094a99","dweb:/ipfs/QmVg4fhkZbUB7AopGcaVPmTdvChq7W9ga8fjrc3XaJNTM2"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAccount.sol":{"keccak256":"0x1030b464b49ce80da46b5b6c9af357c2d526f308de61391db6a4ec767d33b864","urls":["bzz-raw://671945f8e18e7305797312b5a209506be3c9bd1d9b9b561c1e8863bccfa61319","dweb:/ipfs/QmVanLK5Aenrb7J94doiE1C9oHwo86jvv8NrpDeNHwvnii"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAggregator.sol":{"keccak256":"0xdf580eafa015b81bde436d6a5468cc92b531ada84007cef885e923f6dfc5e8bf","urls":["bzz-raw://99f0060626568619ac94d750eb4c0888d92ca5775a6bd957fef9847843835b77","dweb:/ipfs/QmXJer3D9sTkEj3mmUDqpdqfGpe46Rn9G22nGrfZdP2wAT"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IEntryPoint.sol":{"keccak256":"0x3b0423737e810dd886183ed32cfed9b45edd315f5fb3e1076fc19f86791adc64","urls":["bzz-raw://c43081efaa2eda581b6249053281bb58cb0c4eeb6bf87efc55d95daaec2fc931","dweb:/ipfs/QmXRN2JnyzWZNeFMHauTnDuc7jhxGY4ZkY37HTtjXKdC87"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/INonceManager.sol":{"keccak256":"0xee493ae200b8c675bdc0da66f7ac6bb883ecea33672d7d0a95526b9eecdedf87","urls":["bzz-raw://979784a0333ac4ef3cc53ab9323a4b7fa574d929bd511f0eed03d3b0370db22d","dweb:/ipfs/QmeiciN5gs4upM6vfKvrRxWiDBUzMU4uJQRRkJajhim9gX"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/ISenderCreator.sol":{"keccak256":"0x677f651d733162b80d1af7901e4f36469e362737a8353d1d0cc7bb94489e4ba4","urls":["bzz-raw://d6905a80acd70b444ea230b5b582164cb99aaae518bf72c88f8292df31615570","dweb:/ipfs/QmfTKTPwJYf9pmA3T5PE5cCG8GLLDrLaq3jQqMP3pVRL6w"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IStakeManager.sol":{"keccak256":"0xe48e904fcac02295aad07fbfa1c1d449a74bf44c04e432afef6f34d1ef726ae0","urls":["bzz-raw://5882b635ea6f5da9ae411485975888431de571f85d4baf35e3db1a83c1f14b85","dweb:/ipfs/QmVSTX36Byr48y8JBmz1hCTGAAyQdTYegQbsSqdRNuSQYz"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/PackedUserOperation.sol":{"keccak256":"0xb15188e25e45fe73097e279675b6c0beccbd4133ead2260f8f0c4ba840046800","urls":["bzz-raw://5d14c1edd1e95d37c26e54bb34305e2cc9dedc46eb75ec91caeb777678e8ea79","dweb:/ipfs/QmcCL2syVtV7W3XvYx3si84MPkbEJKqEN8hjFNhAPoDDhK"],"license":"MIT"},"dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/utils/Exec.sol":{"keccak256":"0x9c724ee22011193ea7f92d3c3c467ee6aa27139d3ddc225c7f1254d241e6ccdd","urls":["bzz-raw://96cc246fe944a212cbb9ba82065b2d380ec80954fcdb5d8d982b476bd5b72868","dweb:/ipfs/QmZ25eFixEhukbfWGz5TBjsp7YohxUqD5i2rxhaghfvHt8"],"license":"MIT"},"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC1155TokenReceiver.sol":{"keccak256":"0x87e62665c041cade64e753ecdccf931cb100ab6e4bcc98769c1e6474be9db493","urls":["bzz-raw://59ca1157dcfe19c72b9d1244a6ae5ec70fee9793d4d8af523b70f22ae567d55c","dweb:/ipfs/QmfE3kv73QuQWAWQND927LWVHVLCp19m1mLUvxVYJDEFZM"],"license":"LGPL-3.0-only"},"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC721TokenReceiver.sol":{"keccak256":"0x96c4c5457fede2d4c6012011dfda36f8e8ffdb7388468f2dddb35661538bf479","urls":["bzz-raw://99a54737bc23722f79ec9cf9de63ba35b556a61df453eb332f3cac783503f26c","dweb:/ipfs/QmbLW5C2RhoLbwDWEPtTKpyYE5apT9B3q4U11PZG3wSM1n"],"license":"LGPL-3.0-only"},"dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC777TokensRecipient.sol":{"keccak256":"0x32ca7f1610659f35e52f5a989e1d844b7847ad57fab06e0cae5bc027248536ac","urls":["bzz-raw://9082896ec697e320087b1a682b69a5cdf71b33a2f7a956e2fb6054f9f9d56d06","dweb:/ipfs/QmUu7iNkQNvvqBPbbxuhqiQpYPYYnfsyPEsf4AMQFANXFZ"],"license":"LGPL-3.0-only"},"src/account/HyperAccount.sol":{"keccak256":"0xf06a2e1c8b8010e97341fbb7119d23f258a9ab6da7c78bf71634af655f351002","urls":["bzz-raw://bc96aacbcbe97fd766cc7d8a3ac03e4fff4dfa8d476cd1b081cabf451859b2de","dweb:/ipfs/Qmf49fx6SMaQQRjk4fJTthPjRtiPcWQ9qYEhRRZau8qQNe"],"license":"Apache-2.0"},"src/account/mech/Account.sol":{"keccak256":"0x2a0e5d82ee1e808a7cbc3e4567b9e65c16fb5a0e51ce40d08f927a8bfd55c3a9","urls":["bzz-raw://0a70b3b31ffcf4ee094d3fae5a3f426f8f35abace5735e1b4fdf9fc6695ea6cf","dweb:/ipfs/QmdGcmp7uKKFcsoLZqNoPsvsEjqusT3ypNmsqSTW6HTwXR"],"license":"GPL-3.0"},"src/account/mech/ERC721TokenBoundMech.sol":{"keccak256":"0x517279ed3fa7fa2b3a851da8c256dd396f80929970be2420a5e6b07d3f3f5f40","urls":["bzz-raw://717d316548f0f0c0a8d5abf62af66930620ab637b2d6857deb98310723c422b7","dweb:/ipfs/QmPZUQRfLPD1hEbvNa4ftFbqME5jkKwh6uJnTgWygbmPka"],"license":"LGPL-3.0"},"src/account/mech/Mech.sol":{"keccak256":"0x6bd4c9f07654a347024c803c8fa9d6ea3e879d7564319051f9bd21e201c3e6db","urls":["bzz-raw://f0ca040cdca52d4ccb6eb60a070be7167c9a8e778e0141ed52dd9e1a0f754abb","dweb:/ipfs/QmZuNa44UovvuLBCNKMuEcagY1Ln5XgZQp6VmwbwsEgR36"],"license":"LGPL-3.0"},"src/account/mech/Receiver.sol":{"keccak256":"0x2c8e560a54990548a16a316234d7cc337e11427419d3ef83c87f56fc5ec979ee","urls":["bzz-raw://6face80784f718bc7d233e6fd8608ba836402c4d143c1ab07cc62591d21a33eb","dweb:/ipfs/QmPnVBbxcAdMzowti6ohufDJMUqTe96mKe7XgFeEgLY6Zf"],"license":"LGPL-3.0-only"},"src/account/mech/TokenBoundMech.sol":{"keccak256":"0x72e0e80254a35385fb044d0dc1af7ae0a83ff489be2f23af6014a272b5e96c45","urls":["bzz-raw://d0cc703c11c6bb8ef8f25fc4dd602c97b98a3af141fdd907328f5f3eba6c4df0","dweb:/ipfs/QmfNwYP4PcirRmmEyZUNtgvigX6bBHxNH3FNMpRprtJHwK"],"license":"LGPL-3.0"},"src/interfaces/IMech.sol":{"keccak256":"0xc213abfaad7b41517632a4522fe7d1c8e05308ca93161916384fc9e3f56e68de","urls":["bzz-raw://aeda78fa6ecb920ab897577a901eb63b96c22484cdd6532fddd1096750b9f762","dweb:/ipfs/QmcqkiEGa5gBFcQCENwhzs6Nt5DXDjqCMQZi2T42yADU4G"],"license":"LGPL-3.0"}},"version":1},"id":166} \ No newline at end of file diff --git a/contracts/HyperAccount9CharCommitMinter.json b/contracts/HyperAccount9CharCommitMinter.json new file mode 100644 index 00000000..46cad125 --- /dev/null +++ b/contracts/HyperAccount9CharCommitMinter.json @@ -0,0 +1,46365 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_hypermap", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_minCommitAge", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxCommitAge", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [], + "name": "CommitNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "CommitTooNew", + "type": "error" + }, + { + "inputs": [], + "name": "CommitTooOld", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "error", + "type": "bytes" + } + ], + "name": "ExecuteError", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "actual", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + } + ], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "NotOperatorOrEntryPoint", + "type": "error" + }, + { + "inputs": [], + "name": "OwnershipCycle", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "minCommitAge", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxCommitAge", + "type": "uint256" + } + ], + "name": "SetupMinGreaterThanMaxAge", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "minCommitAge", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxCommitAge", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "smallestAllowedDiff", + "type": "uint256" + } + ], + "name": "SetupMinMaxAgeGapTooSmall", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [], + "name": "UnexpiredCommitExists", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "EIP712DomainChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "SIG_VALIDATION_FAILED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SIG_VALIDATION_SUCCEEDED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_commit", + "type": "bytes32" + } + ], + "name": "commit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "entryPoint", + "outputs": [ + { + "internalType": "contract IEntryPoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint8", + "name": "operation", + "type": "uint8" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint8", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "txGas", + "type": "uint256" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct BaseAccount.Call[]", + "name": "calls", + "type": "tuple[]" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "_commit", + "type": "bytes32" + } + ], + "name": "getCommit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "getCommitHash", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "getNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hypermap", + "outputs": [ + { + "internalType": "contract IHypermap", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "isOperator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "isValidSigner", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxCommitAge", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minCommitAge", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "initialization", + "type": "bytes" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "address", + "name": "tba", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "receivedTokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "allSourcePaths": { + "10": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC5267.sol", + "101": "src/account/HyperAccountMinterUpgradable.sol", + "109": "src/account/mech/Account.sol", + "110": "src/account/mech/ERC721TokenBoundMech.sol", + "111": "src/account/mech/Mech.sol", + "112": "src/account/mech/Receiver.sol", + "113": "src/account/mech/TokenBoundMech.sol", + "124": "src/interfaces/IHyperAccountCommittable.sol", + "126": "src/interfaces/IHyperAccountMinter.sol", + "13": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol", + "134": "src/interfaces/IMech.sol", + "5": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1271.sol", + "67": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol", + "68": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol", + "75": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/cryptography/EIP712Upgradeable.sol", + "77": "./dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Account.sol", + "78": "./dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Executable.sol", + "82": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC1155TokenReceiver.sol", + "83": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC721TokenReceiver.sol", + "84": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC777TokensRecipient.sol", + "85": "dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/BaseAccount.sol", + "88": "dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAccount.sol", + "96": "src/account/HyperAccount.sol", + "97": "src/account/HyperAccount9CharCommitMinter.sol", + "99": "src/account/HyperAccountCommitMinter.sol" + }, + "ast": { + "absolutePath": "src/account/HyperAccount9CharCommitMinter.sol", + "exportedSymbols": { + "HyperAccount9CharCommitMinter": [ + 154 + ], + "HyperAccountCommitMinter": [ + 668 + ] + }, + "id": 155, + "license": "Apache-2.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 87, + "literals": [ + "solidity", + "^", + "0.8", + ".27" + ], + "nodeType": "PragmaDirective", + "src": "39:24:97" + }, + { + "absolutePath": "src/account/HyperAccountCommitMinter.sol", + "file": "./HyperAccountCommitMinter.sol", + "id": 89, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 155, + "sourceUnit": 669, + "src": "65:72:97", + "symbolAliases": [ + { + "foreign": { + "id": 88, + "name": "HyperAccountCommitMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 668, + "src": "73:24:97", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 90, + "name": "HyperAccountCommitMinter", + "nameLocations": [ + "181:24:97" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 668, + "src": "181:24:97" + }, + "id": 91, + "nodeType": "InheritanceSpecifier", + "src": "181:24:97" + } + ], + "canonicalName": "HyperAccount9CharCommitMinter", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 154, + "linearizedBaseContracts": [ + 154, + 668, + 914, + 15626, + 28628, + 15282, + 28603, + 15100, + 85, + 3694, + 4328, + 17446, + 4052, + 4152, + 17392, + 17412, + 17374, + 3613, + 17278, + 8539, + 25136, + 15976, + 17337, + 7929, + 7814 + ], + "name": "HyperAccount9CharCommitMinter", + "nameLocation": "148:29:97", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 105, + "nodeType": "Block", + "src": "367:2:97", + "statements": [] + }, + "id": 106, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 100, + "name": "_hypermap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 93, + "src": "322:9:97", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 101, + "name": "_minCommitAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 95, + "src": "333:13:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 102, + "name": "_maxCommitAge", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "348:13:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 103, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 99, + "name": "HyperAccountCommitMinter", + "nameLocations": [ + "297:24:97" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 668, + "src": "297:24:97" + }, + "nodeType": "ModifierInvocation", + "src": "297:65:97" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 98, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 93, + "mutability": "mutable", + "name": "_hypermap", + "nameLocation": "232:9:97", + "nodeType": "VariableDeclaration", + "scope": 106, + "src": "224:17:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 92, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "224:7:97", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 95, + "mutability": "mutable", + "name": "_minCommitAge", + "nameLocation": "251:13:97", + "nodeType": "VariableDeclaration", + "scope": 106, + "src": "243:21:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 94, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "243:7:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 97, + "mutability": "mutable", + "name": "_maxCommitAge", + "nameLocation": "274:13:97", + "nodeType": "VariableDeclaration", + "scope": 106, + "src": "266:21:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 96, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "266:7:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "223:65:97" + }, + "returnParameters": { + "id": 104, + "nodeType": "ParameterList", + "parameters": [], + "src": "367:0:97" + }, + "scope": 154, + "src": "212:157:97", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 487 + ], + "body": { + "id": 120, + "nodeType": "Block", + "src": "425:102:97", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 112, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15154, + "src": "435:22:97", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "435:24:97", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 114, + "nodeType": "ExpressionStatement", + "src": "435:24:97" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "48797065724163636f756e743943686172436f6d6d69744d696e746572", + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "483:31:97", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4521650a6f0a4697c9f4fa200d0cb061380eac88321af1c7f9bebf718cd08e07", + "typeString": "literal_string \"HyperAccount9CharCommitMinter\"" + }, + "value": "HyperAccount9CharCommitMinter" + }, + { + "hexValue": "31", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "516:3:97", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_4521650a6f0a4697c9f4fa200d0cb061380eac88321af1c7f9bebf718cd08e07", + "typeString": "literal_string \"HyperAccount9CharCommitMinter\"" + }, + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 115, + "name": "__EIP712_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15339, + "src": "469:13:97", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "469:51:97", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 119, + "nodeType": "ExpressionStatement", + "src": "469:51:97" + } + ] + }, + "functionSelector": "8129fc1c", + "id": 121, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 110, + "kind": "modifierInvocation", + "modifierName": { + "id": 109, + "name": "initializer", + "nameLocations": [ + "413:11:97" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14954, + "src": "413:11:97" + }, + "nodeType": "ModifierInvocation", + "src": "413:11:97" + } + ], + "name": "initialize", + "nameLocation": "384:10:97", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 108, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "404:8:97" + }, + "parameters": { + "id": 107, + "nodeType": "ParameterList", + "parameters": [], + "src": "394:2:97" + }, + "returnParameters": { + "id": 111, + "nodeType": "ParameterList", + "parameters": [], + "src": "425:0:97" + }, + "scope": 154, + "src": "375:152:97", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 667 + ], + "body": { + "id": 152, + "nodeType": "Block", + "src": "704:133:97", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 135, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "718:4:97", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "723:6:97", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "718:11:97", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "39", + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "732:1:97", + "typeDescriptions": { + "typeIdentifier": "t_rational_9_by_1", + "typeString": "int_const 9" + }, + "value": "9" + }, + "src": "718:15:97", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 143, + "nodeType": "IfStatement", + "src": "714:46:97", + "trueBody": { + "expression": { + "arguments": [ + { + "hexValue": "4c6162656c20746f6f2073686f7274", + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "742:17:97", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a54261f0a50be55ddab24f303e60225097188662966a9eccfab5115d1249b5e5", + "typeString": "literal_string \"Label too short\"" + }, + "value": "Label too short" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a54261f0a50be55ddab24f303e60225097188662966a9eccfab5115d1249b5e5", + "typeString": "literal_string \"Label too short\"" + } + ], + "id": 139, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "735:6:97", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "735:25:97", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 142, + "nodeType": "ExpressionStatement", + "src": "735:25:97" + } + }, + { + "expression": { + "arguments": [ + { + "id": 146, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "789:2:97", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 147, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 125, + "src": "793:4:97", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 148, + "name": "initialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 127, + "src": "799:14:97", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 149, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "815:14:97", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 144, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "777:5:97", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_HyperAccount9CharCommitMinter_$154_$", + "typeString": "type(contract super HyperAccount9CharCommitMinter)" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "783:5:97", + "memberName": "_mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 667, + "src": "777:11:97", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_calldata_ptr_$_t_bytes_calldata_ptr_$_t_address_$returns$_t_address_$", + "typeString": "function (address,bytes calldata,bytes calldata,address) returns (address)" + } + }, + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "777:53:97", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 134, + "id": 151, + "nodeType": "Return", + "src": "770:60:97" + } + ] + }, + "id": 153, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "542:5:97", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 131, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "661:8:97" + }, + "parameters": { + "id": 130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 123, + "mutability": "mutable", + "name": "to", + "nameLocation": "556:2:97", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "548:10:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "548:7:97", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 125, + "mutability": "mutable", + "name": "name", + "nameLocation": "575:4:97", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "560:19:97", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 124, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "560:5:97", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 127, + "mutability": "mutable", + "name": "initialization", + "nameLocation": "596:14:97", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "581:29:97", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 126, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "581:5:97", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 129, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "620:14:97", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "612:22:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "612:7:97", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "547:88:97" + }, + "returnParameters": { + "id": 134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 133, + "mutability": "mutable", + "name": "tba", + "nameLocation": "695:3:97", + "nodeType": "VariableDeclaration", + "scope": 153, + "src": "687:11:97", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 132, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "687:7:97", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "686:13:97" + }, + "scope": 154, + "src": "533:304:97", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 155, + "src": "139:700:97", + "usedErrors": [ + 4168, + 7769, + 7771, + 7773, + 7775, + 7781, + 7789, + 7897, + 8516, + 14296, + 14301, + 14306, + 14863, + 14866, + 15127, + 15132, + 16694, + 16707, + 17042, + 29057, + 36773 + ], + "usedEvents": [ + 14871, + 28608, + 29024 + ] + } + ], + "src": "39:801:97" + }, + "bytecode": "61010060405230608052348015610014575f5ffd5b50604051612d09380380612d098339810160408190526100339161017c565b8282828261003f6100ca565b6001600160a01b031660a0528082111561007b5760405163417bc5b560e01b815260048101839052602481018290526044015b60405180910390fd5b603c61008783836101bb565b10156100b757604051638d1b692360e01b81526004810183905260248101829052603c6044820152606401610072565b60c09190915260e052506101e092505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561011a5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101795780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f5f5f6060848603121561018e575f5ffd5b83516001600160a01b03811681146101a4575f5ffd5b602085015160409095015190969495509392505050565b818103818111156101da57634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e051612acc61023d5f395f81816105a901528181610ec701526115fa01525f818161033501526115d601525f81816104ec015261167f01525f81816111a9015281816111d201526113ad0152612acc5ff3fe6080604052600436106101d2575f3560e01c806384b0196e116100fd578063bc197c8111610092578063d72ceb9c11610062578063d72ceb9c14610598578063f14fcbc8146105cb578063f23a6e61146105ea578063fc0c546a14610616575f5ffd5b8063bc197c811461052f578063c19d93fb1461055d578063ca3b98bb14610571578063d087d28814610584575f5ffd5b8063ad3cb1cc116100cd578063ad3cb1cc14610488578063b0d691fe146104b8578063b479d600146104de578063b61d27f614610510575f5ffd5b806384b0196e146103f05780638784ea96146104175780638f41ec5a146104615780639cdf379c14610475575f5ffd5b806334fcd5be11610173578063523e326011610143578063523e32601461038a57806352d1902d146103a95780636d70f7ae146103bd5780638129fc1c146103dc575f5ffd5b806334fcd5be14610305578063382e3de7146103245780634f1ef28614610357578063519454471461036a575f5ffd5b8063150b7a02116101ae578063150b7a02146102625780631626ba7e1461029a57806319822f7c146102b957806332556b4d146102e6575f5ffd5b806223de29146101dd57806301ffc9a714610203578063094cefed14610237575f5ffd5b366101d957005b5f5ffd5b3480156101e8575f5ffd5b506102016101f7366004611f1a565b5050505050505050565b005b34801561020e575f5ffd5b5061022261021d366004611fdc565b61064d565b60405190151581526020015b60405180910390f35b61024a610245366004611ff7565b610678565b6040516001600160a01b03909116815260200161022e565b34801561026d575f5ffd5b5061028161027c366004612089565b610692565b6040516001600160e01b0319909116815260200161022e565b3480156102a5575f5ffd5b506102816102b4366004612193565b6106ec565b3480156102c4575f5ffd5b506102d86102d33660046121d6565b610811565b60405190815260200161022e565b3480156102f1575f5ffd5b506102d8610300366004612224565b610843565b348015610310575f5ffd5b5061020161031f3660046122b2565b61084e565b34801561032f575f5ffd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b6102016103653660046122f0565b61093e565b61037d61037836600461233b565b61095d565b60405161022e91906123d4565b348015610395575f5ffd5b506102816103a43660046123e6565b610989565b3480156103b4575f5ffd5b506102d86109ae565b3480156103c8575f5ffd5b506102226103d7366004612436565b6109c9565b3480156103e7575f5ffd5b50610201610a67565b3480156103fb575f5ffd5b50610404610bc9565b60405161022e9796959493929190612451565b348015610422575f5ffd5b506102d86104313660046124e7565b5f9081527f659d6b2d1cd4038bbdc740615487e3191db8a386ca05e11a459fedc97f38df00602052604090205490565b34801561046c575f5ffd5b506102d8600181565b348015610480575f5ffd5b506102d85f81565b348015610493575f5ffd5b5061037d604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156104c3575f5ffd5b50734337084d9e255ff0702461cf8895ce9e3b5ff10861024a565b3480156104e9575f5ffd5b507f000000000000000000000000000000000000000000000000000000000000000061024a565b34801561051b575f5ffd5b5061020161052a3660046124fe565b610c72565b34801561053a575f5ffd5b50610281610549366004612555565b63bc197c8160e01b98975050505050505050565b348015610568575f5ffd5b506102d8610cca565b61037d61057f3660046125f5565b610db1565b34801561058f575f5ffd5b506102d8610dea565b3480156105a3575f5ffd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d6575f5ffd5b506102016105e53660046124e7565b610e73565b3480156105f5575f5ffd5b5061028161060436600461266a565b63f23a6e6160e01b9695505050505050565b348015610621575f5ffd5b5061062a610efe565b604080519384526001600160a01b0390921660208401529082015260600161022e565b5f61065782610f14565b8061067257506001600160e01b0319821663449e4a1360e01b145b92915050565b5f610687878787878787610f3e565b979650505050505050565b5f5f5f61069d610efe565b909350915050336001600160a01b0383161480156106ba57508086145b156106d85760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61070c85602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f036107d7578285830160200161072d826109c9565b15801561074357506001600160a01b0382163014155b1561075e57506001600160e01b031994506106729350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e9061078c908b9085906004016126e0565b602060405180830381865afa1580156107a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cb91906126f8565b95505050505050610672565b6107e66103d787838686610f90565b156107fe5750630b135d3f60e11b9250610672915050565b506001600160e01b031995945050505050565b5f61081a610fbc565b6108248484611021565b9050610833846020013561107e565b61083c826110c7565b9392505050565b5f61083c838361110c565b61085661113e565b805f5b81811015610938573684848381811061087457610874612713565b90506020028101906108869190612727565b90505f6108e46108996020840184612436565b60208401356108ab6040860186612745565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611146565b90508061092e5783600103610900576108fb61115c565b61092e565b8261090a5f61116d565b604051635a15467560e01b81526004016109259291906126e0565b60405180910390fd5b5050600101610859565b50505050565b61094661119e565b61094f82611242565b610959828261128a565b5050565b60605f61096e87878787875a61134b565b925090508061097f57815160208301fd5b5095945050505050565b5f610993846109c9565b61099d575f6109a6565b630291f19360e51b5b949350505050565b5f6109b76113a2565b505f516020612a775f395f51905f5290565b5f5f5f6109d4610efe565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610a21573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a459190612787565b6001600160a01b03161480156109a657505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610aab5750825b90505f826001600160401b03166001148015610ac65750303b155b905081158015610ad4575080155b15610af25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b1c57845460ff60401b1916600160401b1785555b610b246113eb565b610b7c6040518060400160405280601d81526020017f48797065724163636f756e743943686172436f6d6d69744d696e746572000000815250604051806040016040528060018152602001603160f81b8152506113f3565b8315610bc257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f60608082808083815f516020612a575f395f51905f528054909150158015610bf457506001810154155b610c385760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610925565b610c40611405565b610c486114c5565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b610c7a61113e565b5f610cbb858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611146565b905080610bc257610bc261115c565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610d4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7391906127a2565b8254604051919250610d92918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f610dce88888888888815610dc8578861134b565b5a61134b565b9250905080610ddf57815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610e4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6e91906127a2565b905090565b5f8181527f659d6b2d1cd4038bbdc740615487e3191db8a386ca05e11a459fedc97f38df0060208190526040909120544211610ec2576040516317d57db160e21b815260040160405180910390fd5b610eec7f0000000000000000000000000000000000000000000000000000000000000000426127cd565b5f838152602083905260409020555050565b5f5f5f610f09611503565b925092509250909192565b5f610f1e8261150f565b8061067257506001600160e01b03198216633c1cc5f160e01b1492915050565b5f6009851015610f825760405162461bcd60e51b815260206004820152600f60248201526e131858995b081d1bdbc81cda1bdc9d608a1b6044820152606401610925565b610687878787878787611539565b5f5f5f5f610fa08888888861170b565b925092509250610fb082826117d3565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff1081461101f5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610925565b565b5f60046110316060850185612745565b90501115611074575f61104f61104a6060860186612745565b61188b565b905063f6b3101360e01b6001600160e01b0319821601611072575f915050610672565b505b61083c83836118a2565b6001600160401b0381106110c45760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610925565b50565b80156110c4576040515f90339083908381818185875af1925050503d805f8114610bc2576040519150601f19603f3d011682016040523d82523d5f602084013e610bc2565b5f82826040516020016111209291906127e0565b60405160208183030381529060405280519060200120905092915050565b61101f610fbc565b5f5f5f845160208601878987f195945050505050565b61101f6111685f61116d565b6119af565b60603d821561118157828111156111815750815b604051602082018101604052818152815f602083013e9392505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061122457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112185f516020612a775f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561101f5760405163703e46dd60e11b815260040160405180910390fd5b61124b336109c9565b15801561126c575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b156110c457604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112e4575060408051601f3d908101601f191682019092526112e1918101906127a2565b60015b61130c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610925565b5f516020612a775f395f51905f52811461133c57604051632a87526960e21b815260048101829052602401610925565b61134683836119b7565b505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f91606091818461137e83612809565b9190505550611391898989898989611a0c565b92509250505b965096945050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461101f5760405163703e46dd60e11b815260040160405180910390fd5b61101f611b63565b6113fb611b63565b6109598282611bac565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f516020612a575f395f51905f529161144390612821565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90612821565b80156114ba5780601f10611491576101008083540402835291602001916114ba565b820191905f5260205f20905b81548152906001019060200180831161149d57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f516020612a575f395f51905f529161144390612821565b5f5f5f610f0930611c0b565b5f61151982611c5f565b8061067257506001600160e01b03198216636faff5f160e01b1492915050565b5f807f659d6b2d1cd4038bbdc740615487e3191db8a386ca05e11a459fedc97f38df0090505f815f015f6115a38a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525033925061110c915050565b81526020019081526020015f20549050805f036115d35760405163345512df60e21b815260040160405180910390fd5b427f000000000000000000000000000000000000000000000000000000000000000061161f7f000000000000000000000000000000000000000000000000000000000000000084612859565b61162991906127cd565b1061164757604051639e8ddd6d60e01b815260040160405180910390fd5b428110156116685760405163716dbcc960e01b815260040160405180910390fd5b60405163094cefed60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed906116be908c908c908c908c908c908c90600401612894565b6020604051808303815f875af11580156116da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fe9190612787565b9998505050505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561174457505f915060039050826117c9565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611795573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166117c057505f9250600191508290506117c9565b92505f91508190505b9450945094915050565b5f8260038111156117e6576117e66128e7565b036117ef575050565b6001826003811115611803576118036128e7565b036118215760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611835576118356128e7565b036118565760405163fce698f760e01b815260048101829052602401610925565b600382600381111561186a5761186a6128e7565b03610959576040516335e2f38360e21b815260048101829052602401610925565b5f600482101561189c57505f610672565b50503590565b5f80806118f0846118b7610100880188612745565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611d0092505050565b5090925090505f816003811115611909576119096128e7565b14801561191a575061191a826109c9565b15611929575f92505050610672565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c9020611969816118b7610100890189612745565b5090935091505f826003811115611982576119826128e7565b1480156119935750611993836109c9565b156119a3575f9350505050610672565b50600195945050505050565b805160208201fd5b6119c082611d49565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611a04576113468282611dac565b610959611e1e565b5f6060611a18336109c9565b158015611a39575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15611a5757604051634780295360e11b815260040160405180910390fd5b8360ff165f03611ac857876001600160a01b031683888888604051611a7d9291906128fb565b5f60405180830381858888f193505050503d805f8114611ab8576040519150601f19603f3d011682016040523d82523d5f602084013e611abd565b606091505b509092509050611397565b8360ff16600103611b2757876001600160a01b0316838787604051611aee9291906128fb565b5f604051808303818686f4925050503d805f8114611ab8576040519150601f19603f3d011682016040523d82523d5f602084013e611abd565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610925565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661101f57604051631afcd79f60e31b815260040160405180910390fd5b611bb4611b63565b5f516020612a575f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611bed848261294e565b5060038101611bfc838261294e565b505f8082556001909101555050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611c519190612a08565b935093509350509193909250565b5f6001600160e01b03198216633ce4a3e960e01b1480611c8f57506001600160e01b031982166301ffc9a760e01b145b80611caa57506001600160e01b031982166306608bdf60e21b145b80611cc557506001600160e01b03198216630b135d3f60e11b145b80611ce057506001600160e01b03198216630271189760e51b145b8061067257506001600160e01b03198216635194544760e01b1492915050565b5f5f5f8351604103611d37576020840151604085015160608601515f1a611d298882858561170b565b955095509550505050611d42565b505081515f91506002905b9250925092565b806001600160a01b03163b5f03611d7e57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610925565b5f516020612a775f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611dc89190612a40565b5f60405180830381855af49150503d805f8114611e00576040519150601f19603f3d011682016040523d82523d5f602084013e611e05565b606091505b5091509150611e15858383611e3d565b95945050505050565b341561101f5760405163b398979f60e01b815260040160405180910390fd5b606082611e5257611e4d82611e99565b61083c565b8151158015611e6957506001600160a01b0384163b155b15611e9257604051639996b31560e01b81526001600160a01b0385166004820152602401610925565b508061083c565b805115611ea95780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b03811681146110c4575f5ffd5b5f5f83601f840112611ee6575f5ffd5b5081356001600160401b03811115611efc575f5ffd5b602083019150836020828501011115611f13575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611f31575f5ffd5b8835611f3c81611ec2565b97506020890135611f4c81611ec2565b96506040890135611f5c81611ec2565b95506060890135945060808901356001600160401b03811115611f7d575f5ffd5b611f898b828c01611ed6565b90955093505060a08901356001600160401b03811115611fa7575f5ffd5b611fb38b828c01611ed6565b999c989b5096995094979396929594505050565b6001600160e01b0319811681146110c4575f5ffd5b5f60208284031215611fec575f5ffd5b813561083c81611fc7565b5f5f5f5f5f5f6080878903121561200c575f5ffd5b863561201781611ec2565b955060208701356001600160401b03811115612031575f5ffd5b61203d89828a01611ed6565b90965094505060408701356001600160401b0381111561205b575f5ffd5b61206789828a01611ed6565b909450925050606087013561207b81611ec2565b809150509295509295509295565b5f5f5f5f5f6080868803121561209d575f5ffd5b85356120a881611ec2565b945060208601356120b881611ec2565b93506040860135925060608601356001600160401b038111156120d9575f5ffd5b6120e588828901611ed6565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112612119575f5ffd5b81356001600160401b03811115612132576121326120f6565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612160576121606120f6565b604052818152838201602001851015612177575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156121a4575f5ffd5b8235915060208301356001600160401b038111156121c0575f5ffd5b6121cc8582860161210a565b9150509250929050565b5f5f5f606084860312156121e8575f5ffd5b83356001600160401b038111156121fd575f5ffd5b8401610120818703121561220f575f5ffd5b95602085013595506040909401359392505050565b5f5f60408385031215612235575f5ffd5b82356001600160401b0381111561224a575f5ffd5b6122568582860161210a565b925050602083013561226781611ec2565b809150509250929050565b5f5f83601f840112612282575f5ffd5b5081356001600160401b03811115612298575f5ffd5b6020830191508360208260051b8501011115611f13575f5ffd5b5f5f602083850312156122c3575f5ffd5b82356001600160401b038111156122d8575f5ffd5b6122e485828601612272565b90969095509350505050565b5f5f60408385031215612301575f5ffd5b823561230c81611ec2565b915060208301356001600160401b038111156121c0575f5ffd5b803560ff81168114612336575f5ffd5b919050565b5f5f5f5f5f6080868803121561234f575f5ffd5b853561235a81611ec2565b94506020860135935060408601356001600160401b0381111561237b575f5ffd5b61238788828901611ed6565b909450925061239a905060608701612326565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61083c60208301846123a6565b5f5f5f604084860312156123f8575f5ffd5b833561240381611ec2565b925060208401356001600160401b0381111561241d575f5ffd5b61242986828701611ed6565b9497909650939450505050565b5f60208284031215612446575f5ffd5b813561083c81611ec2565b60ff60f81b8816815260e060208201525f61246f60e08301896123a6565b828103604084015261248181896123a6565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156124d65783518352602093840193909201916001016124b8565b50909b9a5050505050505050505050565b5f602082840312156124f7575f5ffd5b5035919050565b5f5f5f5f60608587031215612511575f5ffd5b843561251c81611ec2565b93506020850135925060408501356001600160401b0381111561253d575f5ffd5b61254987828801611ed6565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b03121561256c575f5ffd5b883561257781611ec2565b9750602089013561258781611ec2565b965060408901356001600160401b038111156125a1575f5ffd5b6125ad8b828c01612272565b90975095505060608901356001600160401b038111156125cb575f5ffd5b6125d78b828c01612272565b90955093505060808901356001600160401b03811115611fa7575f5ffd5b5f5f5f5f5f5f60a0878903121561260a575f5ffd5b863561261581611ec2565b95506020870135945060408701356001600160401b03811115612636575f5ffd5b61264289828a01611ed6565b9095509350612655905060608801612326565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a0878903121561267f575f5ffd5b863561268a81611ec2565b9550602087013561269a81611ec2565b9450604087013593506060870135925060808701356001600160401b038111156126c2575f5ffd5b6126ce89828a01611ed6565b979a9699509497509295939492505050565b828152604060208201525f6109a660408301846123a6565b5f60208284031215612708575f5ffd5b815161083c81611fc7565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261273b575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261275a575f5ffd5b8301803591506001600160401b03821115612773575f5ffd5b602001915036819003821315611f13575f5ffd5b5f60208284031215612797575f5ffd5b815161083c81611ec2565b5f602082840312156127b2575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610672576106726127b9565b604081525f6127f260408301856123a6565b905060018060a01b03831660208301529392505050565b5f6001820161281a5761281a6127b9565b5060010190565b600181811c9082168061283557607f821691505b60208210810361285357634e487b7160e01b5f52602260045260245ffd5b50919050565b81810381811115610672576106726127b9565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f906128b8908301878961286c565b82810360408401526128cb81868861286c565b91505060018060a01b0383166060830152979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b601f82111561134657805f5260205f20601f840160051c8101602085101561292f5750805b601f840160051c820191505b81811015610bc2575f815560010161293b565b81516001600160401b03811115612967576129676120f6565b61297b816129758454612821565b8461290a565b6020601f8211600181146129ad575f83156129965750848201515b5f19600385901b1c1916600184901b178455610bc2565b5f84815260208120601f198516915b828110156129dc57878501518255602094850194600190920191016129bc565b50848210156129f957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f5f60608486031215612a1a575f5ffd5b83516020850151909350612a2d81611ec2565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220f58c9e12d248e4c83ceb8d478aa89f0e5955ddfc00b72094584abf097958406c64736f6c634300081c0033", + "bytecodeSha1": "02e09ea151f2e03acf60c0e7d3b49e47cbde22eb", + "compiler": { + "evm_version": "cancun", + "optimizer": { + "enabled": true, + "runs": 200 + }, + "version": "0.8.28+commit.7893614a" + }, + "contractName": "HyperAccount9CharCommitMinter", + "coverageMap": { + "branches": { + "10": {}, + "101": { + "HyperAccountMinterUpgradable._selector": { + "94": [ + 3689, + 3704, + false + ] + }, + "HyperAccountMinterUpgradable._validateSignature": { + "92": [ + 3172, + 3198, + false + ], + "93": [ + 3346, + 3366, + false + ] + } + }, + "109": { + "Account._validateNonce": { + "75": [ + 1459, + 1483, + true + ] + } + }, + "110": { + "ERC721TokenBoundMech.onERC721Received": { + "83": [ + 839, + 871, + false + ], + "84": [ + 875, + 906, + false + ] + } + }, + "111": { + "Mech._exec": { + "100": [ + 1240, + 1262, + false + ], + "101": [ + 1266, + 1301, + false + ], + "102": [ + 4218, + 4232, + false + ], + "103": [ + 4332, + 4346, + false + ] + }, + "Mech.execute": { + "99": [ + 5191, + 5201, + true + ] + }, + "Mech.isValidSignature": { + "95": [ + 2501, + 2507, + false + ], + "96": [ + 3200, + 3227, + false + ], + "97": [ + 3231, + 3263, + false + ], + "98": [ + 3480, + 3520, + false + ] + } + }, + "112": {}, + "113": { + "TokenBoundMech.isValidSigner": { + "104": [ + 3113, + 3131, + true + ] + } + }, + "124": {}, + "126": {}, + "13": {}, + "134": {}, + "5": {}, + "67": {}, + "68": { + "UUPSUpgradeable._checkNotDelegated": { + "108": [ + 5098, + 5121, + false + ] + }, + "UUPSUpgradeable._checkProxy": { + "105": [ + 4675, + 4698, + true + ], + "106": [ + 4753, + 4795, + false + ] + }, + "UUPSUpgradeable._upgradeToAndCallUUPS": { + "107": [ + 6250, + 6290, + false + ] + } + }, + "75": { + "EIP712Upgradeable.eip712Domain": { + "81": [ + 5777, + 5795, + false + ], + "82": [ + 5799, + 5820, + true + ] + } + }, + "77": {}, + "78": {}, + "82": {}, + "83": {}, + "84": {}, + "85": { + "BaseAccount._payPrefund": { + "80": [ + 5892, + 5916, + false + ] + }, + "BaseAccount._requireFromEntryPoint": { + "79": [ + 3040, + 3075, + true + ] + }, + "BaseAccount.execute": { + "78": [ + 1576, + 1578, + false + ] + }, + "BaseAccount.executeBatch": { + "76": [ + 2218, + 2220, + false + ], + "77": [ + 2244, + 2260, + false + ] + } + }, + "88": {}, + "96": { + "HyperAccount._validateSignature": { + "85": [ + 831, + 866, + false + ], + "86": [ + 870, + 897, + false + ], + "87": [ + 1180, + 1215, + false + ], + "88": [ + 1219, + 1246, + false + ] + } + }, + "97": { + "HyperAccount9CharCommitMinter._mint": { + "74": [ + 718, + 733, + false + ] + } + }, + "99": { + "HyperAccountCommitMinter._mint": { + "89": [ + 3376, + 3397, + false + ], + "90": [ + 3531, + 3596, + false + ], + "91": [ + 3728, + 3762, + false + ] + } + } + }, + "statements": { + "10": {}, + "101": { + "HyperAccountMinterUpgradable._selector": { + "60": [ + 3706, + 3722 + ] + }, + "HyperAccountMinterUpgradable._validateSignature": { + "41": [ + 3386, + 3417 + ], + "42": [ + 3536, + 3587 + ] + }, + "HyperAccountMinterUpgradable.hypermap": { + "1": [ + 2117, + 2133 + ] + }, + "HyperAccountMinterUpgradable.mint": { + "3": [ + 2554, + 2608 + ] + }, + "HyperAccountMinterUpgradable.supportsInterface": { + "37": [ + 2263, + 2362 + ] + } + }, + "109": { + "Account._validateNonce": { + "43": [ + 1451, + 1501 + ] + } + }, + "110": { + "ERC721TokenBoundMech.isOperator": { + "24": [ + 498, + 578 + ] + }, + "ERC721TokenBoundMech.onERC721Received": { + "4": [ + 835, + 956 + ], + "5": [ + 966, + 1003 + ] + } + }, + "111": { + "Mech._exec": { + "64": [ + 4248, + 4311 + ], + "65": [ + 4362, + 4419 + ], + "66": [ + 4450, + 4477 + ] + }, + "Mech.execute": { + "21": [ + 5972, + 6040 + ], + "22": [ + 6051, + 6254 + ], + "32": [ + 5133, + 5222 + ], + "33": [ + 5233, + 5436 + ] + }, + "Mech.isValidSignature": { + "6": [ + 2448, + 2486 + ], + "7": [ + 3283, + 3300 + ], + "8": [ + 3329, + 3403 + ], + "9": [ + 3540, + 3565 + ], + "10": [ + 3600, + 3617 + ] + }, + "Mech.supportsInterface": { + "73": [ + 7141, + 7452 + ] + } + }, + "112": {}, + "113": { + "TokenBoundMech._exec": { + "49": [ + 3601, + 3617 + ], + "50": [ + 3666, + 3719 + ] + }, + "TokenBoundMech.isValidSigner": { + "23": [ + 3106, + 3184 + ] + }, + "TokenBoundMech.state": { + "31": [ + 2406, + 2478 + ] + }, + "TokenBoundMech.supportsInterface": { + "55": [ + 3833, + 3928 + ] + }, + "TokenBoundMech.token": { + "36": [ + 2596, + 2628 + ] + } + }, + "124": {}, + "126": {}, + "13": {}, + "134": {}, + "5": {}, + "67": { + "Initializable._checkInitializing": { + "68": [ + 7146, + 7219 + ] + }, + "Initializable._isInitializing": { + "67": [ + 8553, + 8600 + ] + } + }, + "68": { + "UUPSUpgradeable._checkNotDelegated": { + "51": [ + 5094, + 5239 + ] + }, + "UUPSUpgradeable._checkProxy": { + "46": [ + 4658, + 4909 + ] + }, + "UUPSUpgradeable._upgradeToAndCallUUPS": { + "47": [ + 6246, + 6366 + ], + "48": [ + 6379, + 6433 + ] + }, + "UUPSUpgradeable.upgradeToAndCall": { + "19": [ + 4276, + 4312 + ], + "20": [ + 4322, + 4368 + ] + } + }, + "75": { + "EIP712Upgradeable._EIP712Name": { + "53": [ + 6434, + 6448 + ] + }, + "EIP712Upgradeable._EIP712Version": { + "54": [ + 6819, + 6836 + ] + }, + "EIP712Upgradeable.__EIP712_init": { + "52": [ + 3548, + 3586 + ] + }, + "EIP712Upgradeable.__EIP712_init_unchained": { + "69": [ + 3766, + 3780 + ], + "70": [ + 3790, + 3810 + ], + "71": [ + 3875, + 3892 + ], + "72": [ + 3902, + 3922 + ] + }, + "EIP712Upgradeable.eip712Domain": { + "27": [ + 5769, + 5846 + ], + "28": [ + 5857, + 6069 + ] + } + }, + "77": {}, + "78": {}, + "82": {}, + "83": {}, + "84": {}, + "85": { + "BaseAccount._requireForExecute": { + "45": [ + 3204, + 3228 + ] + }, + "BaseAccount._requireFromEntryPoint": { + "40": [ + 3019, + 3129 + ] + }, + "BaseAccount.execute": { + "29": [ + 1479, + 1499 + ], + "30": [ + 1594, + 1621 + ] + }, + "BaseAccount.executeBatch": { + "16": [ + 1959, + 1979 + ], + "17": [ + 2284, + 2311 + ], + "18": [ + 2071, + 2074 + ] + }, + "BaseAccount.getNonce": { + "34": [ + 1049, + 1095 + ] + }, + "BaseAccount.validateUserOp": { + "11": [ + 2696, + 2720 + ], + "12": [ + 2730, + 2785 + ], + "13": [ + 2795, + 2823 + ], + "14": [ + 2833, + 2865 + ] + } + }, + "88": {}, + "96": { + "HyperAccount._validateSignature": { + "61": [ + 913, + 944 + ], + "62": [ + 1097, + 1165 + ], + "63": [ + 1262, + 1293 + ] + } + }, + "97": { + "HyperAccount9CharCommitMinter._mint": { + "38": [ + 735, + 760 + ], + "39": [ + 770, + 830 + ] + }, + "HyperAccount9CharCommitMinter.initialize": { + "25": [ + 435, + 459 + ], + "26": [ + 469, + 520 + ] + } + }, + "99": { + "HyperAccountCommitMinter._getCommitHash": { + "44": [ + 2664, + 2706 + ] + }, + "HyperAccountCommitMinter._mint": { + "56": [ + 3372, + 3447 + ], + "57": [ + 3527, + 3644 + ], + "58": [ + 3724, + 3810 + ], + "59": [ + 3820, + 3883 + ] + }, + "HyperAccountCommitMinter.commit": { + "35": [ + 2049, + 2100 + ] + }, + "HyperAccountCommitMinter.getCommit": { + "0": [ + 2888, + 2913 + ] + }, + "HyperAccountCommitMinter.getCommitHash": { + "15": [ + 2223, + 2258 + ] + }, + "HyperAccountCommitMinter.supportsInterface": { + "2": [ + 2446, + 2550 + ] + } + } + } + }, + "dependencies": [ + "Account", + "BaseAccount", + "EIP712Upgradeable", + "ERC1155TokenReceiver", + "ERC721TokenBoundMech", + "ERC721TokenReceiver", + "ERC777TokensRecipient", + "HyperAccount", + "HyperAccountCommitMinter", + "HyperAccountMinterUpgradable", + "IAccount", + "IERC1271", + "IERC1822Proxiable", + "IERC5267", + "IERC6551Account", + "IERC6551Executable", + "IHyperAccountCommittable", + "IHyperAccountMinter", + "IMech", + "Initializable", + "Mech", + "Receiver", + "TokenBoundMech", + "UUPSUpgradeable" + ], + "deployedBytecode": "6080604052600436106101d2575f3560e01c806384b0196e116100fd578063bc197c8111610092578063d72ceb9c11610062578063d72ceb9c14610598578063f14fcbc8146105cb578063f23a6e61146105ea578063fc0c546a14610616575f5ffd5b8063bc197c811461052f578063c19d93fb1461055d578063ca3b98bb14610571578063d087d28814610584575f5ffd5b8063ad3cb1cc116100cd578063ad3cb1cc14610488578063b0d691fe146104b8578063b479d600146104de578063b61d27f614610510575f5ffd5b806384b0196e146103f05780638784ea96146104175780638f41ec5a146104615780639cdf379c14610475575f5ffd5b806334fcd5be11610173578063523e326011610143578063523e32601461038a57806352d1902d146103a95780636d70f7ae146103bd5780638129fc1c146103dc575f5ffd5b806334fcd5be14610305578063382e3de7146103245780634f1ef28614610357578063519454471461036a575f5ffd5b8063150b7a02116101ae578063150b7a02146102625780631626ba7e1461029a57806319822f7c146102b957806332556b4d146102e6575f5ffd5b806223de29146101dd57806301ffc9a714610203578063094cefed14610237575f5ffd5b366101d957005b5f5ffd5b3480156101e8575f5ffd5b506102016101f7366004611f1a565b5050505050505050565b005b34801561020e575f5ffd5b5061022261021d366004611fdc565b61064d565b60405190151581526020015b60405180910390f35b61024a610245366004611ff7565b610678565b6040516001600160a01b03909116815260200161022e565b34801561026d575f5ffd5b5061028161027c366004612089565b610692565b6040516001600160e01b0319909116815260200161022e565b3480156102a5575f5ffd5b506102816102b4366004612193565b6106ec565b3480156102c4575f5ffd5b506102d86102d33660046121d6565b610811565b60405190815260200161022e565b3480156102f1575f5ffd5b506102d8610300366004612224565b610843565b348015610310575f5ffd5b5061020161031f3660046122b2565b61084e565b34801561032f575f5ffd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b6102016103653660046122f0565b61093e565b61037d61037836600461233b565b61095d565b60405161022e91906123d4565b348015610395575f5ffd5b506102816103a43660046123e6565b610989565b3480156103b4575f5ffd5b506102d86109ae565b3480156103c8575f5ffd5b506102226103d7366004612436565b6109c9565b3480156103e7575f5ffd5b50610201610a67565b3480156103fb575f5ffd5b50610404610bc9565b60405161022e9796959493929190612451565b348015610422575f5ffd5b506102d86104313660046124e7565b5f9081527f659d6b2d1cd4038bbdc740615487e3191db8a386ca05e11a459fedc97f38df00602052604090205490565b34801561046c575f5ffd5b506102d8600181565b348015610480575f5ffd5b506102d85f81565b348015610493575f5ffd5b5061037d604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156104c3575f5ffd5b50734337084d9e255ff0702461cf8895ce9e3b5ff10861024a565b3480156104e9575f5ffd5b507f000000000000000000000000000000000000000000000000000000000000000061024a565b34801561051b575f5ffd5b5061020161052a3660046124fe565b610c72565b34801561053a575f5ffd5b50610281610549366004612555565b63bc197c8160e01b98975050505050505050565b348015610568575f5ffd5b506102d8610cca565b61037d61057f3660046125f5565b610db1565b34801561058f575f5ffd5b506102d8610dea565b3480156105a3575f5ffd5b506102d87f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d6575f5ffd5b506102016105e53660046124e7565b610e73565b3480156105f5575f5ffd5b5061028161060436600461266a565b63f23a6e6160e01b9695505050505050565b348015610621575f5ffd5b5061062a610efe565b604080519384526001600160a01b0390921660208401529082015260600161022e565b5f61065782610f14565b8061067257506001600160e01b0319821663449e4a1360e01b145b92915050565b5f610687878787878787610f3e565b979650505050505050565b5f5f5f61069d610efe565b909350915050336001600160a01b0383161480156106ba57508086145b156106d85760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61070c85602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f036107d7578285830160200161072d826109c9565b15801561074357506001600160a01b0382163014155b1561075e57506001600160e01b031994506106729350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e9061078c908b9085906004016126e0565b602060405180830381865afa1580156107a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107cb91906126f8565b95505050505050610672565b6107e66103d787838686610f90565b156107fe5750630b135d3f60e11b9250610672915050565b506001600160e01b031995945050505050565b5f61081a610fbc565b6108248484611021565b9050610833846020013561107e565b61083c826110c7565b9392505050565b5f61083c838361110c565b61085661113e565b805f5b81811015610938573684848381811061087457610874612713565b90506020028101906108869190612727565b90505f6108e46108996020840184612436565b60208401356108ab6040860186612745565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611146565b90508061092e5783600103610900576108fb61115c565b61092e565b8261090a5f61116d565b604051635a15467560e01b81526004016109259291906126e0565b60405180910390fd5b5050600101610859565b50505050565b61094661119e565b61094f82611242565b610959828261128a565b5050565b60605f61096e87878787875a61134b565b925090508061097f57815160208301fd5b5095945050505050565b5f610993846109c9565b61099d575f6109a6565b630291f19360e51b5b949350505050565b5f6109b76113a2565b505f516020612a775f395f51905f5290565b5f5f5f6109d4610efe565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610a21573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a459190612787565b6001600160a01b03161480156109a657505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610aab5750825b90505f826001600160401b03166001148015610ac65750303b155b905081158015610ad4575080155b15610af25760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b1c57845460ff60401b1916600160401b1785555b610b246113eb565b610b7c6040518060400160405280601d81526020017f48797065724163636f756e743943686172436f6d6d69744d696e746572000000815250604051806040016040528060018152602001603160f81b8152506113f3565b8315610bc257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f60608082808083815f516020612a575f395f51905f528054909150158015610bf457506001810154155b610c385760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610925565b610c40611405565b610c486114c5565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b610c7a61113e565b5f610cbb858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611146565b905080610bc257610bc261115c565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610d4f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7391906127a2565b8254604051919250610d92918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f610dce88888888888815610dc8578861134b565b5a61134b565b9250905080610ddf57815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610e4a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6e91906127a2565b905090565b5f8181527f659d6b2d1cd4038bbdc740615487e3191db8a386ca05e11a459fedc97f38df0060208190526040909120544211610ec2576040516317d57db160e21b815260040160405180910390fd5b610eec7f0000000000000000000000000000000000000000000000000000000000000000426127cd565b5f838152602083905260409020555050565b5f5f5f610f09611503565b925092509250909192565b5f610f1e8261150f565b8061067257506001600160e01b03198216633c1cc5f160e01b1492915050565b5f6009851015610f825760405162461bcd60e51b815260206004820152600f60248201526e131858995b081d1bdbc81cda1bdc9d608a1b6044820152606401610925565b610687878787878787611539565b5f5f5f5f610fa08888888861170b565b925092509250610fb082826117d3565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff1081461101f5760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610925565b565b5f60046110316060850185612745565b90501115611074575f61104f61104a6060860186612745565b61188b565b905063f6b3101360e01b6001600160e01b0319821601611072575f915050610672565b505b61083c83836118a2565b6001600160401b0381106110c45760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610925565b50565b80156110c4576040515f90339083908381818185875af1925050503d805f8114610bc2576040519150601f19603f3d011682016040523d82523d5f602084013e610bc2565b5f82826040516020016111209291906127e0565b60405160208183030381529060405280519060200120905092915050565b61101f610fbc565b5f5f5f845160208601878987f195945050505050565b61101f6111685f61116d565b6119af565b60603d821561118157828111156111815750815b604051602082018101604052818152815f602083013e9392505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061122457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166112185f516020612a775f395f51905f52546001600160a01b031690565b6001600160a01b031614155b1561101f5760405163703e46dd60e11b815260040160405180910390fd5b61124b336109c9565b15801561126c575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b156110c457604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112e4575060408051601f3d908101601f191682019092526112e1918101906127a2565b60015b61130c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610925565b5f516020612a775f395f51905f52811461133c57604051632a87526960e21b815260048101829052602401610925565b61134683836119b7565b505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f91606091818461137e83612809565b9190505550611391898989898989611a0c565b92509250505b965096945050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461101f5760405163703e46dd60e11b815260040160405180910390fd5b61101f611b63565b6113fb611b63565b6109598282611bac565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f516020612a575f395f51905f529161144390612821565b80601f016020809104026020016040519081016040528092919081815260200182805461146f90612821565b80156114ba5780601f10611491576101008083540402835291602001916114ba565b820191905f5260205f20905b81548152906001019060200180831161149d57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f516020612a575f395f51905f529161144390612821565b5f5f5f610f0930611c0b565b5f61151982611c5f565b8061067257506001600160e01b03198216636faff5f160e01b1492915050565b5f807f659d6b2d1cd4038bbdc740615487e3191db8a386ca05e11a459fedc97f38df0090505f815f015f6115a38a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525033925061110c915050565b81526020019081526020015f20549050805f036115d35760405163345512df60e21b815260040160405180910390fd5b427f000000000000000000000000000000000000000000000000000000000000000061161f7f000000000000000000000000000000000000000000000000000000000000000084612859565b61162991906127cd565b1061164757604051639e8ddd6d60e01b815260040160405180910390fd5b428110156116685760405163716dbcc960e01b815260040160405180910390fd5b60405163094cefed60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed906116be908c908c908c908c908c908c90600401612894565b6020604051808303815f875af11580156116da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116fe9190612787565b9998505050505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561174457505f915060039050826117c9565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611795573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166117c057505f9250600191508290506117c9565b92505f91508190505b9450945094915050565b5f8260038111156117e6576117e66128e7565b036117ef575050565b6001826003811115611803576118036128e7565b036118215760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115611835576118356128e7565b036118565760405163fce698f760e01b815260048101829052602401610925565b600382600381111561186a5761186a6128e7565b03610959576040516335e2f38360e21b815260048101829052602401610925565b5f600482101561189c57505f610672565b50503590565b5f80806118f0846118b7610100880188612745565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611d0092505050565b5090925090505f816003811115611909576119096128e7565b14801561191a575061191a826109c9565b15611929575f92505050610672565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c9020611969816118b7610100890189612745565b5090935091505f826003811115611982576119826128e7565b1480156119935750611993836109c9565b156119a3575f9350505050610672565b50600195945050505050565b805160208201fd5b6119c082611d49565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611a04576113468282611dac565b610959611e1e565b5f6060611a18336109c9565b158015611a39575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15611a5757604051634780295360e11b815260040160405180910390fd5b8360ff165f03611ac857876001600160a01b031683888888604051611a7d9291906128fb565b5f60405180830381858888f193505050503d805f8114611ab8576040519150601f19603f3d011682016040523d82523d5f602084013e611abd565b606091505b509092509050611397565b8360ff16600103611b2757876001600160a01b0316838787604051611aee9291906128fb565b5f604051808303818686f4925050503d805f8114611ab8576040519150601f19603f3d011682016040523d82523d5f602084013e611abd565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610925565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661101f57604051631afcd79f60e31b815260040160405180910390fd5b611bb4611b63565b5f516020612a575f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611bed848261294e565b5060038101611bfc838261294e565b505f8082556001909101555050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611c519190612a08565b935093509350509193909250565b5f6001600160e01b03198216633ce4a3e960e01b1480611c8f57506001600160e01b031982166301ffc9a760e01b145b80611caa57506001600160e01b031982166306608bdf60e21b145b80611cc557506001600160e01b03198216630b135d3f60e11b145b80611ce057506001600160e01b03198216630271189760e51b145b8061067257506001600160e01b03198216635194544760e01b1492915050565b5f5f5f8351604103611d37576020840151604085015160608601515f1a611d298882858561170b565b955095509550505050611d42565b505081515f91506002905b9250925092565b806001600160a01b03163b5f03611d7e57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610925565b5f516020612a775f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611dc89190612a40565b5f60405180830381855af49150503d805f8114611e00576040519150601f19603f3d011682016040523d82523d5f602084013e611e05565b606091505b5091509150611e15858383611e3d565b95945050505050565b341561101f5760405163b398979f60e01b815260040160405180910390fd5b606082611e5257611e4d82611e99565b61083c565b8151158015611e6957506001600160a01b0384163b155b15611e9257604051639996b31560e01b81526001600160a01b0385166004820152602401610925565b508061083c565b805115611ea95780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b03811681146110c4575f5ffd5b5f5f83601f840112611ee6575f5ffd5b5081356001600160401b03811115611efc575f5ffd5b602083019150836020828501011115611f13575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611f31575f5ffd5b8835611f3c81611ec2565b97506020890135611f4c81611ec2565b96506040890135611f5c81611ec2565b95506060890135945060808901356001600160401b03811115611f7d575f5ffd5b611f898b828c01611ed6565b90955093505060a08901356001600160401b03811115611fa7575f5ffd5b611fb38b828c01611ed6565b999c989b5096995094979396929594505050565b6001600160e01b0319811681146110c4575f5ffd5b5f60208284031215611fec575f5ffd5b813561083c81611fc7565b5f5f5f5f5f5f6080878903121561200c575f5ffd5b863561201781611ec2565b955060208701356001600160401b03811115612031575f5ffd5b61203d89828a01611ed6565b90965094505060408701356001600160401b0381111561205b575f5ffd5b61206789828a01611ed6565b909450925050606087013561207b81611ec2565b809150509295509295509295565b5f5f5f5f5f6080868803121561209d575f5ffd5b85356120a881611ec2565b945060208601356120b881611ec2565b93506040860135925060608601356001600160401b038111156120d9575f5ffd5b6120e588828901611ed6565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112612119575f5ffd5b81356001600160401b03811115612132576121326120f6565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612160576121606120f6565b604052818152838201602001851015612177575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156121a4575f5ffd5b8235915060208301356001600160401b038111156121c0575f5ffd5b6121cc8582860161210a565b9150509250929050565b5f5f5f606084860312156121e8575f5ffd5b83356001600160401b038111156121fd575f5ffd5b8401610120818703121561220f575f5ffd5b95602085013595506040909401359392505050565b5f5f60408385031215612235575f5ffd5b82356001600160401b0381111561224a575f5ffd5b6122568582860161210a565b925050602083013561226781611ec2565b809150509250929050565b5f5f83601f840112612282575f5ffd5b5081356001600160401b03811115612298575f5ffd5b6020830191508360208260051b8501011115611f13575f5ffd5b5f5f602083850312156122c3575f5ffd5b82356001600160401b038111156122d8575f5ffd5b6122e485828601612272565b90969095509350505050565b5f5f60408385031215612301575f5ffd5b823561230c81611ec2565b915060208301356001600160401b038111156121c0575f5ffd5b803560ff81168114612336575f5ffd5b919050565b5f5f5f5f5f6080868803121561234f575f5ffd5b853561235a81611ec2565b94506020860135935060408601356001600160401b0381111561237b575f5ffd5b61238788828901611ed6565b909450925061239a905060608701612326565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61083c60208301846123a6565b5f5f5f604084860312156123f8575f5ffd5b833561240381611ec2565b925060208401356001600160401b0381111561241d575f5ffd5b61242986828701611ed6565b9497909650939450505050565b5f60208284031215612446575f5ffd5b813561083c81611ec2565b60ff60f81b8816815260e060208201525f61246f60e08301896123a6565b828103604084015261248181896123a6565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156124d65783518352602093840193909201916001016124b8565b50909b9a5050505050505050505050565b5f602082840312156124f7575f5ffd5b5035919050565b5f5f5f5f60608587031215612511575f5ffd5b843561251c81611ec2565b93506020850135925060408501356001600160401b0381111561253d575f5ffd5b61254987828801611ed6565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b03121561256c575f5ffd5b883561257781611ec2565b9750602089013561258781611ec2565b965060408901356001600160401b038111156125a1575f5ffd5b6125ad8b828c01612272565b90975095505060608901356001600160401b038111156125cb575f5ffd5b6125d78b828c01612272565b90955093505060808901356001600160401b03811115611fa7575f5ffd5b5f5f5f5f5f5f60a0878903121561260a575f5ffd5b863561261581611ec2565b95506020870135945060408701356001600160401b03811115612636575f5ffd5b61264289828a01611ed6565b9095509350612655905060608801612326565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a0878903121561267f575f5ffd5b863561268a81611ec2565b9550602087013561269a81611ec2565b9450604087013593506060870135925060808701356001600160401b038111156126c2575f5ffd5b6126ce89828a01611ed6565b979a9699509497509295939492505050565b828152604060208201525f6109a660408301846123a6565b5f60208284031215612708575f5ffd5b815161083c81611fc7565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261273b575f5ffd5b9190910192915050565b5f5f8335601e1984360301811261275a575f5ffd5b8301803591506001600160401b03821115612773575f5ffd5b602001915036819003821315611f13575f5ffd5b5f60208284031215612797575f5ffd5b815161083c81611ec2565b5f602082840312156127b2575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610672576106726127b9565b604081525f6127f260408301856123a6565b905060018060a01b03831660208301529392505050565b5f6001820161281a5761281a6127b9565b5060010190565b600181811c9082168061283557607f821691505b60208210810361285357634e487b7160e01b5f52602260045260245ffd5b50919050565b81810381811115610672576106726127b9565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f906128b8908301878961286c565b82810360408401526128cb81868861286c565b91505060018060a01b0383166060830152979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b601f82111561134657805f5260205f20601f840160051c8101602085101561292f5750805b601f840160051c820191505b81811015610bc2575f815560010161293b565b81516001600160401b03811115612967576129676120f6565b61297b816129758454612821565b8461290a565b6020601f8211600181146129ad575f83156129965750848201515b5f19600385901b1c1916600184901b178455610bc2565b5f84815260208120601f198516915b828110156129dc57878501518255602094850194600190920191016129bc565b50848210156129f957868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f5f60608486031215612a1a575f5ffd5b83516020850151909350612a2d81611ec2565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220f58c9e12d248e4c83ceb8d478aa89f0e5955ddfc00b72094584abf097958406c64736f6c634300081c0033", + "deployedSourceMap": "139:700:97:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:187:112;;;;;;;;;;-1:-1:-1;1416:187:112;;;;;:::i;:::-;;;;;;;;;;;;2271:286:99;;;;;;;;;;-1:-1:-1;2271:286:99;;;;;:::i;:::-;;:::i;:::-;;;2310:14:149;;2303:22;2285:41;;2273:2;2258:18;2271:286:99;;;;;;;;2375:240:101;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3495:32:149;;;3477:51;;3465:2;3450:18;2375:240:101;3331:203:149;591:419:110;;;;;;;;;;-1:-1:-1;591:419:110;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;4512:33:149;;;4494:52;;4482:2;4467:18;591:419:110;4350:202:149;2199:1425:111;;;;;;;;;;-1:-1:-1;2199:1425:111;;;;;:::i;:::-;;:::i;2487:385:85:-;;;;;;;;;;-1:-1:-1;2487:385:85;;;;;:::i;:::-;;:::i;:::-;;;6643:25:149;;;6631:2;6616:18;2487:385:85;6497:177:149;2123:142:99;;;;;;;;;;-1:-1:-1;2123:142:99;;;;;:::i;:::-;;:::i;1887:565:85:-;;;;;;;;;;-1:-1:-1;1887:565:85;;;;;:::i;:::-;;:::i;330:37:99:-;;;;;;;;;;;;;;;4161:214:68;;;;;;:::i;:::-;;:::i;5779:481:111:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2999:192:113:-;;;;;;;;;;-1:-1:-1;2999:192:113;;;;;:::i;:::-;;:::i;3708:134:68:-;;;;;;;;;;;;;:::i;346:239:110:-;;;;;;;;;;-1:-1:-1;346:239:110;;;;;:::i;:::-;;:::i;375:152:97:-;;;;;;;;;;;;;:::i;5173:903:75:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;2719:201:99:-;;;;;;;;;;-1:-1:-1;2719:201:99;;;;;:::i;:::-;2778:7;2895:18;;;1075:35;2895:18;;;;;;;2719:201;737:49:109;;;;;;;;;;;;785:1;737:49;;679:52;;;;;;;;;;;;730:1;679:52;;1819:58:68;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:68;;;;;1043:108:109;;;;;;;;;;-1:-1:-1;961:42:109;1043:108;;2045:95:101;;;;;;;;;;-1:-1:-1;2124:9:101;2045:95;;1383:255:85;;;;;;;;;;-1:-1:-1;1383:255:85;;;;;:::i;:::-;;:::i;931:258:112:-;;;;;;;;;;-1:-1:-1;931:258:112;;;;;:::i;:::-;-1:-1:-1;;;931:258:112;;;;;;;;;;;2128:357:113;;;;;;;;;;;;;:::i;4927:515:111:-;;;;;;:::i;:::-;;:::i;981:121:85:-;;;;;;;;;;;;;:::i;373:37:99:-;;;;;;;;;;;;;;;1788:329;;;;;;;;;;-1:-1:-1;1788:329:99;;;;;:::i;:::-;;:::i;699:226:112:-;;;;;;;;;;-1:-1:-1;699:226:112;;;;;:::i;:::-;-1:-1:-1;;;699:226:112;;;;;;;;;2491:144:113;;;;;;;;;;;;;:::i;:::-;;;;17058:25:149;;;-1:-1:-1;;;;;17119:32:149;;;17114:2;17099:18;;17092:60;17168:18;;;17161:34;17046:2;17031:18;2491:144:113;16856:345:149;2271:286:99;2426:4;2453:36;2477:11;2453:23;:36::i;:::-;:97;;;-1:-1:-1;;;;;;;2493:57:99;;-1:-1:-1;;;2493:57:99;2453:97;2446:104;2271:286;-1:-1:-1;;2271:286:99:o;2375:240:101:-;2527:11;2561:47;2567:2;2571:4;;2577:14;;2593;2561:5;:47::i;:::-;2554:54;2375:240;-1:-1:-1;;;;;;;2375:240:101:o;591:419:110:-;740:6;765:26;793:20;817:7;:5;:7::i;:::-;762:62;;-1:-1:-1;762:62:110;-1:-1:-1;;839:10:110;-1:-1:-1;;;;;839:32:110;;;:67;;;;;894:12;875:15;:31;839:67;835:121;;;929:16;;-1:-1:-1;;;929:16:110;;;;;;;;;;;835:121;-1:-1:-1;;;;973:30:110;591:419;-1:-1:-1;;;;;;;591:419:110:o;2199:1425:111:-;2360:17;2393:9;2412;2431:7;2460:26;2476:9;6792:4;6777:20;;6771:27;6837:4;6822:20;;6816:27;6890:4;6875:20;;;6869:27;6472:7;6861:36;;6771:27;;6816;6400:513;2460:26;2448:38;;-1:-1:-1;2448:38:111;-1:-1:-1;2448:38:111;-1:-1:-1;2501:6:111;;;2506:1;2501:6;2497:1093;;2688:1;3011:17;;;3030:4;3007:28;3200:27;2688:1;3200:10;:27::i;:::-;3199:28;:64;;;;-1:-1:-1;;;;;;3231:32:111;;3258:4;3231:32;;3199:64;3195:120;;;-1:-1:-1;;;;;;;3283:17:111;-1:-1:-1;3283:17:111;;-1:-1:-1;;;;3283:17:111;3195:120;3336:67;;-1:-1:-1;;;3336:67:111;;-1:-1:-1;;;;;3336:42:111;;;;;:67;;3379:4;;3385:17;;3336:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3329:74;;;;;;;;;2497:1093;3480:40;3491:28;3505:4;3511:1;3514;3517;3491:13;:28::i;3480:40::-;3476:104;;;-1:-1:-1;;;;3547:18:111;-1:-1:-1;3540:25:111;;-1:-1:-1;;3540:25:111;3476:104;-1:-1:-1;;;;;;;3600:17:111;2199:1425;-1:-1:-1;;;;;2199:1425:111:o;2487:385:85:-;2662:22;2696:24;:22;:24::i;:::-;2747:38;2766:6;2774:10;2747:18;:38::i;:::-;2730:55;;2795:28;2810:6;:12;;;2795:14;:28::i;:::-;2833:32;2845:19;2833:11;:32::i;:::-;2487:385;;;;;:::o;2123:142:99:-;2204:7;2230:28;2245:4;2251:6;2230:14;:28::i;1887:565:85:-;1959:20;:18;:20::i;:::-;2012:5;1990:19;2034:412;2058:11;2054:1;:15;2034:412;;;2090:18;2111:5;;2117:1;2111:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2090:29;-1:-1:-1;2133:7:85;2143:56;2153:11;;;;2090:29;2153:11;:::i;:::-;2166:10;;;;2178:9;;;;2166:4;2178:9;:::i;:::-;2143:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2189:9:85;2143;:56::i;:::-;2133:66;;2218:2;2213:223;;2244:11;2259:1;2244:16;2240:182;;2284:27;:25;:27::i;:::-;2240:182;;;2378:1;2381:21;2400:1;2381:18;:21::i;:::-;2365:38;;-1:-1:-1;;;2365:38:85;;;;;;;;;:::i;:::-;;;;;;;;2240:182;-1:-1:-1;;2071:3:85;;2034:412;;;;1949:503;1887:565;;:::o;4161:214:68:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;5779:481:111:-;5911:23;5950:12;5996:44;6002:2;6006:5;6013:4;;6019:9;6030;5996:5;:44::i;:::-;5972:68;-1:-1:-1;5972:68:111;-1:-1:-1;5972:68:111;6051:203;;6218:10;6212:17;6205:4;6193:10;6189:21;6182:48;6051:203;5940:320;5779:481;;;;;;;:::o;2999:192:113:-;3077:17;3113:18;3124:6;3113:10;:18::i;:::-;:71;;3182:1;3113:71;;;-1:-1:-1;;;3113:71:113;3106:78;2999:192;-1:-1:-1;;;;2999:192:113:o;3708:134:68:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:68;:::o;346:239:110:-;420:4;439:21;462:15;481:7;:5;:7::i;:::-;505:39;;-1:-1:-1;;;505:39:110;;;;;6643:25:149;;;436:52:110;;-1:-1:-1;436:52:110;-1:-1:-1;;;;;;505:49:110;;;;-1:-1:-1;505:30:110;;;;;6616:18:149;;505:39:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;505:49:110;;:73;;;;-1:-1:-1;;;;;;;;;558:20:110;;;;346:239::o;375:152:97:-;8870:21:67;4302:15;;-1:-1:-1;;;4302:15:67;;;;4301:16;;-1:-1:-1;;;;;4348:14:67;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:67;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:67;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:67;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:67;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:67;-1:-1:-1;;;5013:22:67;;;4979:67;435:24:97::1;:22;:24::i;:::-;469:51;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;469:51:97::1;;::::0;:13:::1;:51::i;:::-;5070:14:67::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:67;;;5142:14;;-1:-1:-1;19440:50:149;;5142:14:67;;19428:2:149;19413:18;5142:14:67;;;;;;;5066:101;4092:1081;;;;;375:152:97:o;5173:903:75:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:75;;5511:45;;-1:-1:-1;5777:18:75;:43;;;;-1:-1:-1;5799:16:75;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:75;;19703:2:149;5769:77:75;;;19685:21:149;19742:2;19722:18;;;19715:30;-1:-1:-1;;;19761:18:149;;;19754:51;19822:18;;5769:77:75;19501:345:149;5769:77:75;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:75;;;-1:-1:-1;5857:212:75;;-1:-1:-1;5965:13:75;;-1:-1:-1;6000:4:75;;-1:-1:-1;6027:1:75;-1:-1:-1;6043:16:75;-1:-1:-1;5857:212:75;-1:-1:-1;;5173:903:75:o;1383:255:85:-;1479:20;:18;:20::i;:::-;1510:7;1520:41;1530:6;1538:5;1545:4;;1520:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1551:9:85;1520;:41::i;:::-;1510:51;;1576:2;1571:61;;1594:27;:25;:27::i;2128:357:113:-;2168:7;;1108:25;2187:61;-1:-1:-1;2331:23:113;961:42:109;2357:39:113;;-1:-1:-1;;;2357:39:113;;2387:4;2357:39;;;20033:51:149;2394:1:113;20100:18:149;;;20093:60;-1:-1:-1;;;;;2357:21:113;;;;;;;20006:18:149;;2357:39:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2443:14;;2432:43;;2331:65;;-1:-1:-1;2432:43:113;;2331:65;;2432:43;;20573:25:149;;;20629:2;20614:18;;20607:34;20561:2;20546:18;;20399:248;2432:43:113;;;;;;;;;;;;;2422:54;;;;;;2414:63;;2406:72;;;;2128:357;:::o;4927:515:111:-;5072:23;5111:12;5157:65;5163:2;5167:5;5174:4;;5180:9;5191:10;;:30;;5216:5;5157;:65::i;5191:30::-;5204:9;5157:5;:65::i;:::-;5133:89;-1:-1:-1;5133:89:111;-1:-1:-1;5133:89:111;5233:203;;5400:10;5394:17;5387:4;5375:10;5371:21;5364:48;5233:203;5101:341;4927:515;;;;;;;;:::o;981:121:85:-;1030:7;961:42:109;1056:39:85;;-1:-1:-1;;;1056:39:85;;1086:4;1056:39;;;20033:51:149;1093:1:85;20100:18:149;;;20093:60;-1:-1:-1;;;;;1056:21:85;;;;;;;20006:18:149;;1056:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1049:46;;981:121;:::o;1788:329:99:-;1840:41;1935:18;;;1075:35;1935:18;;;;;;;;;1957:15;-1:-1:-1;1931:180:99;;1995:23;;-1:-1:-1;;;1995:23:99;;;;;;;;;;;1931:180;2070:30;2088:12;2070:15;:30;:::i;:::-;2049:9;:18;;;;;;;;;;:51;1830:287;1788:329;:::o;2491:144:113:-;2529:15;2546:21;2569:15;2603:25;:23;:25::i;:::-;2596:32;;;;;;2491:144;;;:::o;2146:223:101:-;2247:4;2270:36;2294:11;2270:23;:36::i;:::-;:92;;;-1:-1:-1;;;;;;;2310:52:101;;-1:-1:-1;;;2310:52:101;2263:99;2146:223;-1:-1:-1;;2146:223:101:o;533:304:97:-;687:11;732:1;718:15;;714:46;;;735:25;;-1:-1:-1;;;735:25:97;;21116:2:149;735:25:97;;;21098:21:149;21155:2;21135:18;;;21128:30;-1:-1:-1;;;21174:18:149;;;21167:45;21229:18;;735:25:97;20914:339:149;714:46:97;777:53;789:2;793:4;;799:14;;815;777:11;:53::i;6887:260:43:-;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:43;;6887:260;-1:-1:-1;;;;;;6887:260:43:o;2953:183:85:-;3040:10;961:42:109;3040:35:85;3019:110;;;;-1:-1:-1;;;3019:110:85;;21460:2:149;3019:110:85;;;21442:21:149;21499:2;21479:18;;;21472:30;21538;21518:18;;;21511:58;21586:18;;3019:110:85;21258:352:149;3019:110:85;2953:183::o;2978:616:101:-;3130:22;3197:1;3172:15;;;;:6;:15;:::i;:::-;:22;;:26;3168:274;;;3214:10;3227:26;3237:15;;;;:6;:15;:::i;:::-;3227:9;:26::i;:::-;3214:39;-1:-1:-1;;;;;;;;;;3346:20:101;;;3342:90;;730:1:109;3386:31:101;;;;;3342:90;3200:242;3168:274;3543:44;3568:6;3576:10;3543:24;:44::i;1189:319:109:-;-1:-1:-1;;;;;1459:24:109;;1451:50;;;;-1:-1:-1;;;1451:50:109;;21817:2:149;1451:50:109;;;21799:21:149;21856:2;21836:18;;;21829:30;-1:-1:-1;;;21875:18:149;;;21868:43;21928:18;;1451:50:109;21615:337:149;1451:50:109;1189:319;:::o;5811:350:85:-;5892:24;;5888:267;;5950:94;;5933:12;;5958:10;;6003:19;;5933:12;5950:94;5933:12;5950:94;6003:19;5958:10;5950:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2563:150:99;2645:7;2692:4;2698:6;2681:24;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2671:35;;;;;;2664:42;;2563:150;;;;:::o;3142:93:85:-;3204:24;:22;:24::i;213:279:95:-;344:12;474:1;471;464:4;458:11;451:4;445;441:15;434:5;430:2;423:5;418:58;407:69;213:279;-1:-1:-1;;;;;213:279:95:o;1988:95::-;2044:32;2059:16;2073:1;2059:13;:16::i;:::-;2044:14;:32::i;1176:508::-;1238:23;1323:16;1355:12;;1352:120;;1397:6;1392:3;1389:15;1386:72;;;-1:-1:-1;1434:6:95;1386:72;1502:4;1496:11;1551:4;1546:3;1542:14;1537:3;1533:24;1527:4;1520:38;1583:3;1578;1571:16;1634:3;1631:1;1624:4;1619:3;1615:14;1600:38;1665:3;1176:508;-1:-1:-1;;;1176:508:95:o;4603:312:68:-;4683:4;-1:-1:-1;;;;;4692:6:68;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:68;:32;-1:-1:-1;;;;;;;;;;;1519:53:16;-1:-1:-1;;;;;1519:53:16;;1441:138;4753:32:68;-1:-1:-1;;;;;4753:42:68;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:68;;;;;;;;;;;2877:95:101;1240:22:111;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:111;961:42:109;1266:35:111;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:111;;;;;;;;;;;6057:538:68;6174:17;-1:-1:-1;;;;;6156:50:68;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:68;;;;;;;;-1:-1:-1;;6156:52:68;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:68;;-1:-1:-1;;;;;3495:32:149;;6518:60:68;;;3477:51:149;3450:18;;6518:60:68;3331:203:149;6152:437:68;-1:-1:-1;;;;;;;;;;;6250:40:68;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:68;;;;;6643:25:149;;;6616:18;;6317:34:68;6497:177:149;6246:120:68;6379:54;6409:17;6428:4;6379:29;:54::i;:::-;6209:235;6057:538;;:::o;3263:463:113:-;1108:25;3601:16;;3425:12;;3439:23;;1108:25;3425:12;3601:16;;;:::i;:::-;;;;;;3673:46;3685:2;3689:5;3696:4;;3702:9;3713:5;3673:11;:46::i;:::-;3666:53;;;;;3263:463;;;;;;;;;;:::o;5032:213:68:-;5106:4;-1:-1:-1;;;;;5115:6:68;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:68;;;;;;;;;;;2970:67;6931:20:67;:18;:20::i;3446:147:75:-;6931:20:67;:18;:20::i;:::-;3548:38:75::1;3572:4;3578:7;3548:23;:38::i;6300:155::-:0;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:75;6434:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6300:155;:::o;6682:161::-;6826:10;6819:17;;6739:13;;-1:-1:-1;;;;;;;;;;;2839:21:75;6819:17;;;:::i;2191:111:80:-;2231:7;2240;2249;2275:20;2289:4;2275:5;:20::i;3732:203:113:-;3817:4;3840:36;3864:11;3840:23;:36::i;:::-;:88;;;-1:-1:-1;;;;;;;3880:48:113;;-1:-1:-1;;;3880:48:113;3833:95;3732:203;-1:-1:-1;;3732:203:113:o;2926:964:99:-;3096:11;;1075:35;3123:81;;3215:24;3242:1;:9;;:43;3252:32;3267:4;;3252:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3273:10:99;;-1:-1:-1;3252:14:99;;-1:-1:-1;;3252:32:99:i;:::-;3242:43;;;;;;;;;;;;3215:70;;3376:16;3396:1;3376:21;3372:75;;3420:16;;-1:-1:-1;;;3420:16:99;;;;;;;;;;;3372:75;3581:15;3565:12;3531:31;3550:12;3531:16;:31;:::i;:::-;:46;;;;:::i;:::-;:65;3527:117;;3619:14;;-1:-1:-1;;;3619:14:99;;;;;;;;;;;3527:117;3747:15;3728:16;:34;3724:86;;;3785:14;;-1:-1:-1;;;3785:14:99;;;;;;;;;;;3724:86;3827:56;;-1:-1:-1;;;3827:56:99;;-1:-1:-1;;;;;3827:9:99;:14;;;;:56;;3842:2;;3846:4;;;;3852:14;;;;3868;;3827:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3820:63;2926:964;-1:-1:-1;;;;;;;;;2926:964:99:o;5203:1551:43:-;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:43;;-1:-1:-1;6385:30:43;;-1:-1:-1;6417:1:43;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;24463:25:149;;;24536:4;24524:17;;24504:18;;;24497:45;;;;24558:18;;;24551:34;;;24601:18;;;24594:34;;;6541:24:43;;24435:19:149;;6541:24:43;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:43;;-1:-1:-1;;6541:24:43;;;-1:-1:-1;;;;;;;6579:20:43;;6575:113;;-1:-1:-1;6631:1:43;;-1:-1:-1;6635:29:43;;-1:-1:-1;6631:1:43;;-1:-1:-1;6615:62:43;;6575:113;6706:6;-1:-1:-1;6714:20:43;;-1:-1:-1;6714:20:43;;-1:-1:-1;5203:1551:43;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:43;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:43;;;;;6643:25:149;;;6616:18;;7634:46:43;6497:177:149;7563:243:43;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:43;;;;;6643:25:149;;;6616:18;;7763:32:43;6497:177:149;3600:203:101;3663:10;3703:1;3689:15;;3685:37;;;-1:-1:-1;3720:1:101;3706:16;;3685:37;-1:-1:-1;;3762:25:101;;3600:203::o;525:824:96:-;677:22;;;770:46;787:10;799:16;;;;:6;:16;:::i;:::-;770:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;770:16:96;;-1:-1:-1;;;770:46:96:i;:::-;-1:-1:-1;715:101:96;;-1:-1:-1;715:101:96;-1:-1:-1;840:26:96;831:5;:35;;;;;;;;:::i;:::-;;:66;;;;;870:27;881:15;870:10;:27::i;:::-;827:128;;;730:1:109;913:31:96;;;;;;827:128;1376:34:47;1021:12:96;1363:48:47;;;1472:4;1465:25;;;1570:4;1554:21;;1125:40:96;1554:21:47;1148:16:96;;;;;;:::i;1125:40::-;-1:-1:-1;1097:68:96;;-1:-1:-1;1097:68:96;-1:-1:-1;1189:26:96;1180:5;:35;;;;;;;;:::i;:::-;;:66;;;;;1219:27;1230:15;1219:10;:27::i;:::-;1176:128;;;730:1:109;1262:31:96;;;;;;;1176:128;-1:-1:-1;785:1:109;;525:824:96;-1:-1:-1;;;;;525:824:96:o;1764:174:95:-;1910:10;1904:17;1899:2;1887:10;1883:19;1876:46;2264:344:16;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:16;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;3995:499:111:-;4161:12;4175:23;1240:22;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:111;961:42:109;1266:35:111;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:111;;;;;;;;;;;1235:125;4218:9:::1;:14;;4231:1;4218:14:::0;4214:274:::1;;4272:2;-1:-1:-1::0;;;;;4272:7:111::1;4285:5;4299;4306:4;;4272:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;4248:63:111;;-1:-1:-1;4248:63:111;-1:-1:-1;4214:274:111::1;;;4332:9;:14;;4345:1;4332:14:::0;4328:160:::1;;4386:2;-1:-1:-1::0;;;;;4386:15:111::1;4407:5;4414:4;;4386:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4328:160;4450:27;::::0;-1:-1:-1;;;4450:27:111;;25249:2:149;4450:27:111::1;::::0;::::1;25231:21:149::0;25288:2;25268:18;;;25261:30;-1:-1:-1;;;25307:18:149;;;25300:47;25364:18;;4450:27:111::1;25047:341:149::0;7084:141:67;8870:21;8560:40;-1:-1:-1;;;8560:40:67;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:67;;;;;;;;;;;3599:330:75;6931:20:67;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:75;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:75::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:75::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:75:o;1824:361:80:-;1943:15;;;1953:4;1943:15;;;;;;;;;1879:7;;;;;;;;1943:15;;;;;;;;;;;-1:-1:-1;1943:15:80;1916:42;;2094:4;2088;2081;2068:11;2064:22;2055:7;2043:56;2137:11;2126:52;;;;;;;;;;;;:::i;:::-;2119:59;;;;;;;1824:361;;;;;:::o;7049:410:111:-;7125:4;-1:-1:-1;;;;;;7148:38:111;;-1:-1:-1;;;7148:38:111;;:82;;-1:-1:-1;;;;;;;7190:40:111;;-1:-1:-1;;;7190:40:111;7148:82;:139;;;-1:-1:-1;;;;;;;7246:41:111;;-1:-1:-1;;;7246:41:111;7148:139;:184;;;-1:-1:-1;;;;;;;7291:41:111;;-1:-1:-1;;;7291:41:111;7148:184;:249;;;-1:-1:-1;;;;;;;7348:49:111;;-1:-1:-1;;;7348:49:111;7148:249;:304;;;-1:-1:-1;;;;;;;7401:51:111;;-1:-1:-1;;;7401:51:111;7141:311;7049:410;-1:-1:-1;;7049:410:111:o;2129:778:43:-;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:43;;2823:1;;-1:-1:-1;2827:35:43;;2295:606;2129:778;;;;;:::o;1671:281:16:-;1748:17;-1:-1:-1;;;;;1748:29:16;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:16;;-1:-1:-1;;;;;3495:32:149;;1805:47:16;;;3477:51:149;3450:18;;1805:47:16;3331:203:149;1744:119:16;-1:-1:-1;;;;;;;;;;;1872:73:16;;-1:-1:-1;;;;;;1872:73:16;-1:-1:-1;;;;;1872:73:16;;;;;;;;;;1671:281::o;3900:253:33:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:33;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:33:o;6113:122:16:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:16;;;;;;;;;;;4421:582:33;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:33;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:33;;-1:-1:-1;;;;;3495:32:149;;4917:24:33;;;3477:51:149;3450:18;;4917:24:33;3331:203:149;4837:119:33;-1:-1:-1;4976:10:33;4969:17;;5543:487;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:33;;;;;;;;;;;14:131:149;-1:-1:-1;;;;;89:31:149;;79:42;;69:70;;135:1;132;125:12;150:347;201:8;211:6;265:3;258:4;250:6;246:17;242:27;232:55;;283:1;280;273:12;232:55;-1:-1:-1;306:20:149;;-1:-1:-1;;;;;338:30:149;;335:50;;;381:1;378;371:12;335:50;418:4;410:6;406:17;394:29;;470:3;463:4;454:6;446;442:19;438:30;435:39;432:59;;;487:1;484;477:12;432:59;150:347;;;;;:::o;502:1252::-;628:6;636;644;652;660;668;676;684;737:3;725:9;716:7;712:23;708:33;705:53;;;754:1;751;744:12;705:53;793:9;780:23;812:31;837:5;812:31;:::i;:::-;862:5;-1:-1:-1;919:2:149;904:18;;891:32;932:33;891:32;932:33;:::i;:::-;984:7;-1:-1:-1;1043:2:149;1028:18;;1015:32;1056:33;1015:32;1056:33;:::i;:::-;1108:7;-1:-1:-1;1188:2:149;1173:18;;1160:32;;-1:-1:-1;1269:3:149;1254:19;;1241:33;-1:-1:-1;;;;;1286:30:149;;1283:50;;;1329:1;1326;1319:12;1283:50;1368:58;1418:7;1409:6;1398:9;1394:22;1368:58;:::i;:::-;1445:8;;-1:-1:-1;1342:84:149;-1:-1:-1;;1533:3:149;1518:19;;1505:33;-1:-1:-1;;;;;1550:32:149;;1547:52;;;1595:1;1592;1585:12;1547:52;1634:60;1686:7;1675:8;1664:9;1660:24;1634:60;:::i;:::-;502:1252;;;;-1:-1:-1;502:1252:149;;-1:-1:-1;502:1252:149;;;;;;1713:8;-1:-1:-1;;;502:1252:149:o;1759:131::-;-1:-1:-1;;;;;;1833:32:149;;1823:43;;1813:71;;1880:1;1877;1870:12;1895:245;1953:6;2006:2;1994:9;1985:7;1981:23;1977:32;1974:52;;;2022:1;2019;2012:12;1974:52;2061:9;2048:23;2080:30;2104:5;2080:30;:::i;2337:989::-;2445:6;2453;2461;2469;2477;2485;2538:3;2526:9;2517:7;2513:23;2509:33;2506:53;;;2555:1;2552;2545:12;2506:53;2594:9;2581:23;2613:31;2638:5;2613:31;:::i;:::-;2663:5;-1:-1:-1;2719:2:149;2704:18;;2691:32;-1:-1:-1;;;;;2735:30:149;;2732:50;;;2778:1;2775;2768:12;2732:50;2817:58;2867:7;2858:6;2847:9;2843:22;2817:58;:::i;:::-;2894:8;;-1:-1:-1;2791:84:149;-1:-1:-1;;2982:2:149;2967:18;;2954:32;-1:-1:-1;;;;;2998:32:149;;2995:52;;;3043:1;3040;3033:12;2995:52;3082:60;3134:7;3123:8;3112:9;3108:24;3082:60;:::i;:::-;3161:8;;-1:-1:-1;3056:86:149;-1:-1:-1;;3248:2:149;3233:18;;3220:32;3261:33;3220:32;3261:33;:::i;:::-;3313:7;3303:17;;;2337:989;;;;;;;;:::o;3539:806::-;3636:6;3644;3652;3660;3668;3721:3;3709:9;3700:7;3696:23;3692:33;3689:53;;;3738:1;3735;3728:12;3689:53;3777:9;3764:23;3796:31;3821:5;3796:31;:::i;:::-;3846:5;-1:-1:-1;3903:2:149;3888:18;;3875:32;3916:33;3875:32;3916:33;:::i;:::-;3968:7;-1:-1:-1;4048:2:149;4033:18;;4020:32;;-1:-1:-1;4129:2:149;4114:18;;4101:32;-1:-1:-1;;;;;4145:30:149;;4142:50;;;4188:1;4185;4178:12;4142:50;4227:58;4277:7;4268:6;4257:9;4253:22;4227:58;:::i;:::-;3539:806;;;;-1:-1:-1;3539:806:149;;-1:-1:-1;4304:8:149;;4201:84;3539:806;-1:-1:-1;;;3539:806:149:o;4557:127::-;4618:10;4613:3;4609:20;4606:1;4599:31;4649:4;4646:1;4639:15;4673:4;4670:1;4663:15;4689:725;4731:5;4784:3;4777:4;4769:6;4765:17;4761:27;4751:55;;4802:1;4799;4792:12;4751:55;4842:6;4829:20;-1:-1:-1;;;;;4864:6:149;4861:30;4858:56;;;4894:18;;:::i;:::-;4943:2;4937:9;5035:2;4997:17;;-1:-1:-1;;4993:31:149;;;5026:2;4989:40;4985:54;4973:67;;-1:-1:-1;;;;;5055:34:149;;5091:22;;;5052:62;5049:88;;;5117:18;;:::i;:::-;5153:2;5146:22;5177;;;5218:19;;;5239:4;5214:30;5211:39;-1:-1:-1;5208:59:149;;;5263:1;5260;5253:12;5208:59;5327:6;5320:4;5312:6;5308:17;5301:4;5293:6;5289:17;5276:58;5382:1;5354:19;;;5375:4;5350:30;5343:41;;;;5358:6;4689:725;-1:-1:-1;;;4689:725:149:o;5419:434::-;5496:6;5504;5557:2;5545:9;5536:7;5532:23;5528:32;5525:52;;;5573:1;5570;5563:12;5525:52;5618:23;;;-1:-1:-1;5716:2:149;5701:18;;5688:32;-1:-1:-1;;;;;5732:30:149;;5729:50;;;5775:1;5772;5765:12;5729:50;5798:49;5839:7;5830:6;5819:9;5815:22;5798:49;:::i;:::-;5788:59;;;5419:434;;;;;:::o;5858:634::-;5975:6;5983;5991;6044:2;6032:9;6023:7;6019:23;6015:32;6012:52;;;6060:1;6057;6050:12;6012:52;6100:9;6087:23;-1:-1:-1;;;;;6125:6:149;6122:30;6119:50;;;6165:1;6162;6155:12;6119:50;6188:22;;6244:3;6226:16;;;6222:26;6219:46;;;6261:1;6258;6251:12;6219:46;6284:2;6355;6340:18;;6327:32;;-1:-1:-1;6456:2:149;6441:18;;;6428:32;;5858:634;-1:-1:-1;;;5858:634:149:o;6679:455::-;6756:6;6764;6817:2;6805:9;6796:7;6792:23;6788:32;6785:52;;;6833:1;6830;6823:12;6785:52;6873:9;6860:23;-1:-1:-1;;;;;6898:6:149;6895:30;6892:50;;;6938:1;6935;6928:12;6892:50;6961:49;7002:7;6993:6;6982:9;6978:22;6961:49;:::i;:::-;6951:59;;;7060:2;7049:9;7045:18;7032:32;7073:31;7098:5;7073:31;:::i;:::-;7123:5;7113:15;;;6679:455;;;;;:::o;7321:380::-;7397:8;7407:6;7461:3;7454:4;7446:6;7442:17;7438:27;7428:55;;7479:1;7476;7469:12;7428:55;-1:-1:-1;7502:20:149;;-1:-1:-1;;;;;7534:30:149;;7531:50;;;7577:1;7574;7567:12;7531:50;7614:4;7606:6;7602:17;7590:29;;7674:3;7667:4;7657:6;7654:1;7650:14;7642:6;7638:27;7634:38;7631:47;7628:67;;;7691:1;7688;7681:12;7706:475;7817:6;7825;7878:2;7866:9;7857:7;7853:23;7849:32;7846:52;;;7894:1;7891;7884:12;7846:52;7934:9;7921:23;-1:-1:-1;;;;;7959:6:149;7956:30;7953:50;;;7999:1;7996;7989:12;7953:50;8038:83;8113:7;8104:6;8093:9;8089:22;8038:83;:::i;:::-;8140:8;;8012:109;;-1:-1:-1;7706:475:149;-1:-1:-1;;;;7706:475:149:o;8186:455::-;8263:6;8271;8324:2;8312:9;8303:7;8299:23;8295:32;8292:52;;;8340:1;8337;8330:12;8292:52;8379:9;8366:23;8398:31;8423:5;8398:31;:::i;:::-;8448:5;-1:-1:-1;8504:2:149;8489:18;;8476:32;-1:-1:-1;;;;;8520:30:149;;8517:50;;;8563:1;8560;8553:12;8646:156;8712:20;;8772:4;8761:16;;8751:27;;8741:55;;8792:1;8789;8782:12;8741:55;8646:156;;;:::o;8807:735::-;8902:6;8910;8918;8926;8934;8987:3;8975:9;8966:7;8962:23;8958:33;8955:53;;;9004:1;9001;8994:12;8955:53;9043:9;9030:23;9062:31;9087:5;9062:31;:::i;:::-;9112:5;-1:-1:-1;9190:2:149;9175:18;;9162:32;;-1:-1:-1;9271:2:149;9256:18;;9243:32;-1:-1:-1;;;;;9287:30:149;;9284:50;;;9330:1;9327;9320:12;9284:50;9369:58;9419:7;9410:6;9399:9;9395:22;9369:58;:::i;:::-;9446:8;;-1:-1:-1;9343:84:149;-1:-1:-1;9500:36:149;;-1:-1:-1;9532:2:149;9517:18;;9500:36;:::i;:::-;9490:46;;8807:735;;;;;;;;:::o;9547:288::-;9588:3;9626:5;9620:12;9653:6;9648:3;9641:19;9709:6;9702:4;9695:5;9691:16;9684:4;9679:3;9675:14;9669:47;9761:1;9754:4;9745:6;9740:3;9736:16;9732:27;9725:38;9824:4;9817:2;9813:7;9808:2;9800:6;9796:15;9792:29;9787:3;9783:39;9779:50;9772:57;;;9547:288;;;;:::o;9840:217::-;9987:2;9976:9;9969:21;9950:4;10007:44;10047:2;10036:9;10032:18;10024:6;10007:44;:::i;10062:544::-;10141:6;10149;10157;10210:2;10198:9;10189:7;10185:23;10181:32;10178:52;;;10226:1;10223;10216:12;10178:52;10265:9;10252:23;10284:31;10309:5;10284:31;:::i;:::-;10334:5;-1:-1:-1;10390:2:149;10375:18;;10362:32;-1:-1:-1;;;;;10406:30:149;;10403:50;;;10449:1;10446;10439:12;10403:50;10488:58;10538:7;10529:6;10518:9;10514:22;10488:58;:::i;:::-;10062:544;;10565:8;;-1:-1:-1;10462:84:149;;-1:-1:-1;;;;10062:544:149:o;10611:247::-;10670:6;10723:2;10711:9;10702:7;10698:23;10694:32;10691:52;;;10739:1;10736;10729:12;10691:52;10778:9;10765:23;10797:31;10822:5;10797:31;:::i;10863:1236::-;11269:3;11264;11260:13;11252:6;11248:26;11237:9;11230:45;11311:3;11306:2;11295:9;11291:18;11284:31;11211:4;11338:45;11378:3;11367:9;11363:19;11355:6;11338:45;:::i;:::-;11431:9;11423:6;11419:22;11414:2;11403:9;11399:18;11392:50;11465:32;11490:6;11482;11465:32;:::i;:::-;11528:2;11513:18;;11506:34;;;-1:-1:-1;;;;;11577:32:149;;11571:3;11556:19;;11549:61;11597:3;11626:19;;11619:35;;;11691:22;;;11685:3;11670:19;;11663:51;11763:13;;11785:22;;;11835:2;11861:15;;;;-1:-1:-1;11823:15:149;;;;-1:-1:-1;11904:169:149;11918:6;11915:1;11912:13;11904:169;;;11979:13;;11967:26;;12022:2;12048:15;;;;12013:12;;;;11940:1;11933:9;11904:169;;;-1:-1:-1;12090:3:149;;10863:1236;-1:-1:-1;;;;;;;;;;;10863:1236:149:o;12104:226::-;12163:6;12216:2;12204:9;12195:7;12191:23;12187:32;12184:52;;;12232:1;12229;12222:12;12184:52;-1:-1:-1;12277:23:149;;12104:226;-1:-1:-1;12104:226:149:o;13014:664::-;13102:6;13110;13118;13126;13179:2;13167:9;13158:7;13154:23;13150:32;13147:52;;;13195:1;13192;13185:12;13147:52;13234:9;13221:23;13253:31;13278:5;13253:31;:::i;:::-;13303:5;-1:-1:-1;13381:2:149;13366:18;;13353:32;;-1:-1:-1;13462:2:149;13447:18;;13434:32;-1:-1:-1;;;;;13478:30:149;;13475:50;;;13521:1;13518;13511:12;13475:50;13560:58;13610:7;13601:6;13590:9;13586:22;13560:58;:::i;:::-;13014:664;;;;-1:-1:-1;13637:8:149;-1:-1:-1;;;;13014:664:149:o;13683:1375::-;13843:6;13851;13859;13867;13875;13883;13891;13899;13952:3;13940:9;13931:7;13927:23;13923:33;13920:53;;;13969:1;13966;13959:12;13920:53;14008:9;13995:23;14027:31;14052:5;14027:31;:::i;:::-;14077:5;-1:-1:-1;14134:2:149;14119:18;;14106:32;14147:33;14106:32;14147:33;:::i;:::-;14199:7;-1:-1:-1;14257:2:149;14242:18;;14229:32;-1:-1:-1;;;;;14273:30:149;;14270:50;;;14316:1;14313;14306:12;14270:50;14355:83;14430:7;14421:6;14410:9;14406:22;14355:83;:::i;:::-;14457:8;;-1:-1:-1;14329:109:149;-1:-1:-1;;14545:2:149;14530:18;;14517:32;-1:-1:-1;;;;;14561:32:149;;14558:52;;;14606:1;14603;14596:12;14558:52;14645:85;14722:7;14711:8;14700:9;14696:24;14645:85;:::i;:::-;14749:8;;-1:-1:-1;14619:111:149;-1:-1:-1;;14837:3:149;14822:19;;14809:33;-1:-1:-1;;;;;14854:32:149;;14851:52;;;14899:1;14896;14889:12;15063:856;15167:6;15175;15183;15191;15199;15207;15260:3;15248:9;15239:7;15235:23;15231:33;15228:53;;;15277:1;15274;15267:12;15228:53;15316:9;15303:23;15335:31;15360:5;15335:31;:::i;:::-;15385:5;-1:-1:-1;15463:2:149;15448:18;;15435:32;;-1:-1:-1;15544:2:149;15529:18;;15516:32;-1:-1:-1;;;;;15560:30:149;;15557:50;;;15603:1;15600;15593:12;15557:50;15642:58;15692:7;15683:6;15672:9;15668:22;15642:58;:::i;:::-;15719:8;;-1:-1:-1;15616:84:149;-1:-1:-1;15773:36:149;;-1:-1:-1;15805:2:149;15790:18;;15773:36;:::i;:::-;15063:856;;;;-1:-1:-1;15063:856:149;;;;;15882:3;15867:19;;;15854:33;;-1:-1:-1;;15063:856:149:o;15924:927::-;16030:6;16038;16046;16054;16062;16070;16123:3;16111:9;16102:7;16098:23;16094:33;16091:53;;;16140:1;16137;16130:12;16091:53;16179:9;16166:23;16198:31;16223:5;16198:31;:::i;:::-;16248:5;-1:-1:-1;16305:2:149;16290:18;;16277:32;16318:33;16277:32;16318:33;:::i;:::-;16370:7;-1:-1:-1;16450:2:149;16435:18;;16422:32;;-1:-1:-1;16553:2:149;16538:18;;16525:32;;-1:-1:-1;16634:3:149;16619:19;;16606:33;-1:-1:-1;;;;;16651:30:149;;16648:50;;;16694:1;16691;16684:12;16648:50;16733:58;16783:7;16774:6;16763:9;16759:22;16733:58;:::i;:::-;15924:927;;;;-1:-1:-1;15924:927:149;;-1:-1:-1;15924:927:149;;16810:8;;15924:927;-1:-1:-1;;;15924:927:149:o;17206:288::-;17381:6;17370:9;17363:25;17424:2;17419;17408:9;17404:18;17397:30;17344:4;17444:44;17484:2;17473:9;17469:18;17461:6;17444:44;:::i;17499:249::-;17568:6;17621:2;17609:9;17600:7;17596:23;17592:32;17589:52;;;17637:1;17634;17627:12;17589:52;17669:9;17663:16;17688:30;17712:5;17688:30;:::i;17753:127::-;17814:10;17809:3;17805:20;17802:1;17795:31;17845:4;17842:1;17835:15;17869:4;17866:1;17859:15;17885:322;17976:4;18034:11;18021:25;18128:2;18124:7;18113:8;18097:14;18093:29;18089:43;18069:18;18065:68;18055:96;;18147:1;18144;18137:12;18055:96;18168:33;;;;;17885:322;-1:-1:-1;;17885:322:149:o;18212:521::-;18289:4;18295:6;18355:11;18342:25;18449:2;18445:7;18434:8;18418:14;18414:29;18410:43;18390:18;18386:68;18376:96;;18468:1;18465;18458:12;18376:96;18495:33;;18547:20;;;-1:-1:-1;;;;;;18579:30:149;;18576:50;;;18622:1;18619;18612:12;18576:50;18655:4;18643:17;;-1:-1:-1;18686:14:149;18682:27;;;18672:38;;18669:58;;;18723:1;18720;18713:12;19031:251;19101:6;19154:2;19142:9;19133:7;19129:23;19125:32;19122:52;;;19170:1;19167;19160:12;19122:52;19202:9;19196:16;19221:31;19246:5;19221:31;:::i;20164:230::-;20234:6;20287:2;20275:9;20266:7;20262:23;20258:32;20255:52;;;20303:1;20300;20293:12;20255:52;-1:-1:-1;20348:16:149;;20164:230;-1:-1:-1;20164:230:149:o;20652:127::-;20713:10;20708:3;20704:20;20701:1;20694:31;20744:4;20741:1;20734:15;20768:4;20765:1;20758:15;20784:125;20849:9;;;20870:10;;;20867:36;;;20883:18;;:::i;22167:314::-;22342:2;22331:9;22324:21;22305:4;22362:44;22402:2;22391:9;22387:18;22379:6;22362:44;:::i;:::-;22354:52;;22471:1;22467;22462:3;22458:11;22454:19;22446:6;22442:32;22437:2;22426:9;22422:18;22415:60;22167:314;;;;;:::o;22675:135::-;22714:3;22735:17;;;22732:43;;22755:18;;:::i;:::-;-1:-1:-1;22802:1:149;22791:13;;22675:135::o;22815:380::-;22894:1;22890:12;;;;22937;;;22958:61;;23012:4;23004:6;23000:17;22990:27;;22958:61;23065:2;23057:6;23054:14;23034:18;23031:38;23028:161;;23111:10;23106:3;23102:20;23099:1;23092:31;23146:4;23143:1;23136:15;23174:4;23171:1;23164:15;23028:161;;22815:380;;;:::o;23200:128::-;23267:9;;;23288:11;;;23285:37;;;23302:18;;:::i;23333:266::-;23421:6;23416:3;23409:19;23473:6;23466:5;23459:4;23454:3;23450:14;23437:43;-1:-1:-1;23525:1:149;23500:16;;;23518:4;23496:27;;;23489:38;;;;23581:2;23560:15;;;-1:-1:-1;;23556:29:149;23547:39;;;23543:50;;23333:266::o;23604:627::-;-1:-1:-1;;;;;23873:32:149;;23855:51;;23942:3;23937:2;23922:18;;23915:31;;;-1:-1:-1;;23969:62:149;;24011:19;;24003:6;23995;23969:62;:::i;:::-;24079:9;24071:6;24067:22;24062:2;24051:9;24047:18;24040:50;24107:49;24149:6;24141;24133;24107:49;:::i;:::-;24099:57;;;24221:1;24217;24212:3;24208:11;24204:19;24196:6;24192:32;24187:2;24176:9;24172:18;24165:60;23604:627;;;;;;;;;:::o;24639:127::-;24700:10;24695:3;24691:20;24688:1;24681:31;24731:4;24728:1;24721:15;24755:4;24752:1;24745:15;24771:271;24954:6;24946;24941:3;24928:33;24910:3;24980:16;;25005:13;;;24980:16;24771:271;-1:-1:-1;24771:271:149:o;25519:518::-;25621:2;25616:3;25613:11;25610:421;;;25657:5;25654:1;25647:16;25701:4;25698:1;25688:18;25771:2;25759:10;25755:19;25752:1;25748:27;25742:4;25738:38;25807:4;25795:10;25792:20;25789:47;;;-1:-1:-1;25830:4:149;25789:47;25885:2;25880:3;25876:12;25873:1;25869:20;25863:4;25859:31;25849:41;;25940:81;25958:2;25951:5;25948:13;25940:81;;;26017:1;26003:16;;25984:1;25973:13;25940:81;;26213:1299;26339:3;26333:10;-1:-1:-1;;;;;26358:6:149;26355:30;26352:56;;;26388:18;;:::i;:::-;26417:97;26507:6;26467:38;26499:4;26493:11;26467:38;:::i;:::-;26461:4;26417:97;:::i;:::-;26563:4;26594:2;26583:14;;26611:1;26606:649;;;;27299:1;27316:6;27313:89;;;-1:-1:-1;27368:19:149;;;27362:26;27313:89;-1:-1:-1;;26170:1:149;26166:11;;;26162:24;26158:29;26148:40;26194:1;26190:11;;;26145:57;27415:81;;26576:930;;26606:649;25466:1;25459:14;;;25503:4;25490:18;;-1:-1:-1;;26642:20:149;;;26760:222;26774:7;26771:1;26768:14;26760:222;;;26856:19;;;26850:26;26835:42;;26963:4;26948:20;;;;26916:1;26904:14;;;;26790:12;26760:222;;;26764:3;27010:6;27001:7;26998:19;26995:201;;;27071:19;;;27065:26;-1:-1:-1;;27154:1:149;27150:14;;;27166:3;27146:24;27142:37;27138:42;27123:58;27108:74;;26995:201;-1:-1:-1;;;;27242:1:149;27226:14;;;27222:22;27209:36;;-1:-1:-1;26213:1299:149:o;27517:485::-;27613:6;27621;27629;27682:2;27670:9;27661:7;27657:23;27653:32;27650:52;;;27698:1;27695;27688:12;27650:52;27743:16;;27828:2;27813:18;;27807:25;27743:16;;-1:-1:-1;27841:33:149;27807:25;27841:33;:::i;:::-;27966:2;27951:18;;;;27945:25;27517:485;;27893:7;;-1:-1:-1;27945:25:149;;27517:485;-1:-1:-1;;27517:485:149:o;28007:301::-;28136:3;28174:6;28168:13;28220:6;28213:4;28205:6;28201:17;28196:3;28190:37;28282:1;28246:16;;28271:13;;;-1:-1:-1;28246:16:149;28007:301;-1:-1:-1;28007:301:149:o", + "language": "Solidity", + "natspec": { + "errors": { + "AddressEmptyCode(address)": [ + { + "details": "There's no code at `target` (it is not a contract)." + } + ], + "ECDSAInvalidSignature()": [ + { + "details": "The signature derives the `address(0)`." + } + ], + "ECDSAInvalidSignatureLength(uint256)": [ + { + "details": "The signature has an invalid length." + } + ], + "ECDSAInvalidSignatureS(bytes32)": [ + { + "details": "The signature has an S value that is in the upper half order." + } + ], + "ERC1967InvalidImplementation(address)": [ + { + "details": "The `implementation` of the proxy is invalid." + } + ], + "ERC1967NonPayable()": [ + { + "details": "An upgrade function sees `msg.value > 0` that may be lost." + } + ], + "FailedCall()": [ + { + "details": "A call to an address target failed. The target may have reverted." + } + ], + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ], + "UUPSUnauthorizedCallContext()": [ + { + "details": "The call is from an unauthorized context." + } + ], + "UUPSUnsupportedProxiableUUID(bytes32)": [ + { + "details": "The storage `slot` is unsupported as a UUID." + } + ] + }, + "events": { + "EIP712DomainChanged()": { + "details": "MAY be emitted to signal that the domain could have changed." + }, + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + }, + "Upgraded(address)": { + "details": "Emitted when the implementation is upgraded." + } + }, + "kind": "dev", + "methods": { + "commit(bytes32)": { + "notice": "Privately commit to a specific name by hashing it along with the sender's address. A commit is valid for a certain period of time, found by reading maxCommitAge(). While the commit is valid, the sender can mint.", + "params": { + "_commit": "The keccak256 hash of the name+sender to commit to. Can be obtained by calling getCommitHash." + } + }, + "eip712Domain()": { + "details": "See {IERC-5267}." + }, + "entryPoint()": { + "notice": "Return the entryPoint used by this account. Subclass should return the current entryPoint used by this account." + }, + "execute(address,uint256,bytes)": { + "notice": "execute a single call from the account." + }, + "execute(address,uint256,bytes,uint8)": { + "details": "Allows the mech operator to execute arbitrary transactions", + "params": { + "data": "Data payload of transaction.", + "operation": "Operation type of transaction.", + "to": "Destination address of transaction.", + "value": "Ether value of transaction." + }, + "returns": { + "returnData": "Return data of the call" + } + }, + "execute(address,uint256,bytes,uint8,uint256)": { + "details": "Allows the mech operator to execute arbitrary transactions", + "params": { + "data": "Data payload of transaction.", + "operation": "Operation type of transaction.", + "to": "Destination address of transaction.", + "txGas": "Gas to send for executing the meta transaction, if 0 all left will be sent", + "value": "Ether value of transaction." + }, + "returns": { + "returnData": "Return data of the call" + } + }, + "executeBatch((address,uint256,bytes)[])": { + "notice": "execute a batch of calls. revert on the first call that fails. If the batch reverts, and it contains more than a single call, then wrap the revert with ExecuteError, to mark the failing call index." + }, + "getCommit(bytes32)": { + "notice": "Get an existing commit's expiration timestamp.", + "params": { + "_commit": "The keccak256 hash of the name to get the commit for." + }, + "returns": { + "_0": "The commit for the name, containing the expiration timestamp and the sender." + } + }, + "getCommitHash(bytes,address)": { + "notice": "Get the keccak256 hash of a name+sender.", + "params": { + "name": "The name to hash.", + "sender": "The sender's address to hash." + }, + "returns": { + "_0": "The keccak256 hash of the name+sender." + } + }, + "getNonce()": { + "notice": "Return the account nonce. This method returns the next sequential nonce. For a nonce of a specific key, use `entrypoint.getNonce(account, key)`" + }, + "isOperator(address)": { + "details": "Return if the passed address is authorized to sign on behalf of the mech, must be implemented by the child contract", + "params": { + "signer": "The address to check" + } + }, + "isValidSignature(bytes32,bytes)": { + "details": "Checks whether the signature provided is valid for the provided hash, complies with EIP-1271. A signature is valid if either: - It's a valid ECDSA signature by the mech operator - It's a valid EIP-1271 signature by the mech operator - It's a valid EIP-1271 signature by the mech itself", + "params": { + "hash": "Hash of the data (could be either a message hash or transaction hash)", + "signature": "Signature to validate. Can be an ECDSA signature or a EIP-1271 contract signature (identified by v=0)" + } + }, + "isValidSigner(address,bytes)": { + "details": "Returns a magic value indicating whether a given signer is authorized to act on behalf of the account", + "params": { + "signer": "The address to check signing authorization for" + }, + "returns": { + "magicValue": "Magic value indicating whether the signer is valid" + } + }, + "proxiableUUID()": { + "details": "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." + }, + "state()": { + "details": "Returns the current account state per EIP-6551NOTE: This does not change for arbitrary account state changes!The model used here is to change it for *owner-initiated* state changes.E.g., sending a token held by this account should change the state(),but receiving a token should not.This is to prevent griefing if, e.g., a marketplace requires constant state()from listing to sale: an attacked could send a spam token to kill the sale.However, even here, NOT ALL *OWNER-INITIATED* STATE CHANGES ARE CAPTURED.E.g., an owner might approve a contract to transferFrom from this TBA,and such transfers would NOT be reflected with a state change.As such, we advise you do NOT consider this a source of truth, but instead,for the sale-of-TBA case, commit to the state in a more comprehensive, offchain way." + }, + "supportsInterface(bytes4)": { + "details": "Returns true if a given interfaceId is supported by this account. This method can be extended by an override" + }, + "token()": { + "details": "Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.", + "returns": { + "chainId": " The EIP-155 ID of the chain the token exists on", + "tokenContract": "The contract address of the token", + "tokenId": " The ID of the token" + } + }, + "upgradeToAndCall(address,bytes)": { + "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall", + "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." + }, + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": { + "details": "Must validate caller is the entryPoint. Must validate the signature and nonce", + "notice": "Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \"simulation call\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.", + "params": { + "missingAccountFunds": "- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.", + "userOp": "- The operation that is about to be executed.", + "userOpHash": "- Hash of the user's request data. can be used as the basis for signature." + }, + "returns": { + "validationData": " - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \"aggregator\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \"indefinitely\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly." + } + } + }, + "version": 1 + }, + "offset": [ + 139, + 839 + ], + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1D2 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x84B0196E GT PUSH2 0xFD JUMPI DUP1 PUSH4 0xBC197C81 GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xD72CEB9C GT PUSH2 0x62 JUMPI DUP1 PUSH4 0xD72CEB9C EQ PUSH2 0x598 JUMPI DUP1 PUSH4 0xF14FCBC8 EQ PUSH2 0x5CB JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x5EA JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x616 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x52F JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x55D JUMPI DUP1 PUSH4 0xCA3B98BB EQ PUSH2 0x571 JUMPI DUP1 PUSH4 0xD087D288 EQ PUSH2 0x584 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xAD3CB1CC GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x488 JUMPI DUP1 PUSH4 0xB0D691FE EQ PUSH2 0x4B8 JUMPI DUP1 PUSH4 0xB479D600 EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0xB61D27F6 EQ PUSH2 0x510 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x84B0196E EQ PUSH2 0x3F0 JUMPI DUP1 PUSH4 0x8784EA96 EQ PUSH2 0x417 JUMPI DUP1 PUSH4 0x8F41EC5A EQ PUSH2 0x461 JUMPI DUP1 PUSH4 0x9CDF379C EQ PUSH2 0x475 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x34FCD5BE GT PUSH2 0x173 JUMPI DUP1 PUSH4 0x523E3260 GT PUSH2 0x143 JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x38A JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x6D70F7AE EQ PUSH2 0x3BD JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x3DC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x34FCD5BE EQ PUSH2 0x305 JUMPI DUP1 PUSH4 0x382E3DE7 EQ PUSH2 0x324 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x357 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x36A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x150B7A02 GT PUSH2 0x1AE JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x262 JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x29A JUMPI DUP1 PUSH4 0x19822F7C EQ PUSH2 0x2B9 JUMPI DUP1 PUSH4 0x32556B4D EQ PUSH2 0x2E6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH3 0x23DE29 EQ PUSH2 0x1DD JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x203 JUMPI DUP1 PUSH4 0x94CEFED EQ PUSH2 0x237 JUMPI PUSH0 PUSH0 REVERT JUMPDEST CALLDATASIZE PUSH2 0x1D9 JUMPI STOP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x201 PUSH2 0x1F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F1A JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x222 PUSH2 0x21D CALLDATASIZE PUSH1 0x4 PUSH2 0x1FDC JUMP JUMPDEST PUSH2 0x64D JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x24A PUSH2 0x245 CALLDATASIZE PUSH1 0x4 PUSH2 0x1FF7 JUMP JUMPDEST PUSH2 0x678 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x27C CALLDATASIZE PUSH1 0x4 PUSH2 0x2089 JUMP JUMPDEST PUSH2 0x692 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x2193 JUMP JUMPDEST PUSH2 0x6EC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x2D3 CALLDATASIZE PUSH1 0x4 PUSH2 0x21D6 JUMP JUMPDEST PUSH2 0x811 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x22E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x300 CALLDATASIZE PUSH1 0x4 PUSH2 0x2224 JUMP JUMPDEST PUSH2 0x843 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x310 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x201 PUSH2 0x31F CALLDATASIZE PUSH1 0x4 PUSH2 0x22B2 JUMP JUMPDEST PUSH2 0x84E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x201 PUSH2 0x365 CALLDATASIZE PUSH1 0x4 PUSH2 0x22F0 JUMP JUMPDEST PUSH2 0x93E JUMP JUMPDEST PUSH2 0x37D PUSH2 0x378 CALLDATASIZE PUSH1 0x4 PUSH2 0x233B JUMP JUMPDEST PUSH2 0x95D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22E SWAP2 SWAP1 PUSH2 0x23D4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x395 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x3A4 CALLDATASIZE PUSH1 0x4 PUSH2 0x23E6 JUMP JUMPDEST PUSH2 0x989 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x9AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x222 PUSH2 0x3D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x2436 JUMP JUMPDEST PUSH2 0x9C9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x201 PUSH2 0xA67 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3FB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x404 PUSH2 0xBC9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x22E SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2451 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0x431 CALLDATASIZE PUSH1 0x4 PUSH2 0x24E7 JUMP JUMPDEST PUSH0 SWAP1 DUP2 MSTORE PUSH32 0x659D6B2D1CD4038BBDC740615487E3191DB8A386CA05E11A459FEDC97F38DF00 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x46C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x480 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x493 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x37D PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x0 PUSH2 0x24A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x51B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x201 PUSH2 0x52A CALLDATASIZE PUSH1 0x4 PUSH2 0x24FE JUMP JUMPDEST PUSH2 0xC72 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x549 CALLDATASIZE PUSH1 0x4 PUSH2 0x2555 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x568 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0xCCA JUMP JUMPDEST PUSH2 0x37D PUSH2 0x57F CALLDATASIZE PUSH1 0x4 PUSH2 0x25F5 JUMP JUMPDEST PUSH2 0xDB1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x58F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH2 0xDEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D8 PUSH32 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5D6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x201 PUSH2 0x5E5 CALLDATASIZE PUSH1 0x4 PUSH2 0x24E7 JUMP JUMPDEST PUSH2 0xE73 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5F5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x281 PUSH2 0x604 CALLDATASIZE PUSH1 0x4 PUSH2 0x266A JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x621 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x62A PUSH2 0xEFE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x22E JUMP JUMPDEST PUSH0 PUSH2 0x657 DUP3 PUSH2 0xF14 JUMP JUMPDEST DUP1 PUSH2 0x672 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x449E4A13 PUSH1 0xE0 SHL EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x687 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xF3E JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x69D PUSH2 0xEFE JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO PUSH2 0x6BA JUMPI POP DUP1 DUP7 EQ JUMPDEST ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH2 0x70C DUP6 PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD PUSH0 BYTE SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0xFF DUP2 AND PUSH0 SUB PUSH2 0x7D7 JUMPI DUP3 DUP6 DUP4 ADD PUSH1 0x20 ADD PUSH2 0x72D DUP3 PUSH2 0x9C9 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x743 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x75E JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP5 POP PUSH2 0x672 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x78C SWAP1 DUP12 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x26E0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7A7 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7CB SWAP2 SWAP1 PUSH2 0x26F8 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x672 JUMP JUMPDEST PUSH2 0x7E6 PUSH2 0x3D7 DUP8 DUP4 DUP7 DUP7 PUSH2 0xF90 JUMP JUMPDEST ISZERO PUSH2 0x7FE JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP3 POP PUSH2 0x672 SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x81A PUSH2 0xFBC JUMP JUMPDEST PUSH2 0x824 DUP5 DUP5 PUSH2 0x1021 JUMP JUMPDEST SWAP1 POP PUSH2 0x833 DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x107E JUMP JUMPDEST PUSH2 0x83C DUP3 PUSH2 0x10C7 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x83C DUP4 DUP4 PUSH2 0x110C JUMP JUMPDEST PUSH2 0x856 PUSH2 0x113E JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x938 JUMPI CALLDATASIZE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x874 JUMPI PUSH2 0x874 PUSH2 0x2713 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x886 SWAP2 SWAP1 PUSH2 0x2727 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x8E4 PUSH2 0x899 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x2436 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x8AB PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x2745 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP POP GAS PUSH2 0x1146 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x92E JUMPI DUP4 PUSH1 0x1 SUB PUSH2 0x900 JUMPI PUSH2 0x8FB PUSH2 0x115C JUMP JUMPDEST PUSH2 0x92E JUMP JUMPDEST DUP3 PUSH2 0x90A PUSH0 PUSH2 0x116D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5A154675 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x925 SWAP3 SWAP2 SWAP1 PUSH2 0x26E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x859 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x946 PUSH2 0x119E JUMP JUMPDEST PUSH2 0x94F DUP3 PUSH2 0x1242 JUMP JUMPDEST PUSH2 0x959 DUP3 DUP3 PUSH2 0x128A JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x96E DUP8 DUP8 DUP8 DUP8 DUP8 GAS PUSH2 0x134B JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP1 PUSH2 0x97F JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x993 DUP5 PUSH2 0x9C9 JUMP JUMPDEST PUSH2 0x99D JUMPI PUSH0 PUSH2 0x9A6 JUMP JUMPDEST PUSH4 0x291F193 PUSH1 0xE5 SHL JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x9B7 PUSH2 0x13A2 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2A77 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x9D4 PUSH2 0xEFE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP3 POP DUP5 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA21 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA45 SWAP2 SWAP1 PUSH2 0x2787 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x9A6 JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xAAB JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xAC6 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xAD4 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xAF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xB1C JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0xB24 PUSH2 0x13EB JUMP JUMPDEST PUSH2 0xB7C PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1D DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48797065724163636F756E743943686172436F6D6D69744D696E746572000000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x13F3 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xBC2 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 DUP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2A57 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD SWAP1 SWAP2 POP ISZERO DUP1 ISZERO PUSH2 0xBF4 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0xC38 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1152540DCC4C8E88155B9A5B9A5D1A585B1A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0xC40 PUSH2 0x1405 JUMP JUMPDEST PUSH2 0xC48 PUSH2 0x14C5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0xF PUSH1 0xF8 SHL SWAP13 SWAP4 SWAP12 POP SWAP2 SWAP10 POP CHAINID SWAP9 POP ADDRESS SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC7A PUSH2 0x113E JUMP JUMPDEST PUSH0 PUSH2 0xCBB DUP6 DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP POP GAS PUSH2 0x1146 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xBC2 JUMPI PUSH2 0xBC2 PUSH2 0x115C JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800 SWAP1 POP PUSH0 PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH1 0x40 MLOAD PUSH4 0x1AAB3F0D PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x35567E1A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD4F JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD73 SWAP2 SWAP1 PUSH2 0x27A2 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x40 MLOAD SWAP2 SWAP3 POP PUSH2 0xD92 SWAP2 DUP4 SWAP1 PUSH1 0x20 ADD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH0 SHR SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0xDCE DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 ISZERO PUSH2 0xDC8 JUMPI DUP9 PUSH2 0x134B JUMP JUMPDEST GAS PUSH2 0x134B JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDDF JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH1 0x40 MLOAD PUSH4 0x1AAB3F0D PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x35567E1A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE4A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE6E SWAP2 SWAP1 PUSH2 0x27A2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 DUP2 DUP2 MSTORE PUSH32 0x659D6B2D1CD4038BBDC740615487E3191DB8A386CA05E11A459FEDC97F38DF00 PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD TIMESTAMP GT PUSH2 0xEC2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x17D57DB1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xEEC PUSH32 0x0 TIMESTAMP PUSH2 0x27CD JUMP JUMPDEST PUSH0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xF09 PUSH2 0x1503 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH0 PUSH2 0xF1E DUP3 PUSH2 0x150F JUMP JUMPDEST DUP1 PUSH2 0x672 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3C1CC5F1 PUSH1 0xE0 SHL EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x9 DUP6 LT ISZERO PUSH2 0xF82 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH15 0x131858995B081D1BDBC81CDA1BDC9D PUSH1 0x8A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0x687 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1539 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH2 0xFA0 DUP9 DUP9 DUP9 DUP9 PUSH2 0x170B JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0xFB0 DUP3 DUP3 PUSH2 0x17D3 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ PUSH2 0x101F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6163636F756E743A206E6F742066726F6D20456E747279506F696E7400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x925 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x4 PUSH2 0x1031 PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x2745 JUMP JUMPDEST SWAP1 POP GT ISZERO PUSH2 0x1074 JUMPI PUSH0 PUSH2 0x104F PUSH2 0x104A PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x2745 JUMP JUMPDEST PUSH2 0x188B JUMP JUMPDEST SWAP1 POP PUSH4 0xF6B31013 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND ADD PUSH2 0x1072 JUMPI PUSH0 SWAP2 POP POP PUSH2 0x672 JUMP JUMPDEST POP JUMPDEST PUSH2 0x83C DUP4 DUP4 PUSH2 0x18A2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 LT PUSH2 0x10C4 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x496E76616C6964206E6F6E6365 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x925 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x10C4 JUMPI PUSH1 0x40 MLOAD PUSH0 SWAP1 CALLER SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0xBC2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBC2 JUMP JUMPDEST PUSH0 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1120 SWAP3 SWAP2 SWAP1 PUSH2 0x27E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x101F PUSH2 0xFBC JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD DUP8 DUP10 DUP8 CALL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x101F PUSH2 0x1168 PUSH0 PUSH2 0x116D JUMP JUMPDEST PUSH2 0x19AF JUMP JUMPDEST PUSH1 0x60 RETURNDATASIZE DUP3 ISZERO PUSH2 0x1181 JUMPI DUP3 DUP2 GT ISZERO PUSH2 0x1181 JUMPI POP DUP2 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP3 ADD DUP2 ADD PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP2 PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY SWAP4 SWAP3 POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1224 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1218 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2A77 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x101F JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x124B CALLER PUSH2 0x9C9 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x126C JUMPI POP CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ ISZERO JUMPDEST ISZERO PUSH2 0x10C4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47802953 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x12E4 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x12E1 SWAP2 DUP2 ADD SWAP1 PUSH2 0x27A2 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x130C JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2A77 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x133C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH2 0x1346 DUP4 DUP4 PUSH2 0x19B7 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800 DUP1 SLOAD PUSH0 SWAP2 PUSH1 0x60 SWAP2 DUP2 DUP5 PUSH2 0x137E DUP4 PUSH2 0x2809 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH2 0x1391 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x1A0C JUMP JUMPDEST SWAP3 POP SWAP3 POP POP JUMPDEST SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x101F JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x101F PUSH2 0x1B63 JUMP JUMPDEST PUSH2 0x13FB PUSH2 0x1B63 JUMP JUMPDEST PUSH2 0x959 DUP3 DUP3 PUSH2 0x1BAC JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2A57 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x1443 SWAP1 PUSH2 0x2821 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x146F SWAP1 PUSH2 0x2821 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14BA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1491 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14BA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x149D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2A57 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x1443 SWAP1 PUSH2 0x2821 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xF09 ADDRESS PUSH2 0x1C0B JUMP JUMPDEST PUSH0 PUSH2 0x1519 DUP3 PUSH2 0x1C5F JUMP JUMPDEST DUP1 PUSH2 0x672 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 PUSH32 0x659D6B2D1CD4038BBDC740615487E3191DB8A386CA05E11A459FEDC97F38DF00 SWAP1 POP PUSH0 DUP2 PUSH0 ADD PUSH0 PUSH2 0x15A3 DUP11 DUP11 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP CALLER SWAP3 POP PUSH2 0x110C SWAP2 POP POP JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 SLOAD SWAP1 POP DUP1 PUSH0 SUB PUSH2 0x15D3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x345512DF PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP PUSH32 0x0 PUSH2 0x161F PUSH32 0x0 DUP5 PUSH2 0x2859 JUMP JUMPDEST PUSH2 0x1629 SWAP2 SWAP1 PUSH2 0x27CD JUMP JUMPDEST LT PUSH2 0x1647 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9E8DDD6D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP2 LT ISZERO PUSH2 0x1668 JUMPI PUSH1 0x40 MLOAD PUSH4 0x716DBCC9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x94CEFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x94CEFED SWAP1 PUSH2 0x16BE SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x2894 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0x16DA JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x16FE SWAP2 SWAP1 PUSH2 0x2787 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x1744 JUMPI POP PUSH0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x17C9 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1795 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x17C0 JUMPI POP PUSH0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x17C9 JUMP JUMPDEST SWAP3 POP PUSH0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x17E6 JUMPI PUSH2 0x17E6 PUSH2 0x28E7 JUMP JUMPDEST SUB PUSH2 0x17EF JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1803 JUMPI PUSH2 0x1803 PUSH2 0x28E7 JUMP JUMPDEST SUB PUSH2 0x1821 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1835 JUMPI PUSH2 0x1835 PUSH2 0x28E7 JUMP JUMPDEST SUB PUSH2 0x1856 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x186A JUMPI PUSH2 0x186A PUSH2 0x28E7 JUMP JUMPDEST SUB PUSH2 0x959 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x189C JUMPI POP PUSH0 PUSH2 0x672 JUMP JUMPDEST POP POP CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x18F0 DUP5 PUSH2 0x18B7 PUSH2 0x100 DUP9 ADD DUP9 PUSH2 0x2745 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1D00 SWAP3 POP POP POP JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1909 JUMPI PUSH2 0x1909 PUSH2 0x28E7 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x191A JUMPI POP PUSH2 0x191A DUP3 PUSH2 0x9C9 JUMP JUMPDEST ISZERO PUSH2 0x1929 JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0x672 JUMP JUMPDEST PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1C DUP6 SWAP1 MSTORE PUSH1 0x3C SWAP1 KECCAK256 PUSH2 0x1969 DUP2 PUSH2 0x18B7 PUSH2 0x100 DUP10 ADD DUP10 PUSH2 0x2745 JUMP JUMPDEST POP SWAP1 SWAP4 POP SWAP2 POP PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1982 JUMPI PUSH2 0x1982 PUSH2 0x28E7 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x1993 JUMPI POP PUSH2 0x1993 DUP4 PUSH2 0x9C9 JUMP JUMPDEST ISZERO PUSH2 0x19A3 JUMPI PUSH0 SWAP4 POP POP POP POP PUSH2 0x672 JUMP JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH2 0x19C0 DUP3 PUSH2 0x1D49 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x1A04 JUMPI PUSH2 0x1346 DUP3 DUP3 PUSH2 0x1DAC JUMP JUMPDEST PUSH2 0x959 PUSH2 0x1E1E JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH2 0x1A18 CALLER PUSH2 0x9C9 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x1A39 JUMPI POP CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1A57 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47802953 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH0 SUB PUSH2 0x1AC8 JUMPI DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x1A7D SWAP3 SWAP2 SWAP1 PUSH2 0x28FB JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1AB8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1ABD JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1397 JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x1B27 JUMPI DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x1AEE SWAP3 SWAP2 SWAP1 PUSH2 0x28FB JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP7 DELEGATECALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1AB8 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1ABD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x24B73B30B634B21037B832B930BA34B7B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x925 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x101F JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1BB4 PUSH2 0x1B63 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2A57 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 PUSH2 0x1BED DUP5 DUP3 PUSH2 0x294E JUMP JUMPDEST POP PUSH1 0x3 DUP2 ADD PUSH2 0x1BFC DUP4 DUP3 PUSH2 0x294E JUMP JUMPDEST POP PUSH0 DUP1 DUP3 SSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x60 PUSH1 0x4D PUSH1 0x20 DUP4 ADD DUP8 EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1C51 SWAP2 SWAP1 PUSH2 0x2A08 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3CE4A3E9 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1C8F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1CAA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6608BDF PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x1CC5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1CE0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x672 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x51945447 PUSH1 0xE0 SHL EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x1D37 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH0 BYTE PUSH2 0x1D29 DUP9 DUP3 DUP6 DUP6 PUSH2 0x170B JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x1D42 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x1D7E JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2A77 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1DC8 SWAP2 SWAP1 PUSH2 0x2A40 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1E00 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1E05 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1E15 DUP6 DUP4 DUP4 PUSH2 0x1E3D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x101F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1E52 JUMPI PUSH2 0x1E4D DUP3 PUSH2 0x1E99 JUMP JUMPDEST PUSH2 0x83C JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1E69 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1E92 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x925 JUMP JUMPDEST POP DUP1 PUSH2 0x83C JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1EA9 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x10C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1EE6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1EFC JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1F13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1F31 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1F3C DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1F4C DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x1F5C DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1F7D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1F89 DUP12 DUP3 DUP13 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FA7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1FB3 DUP12 DUP3 DUP13 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x10C4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FEC JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x83C DUP2 PUSH2 0x1FC7 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x200C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2017 DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2031 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x203D DUP10 DUP3 DUP11 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x205B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2067 DUP10 DUP3 DUP11 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x207B DUP2 PUSH2 0x1EC2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x209D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x20A8 DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x20B8 DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x20E5 DUP9 DUP3 DUP10 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2119 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2132 JUMPI PUSH2 0x2132 PUSH2 0x20F6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2160 JUMPI PUSH2 0x2160 PUSH2 0x20F6 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x2177 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x21A4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x21CC DUP6 DUP3 DUP7 ADD PUSH2 0x210A JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x21E8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21FD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 ADD PUSH2 0x120 DUP2 DUP8 SUB SLT ISZERO PUSH2 0x220F JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2235 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x224A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2256 DUP6 DUP3 DUP7 ADD PUSH2 0x210A JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x2267 DUP2 PUSH2 0x1EC2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x2282 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2298 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x1F13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x22C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x22D8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x22E4 DUP6 DUP3 DUP7 ADD PUSH2 0x2272 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2301 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x230C DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2336 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x234F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x235A DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x237B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2387 DUP9 DUP3 DUP10 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x239A SWAP1 POP PUSH1 0x60 DUP8 ADD PUSH2 0x2326 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x83C PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x23A6 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x23F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2403 DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x241D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2429 DUP7 DUP3 DUP8 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2446 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x83C DUP2 PUSH2 0x1EC2 JUMP JUMPDEST PUSH1 0xFF PUSH1 0xF8 SHL DUP9 AND DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x246F PUSH1 0xE0 DUP4 ADD DUP10 PUSH2 0x23A6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2481 DUP2 DUP10 PUSH2 0x23A6 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD DUP7 SWAP1 MSTORE DUP4 DUP2 SUB PUSH1 0xC0 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP8 ADD SWAP4 POP SWAP1 SWAP2 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x24D6 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x24B8 JUMP JUMPDEST POP SWAP1 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x24F7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2511 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x251C DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x253D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2549 DUP8 DUP3 DUP9 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x256C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2577 DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x2587 DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25A1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x25AD DUP12 DUP3 DUP13 ADD PUSH2 0x2272 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x25CB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x25D7 DUP12 DUP3 DUP13 ADD PUSH2 0x2272 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FA7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x260A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2615 DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2636 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2642 DUP10 DUP3 DUP11 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x2655 SWAP1 POP PUSH1 0x60 DUP9 ADD PUSH2 0x2326 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP2 SWAP5 SWAP4 PUSH1 0x80 SWAP1 SWAP3 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x267F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x268A DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x269A DUP2 PUSH2 0x1EC2 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x26C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x26CE DUP10 DUP3 DUP11 ADD PUSH2 0x1ED6 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x9A6 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x23A6 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2708 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x83C DUP2 PUSH2 0x1FC7 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 CALLDATALOAD PUSH1 0x5E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x273B JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x275A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2773 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1F13 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2797 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x83C DUP2 PUSH2 0x1EC2 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x27B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x672 JUMPI PUSH2 0x672 PUSH2 0x27B9 JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH0 PUSH2 0x27F2 PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x23A6 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x281A JUMPI PUSH2 0x281A PUSH2 0x27B9 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x2835 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2853 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x672 JUMPI PUSH2 0x672 PUSH2 0x27B9 JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x28B8 SWAP1 DUP4 ADD DUP8 DUP10 PUSH2 0x286C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x28CB DUP2 DUP7 DUP9 PUSH2 0x286C JUMP JUMPDEST SWAP2 POP POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1346 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x292F JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xBC2 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x293B JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2967 JUMPI PUSH2 0x2967 PUSH2 0x20F6 JUMP JUMPDEST PUSH2 0x297B DUP2 PUSH2 0x2975 DUP5 SLOAD PUSH2 0x2821 JUMP JUMPDEST DUP5 PUSH2 0x290A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x29AD JUMPI PUSH0 DUP4 ISZERO PUSH2 0x2996 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xBC2 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x29DC JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x29BC JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x29F9 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2A1A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x2A2D DUP2 PUSH2 0x1EC2 JUMP JUMPDEST PUSH1 0x40 SWAP5 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP6 SWAP4 SWAP5 POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID LOG1 PUSH11 0x46D94261C7517CC8FF89F6 SHR 0xC 0xE9 CALLDATALOAD SWAP9 0xE3 0xC8 BLOBHASH DUP1 LT GT 0xDE 0xE6 BLOBHASH 0xA6 0xA5 JUMPI 0xD1 STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCA2646970667358221220F5 DUP13 SWAP15 SLT 0xD2 BASEFEE 0xE4 0xC8 EXTCODECOPY 0xEB DUP14 SELFBALANCE DUP11 0xA8 SWAP16 0xE MSIZE SSTORE 0xDD 0xFC STOP 0xB7 KECCAK256 SWAP5 PC BLOBBASEFEE 0xBF MULMOD PUSH26 0x58406C64736F6C634300081C0033000000000000000000000000 ", + "pcMap": { + "0": { + "offset": [ + 139, + 839 + ], + "op": "PUSH1", + "path": "97", + "value": "0x80" + }, + "2": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH1", + "path": "97", + "value": "0x40" + }, + "4": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "MSTORE", + "path": "97" + }, + "5": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH1", + "path": "97", + "value": "0x4" + }, + "7": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "CALLDATASIZE", + "path": "97" + }, + "8": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "LT", + "path": "97" + }, + "9": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x1D2" + }, + "12": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "13": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "14": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "CALLDATALOAD", + "path": "97" + }, + "15": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH1", + "path": "97", + "value": "0xE0" + }, + "17": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "SHR", + "path": "97" + }, + "18": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "19": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x84B0196E" + }, + "24": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "GT", + "path": "97" + }, + "25": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0xFD" + }, + "28": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "29": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "30": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xBC197C81" + }, + "35": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "GT", + "path": "97" + }, + "36": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x92" + }, + "39": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "40": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "41": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xD72CEB9C" + }, + "46": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "GT", + "path": "97" + }, + "47": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x62" + }, + "50": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "51": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "52": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xD72CEB9C" + }, + "57": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "58": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x598" + }, + "61": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "62": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "63": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xF14FCBC8" + }, + "68": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "69": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x5CB" + }, + "72": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "73": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "74": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xF23A6E61" + }, + "79": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "80": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x5EA" + }, + "83": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "84": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "85": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xFC0C546A" + }, + "90": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "91": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x616" + }, + "94": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "95": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "96": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "97": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "98": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "99": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "100": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xBC197C81" + }, + "105": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "106": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x52F" + }, + "109": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "110": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "111": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xC19D93FB" + }, + "116": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "117": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x55D" + }, + "120": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "121": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "122": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xCA3B98BB" + }, + "127": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "128": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x571" + }, + "131": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "132": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "133": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xD087D288" + }, + "138": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "139": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x584" + }, + "142": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "143": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "144": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "145": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "146": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "147": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "148": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xAD3CB1CC" + }, + "153": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "GT", + "path": "97" + }, + "154": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0xCD" + }, + "157": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "158": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "159": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xAD3CB1CC" + }, + "164": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "165": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x488" + }, + "168": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "169": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "170": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xB0D691FE" + }, + "175": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "176": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x4B8" + }, + "179": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "180": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "181": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xB479D600" + }, + "186": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "187": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x4DE" + }, + "190": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "191": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "192": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0xB61D27F6" + }, + "197": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "198": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x510" + }, + "201": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "202": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "203": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "204": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "205": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "206": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "207": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x84B0196E" + }, + "212": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "213": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x3F0" + }, + "216": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "217": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "218": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x8784EA96" + }, + "223": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "224": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x417" + }, + "227": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "228": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "229": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x8F41EC5A" + }, + "234": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "235": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x461" + }, + "238": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "239": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "240": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x9CDF379C" + }, + "245": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "246": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x475" + }, + "249": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "250": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "251": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "252": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "253": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "254": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "255": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x34FCD5BE" + }, + "260": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "GT", + "path": "97" + }, + "261": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x173" + }, + "264": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "265": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "266": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x523E3260" + }, + "271": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "GT", + "path": "97" + }, + "272": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x143" + }, + "275": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "276": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "277": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x523E3260" + }, + "282": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "283": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x38A" + }, + "286": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "287": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "288": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x52D1902D" + }, + "293": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "294": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x3A9" + }, + "297": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "298": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "299": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x6D70F7AE" + }, + "304": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "305": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x3BD" + }, + "308": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "309": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "310": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x8129FC1C" + }, + "315": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "316": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x3DC" + }, + "319": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "320": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "321": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "322": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "323": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "324": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "325": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x34FCD5BE" + }, + "330": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "331": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x305" + }, + "334": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "335": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "336": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x382E3DE7" + }, + "341": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "342": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x324" + }, + "345": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "346": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "347": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x4F1EF286" + }, + "352": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "353": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x357" + }, + "356": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "357": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "358": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x51945447" + }, + "363": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "364": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x36A" + }, + "367": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "368": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "369": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "370": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "371": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "372": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "373": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x150B7A02" + }, + "378": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "GT", + "path": "97" + }, + "379": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x1AE" + }, + "382": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "383": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "384": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x150B7A02" + }, + "389": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "390": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x262" + }, + "393": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "394": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "395": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x1626BA7E" + }, + "400": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "401": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x29A" + }, + "404": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "405": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "406": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x19822F7C" + }, + "411": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "412": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x2B9" + }, + "415": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "416": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "417": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x32556B4D" + }, + "422": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "423": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x2E6" + }, + "426": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "427": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "428": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "429": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "430": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "431": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "432": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH3", + "path": "97", + "value": "0x23DE29" + }, + "436": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "437": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x1DD" + }, + "440": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "441": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "442": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x1FFC9A7" + }, + "447": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "448": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x203" + }, + "451": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "452": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "DUP1", + "path": "97" + }, + "453": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH4", + "path": "97", + "value": "0x94CEFED" + }, + "458": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "EQ", + "path": "97" + }, + "459": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x237" + }, + "462": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "463": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "464": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "465": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "466": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "467": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "CALLDATASIZE", + "path": "97" + }, + "468": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH2", + "path": "97", + "value": "0x1D9" + }, + "471": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPI", + "path": "97" + }, + "472": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "STOP", + "path": "97" + }, + "473": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "JUMPDEST", + "path": "97" + }, + "474": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "475": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "PUSH0", + "path": "97" + }, + "476": { + "fn": null, + "offset": [ + 139, + 839 + ], + "op": "REVERT", + "path": "97" + }, + "477": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "478": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "CALLVALUE", + "path": "112" + }, + "479": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "DUP1", + "path": "112" + }, + "480": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "ISZERO", + "path": "112" + }, + "481": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1E8" + }, + "484": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPI", + "path": "112" + }, + "485": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH0", + "path": "112" + }, + "486": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH0", + "path": "112" + }, + "487": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "REVERT", + "path": "112" + }, + "488": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "489": { + "op": "POP" + }, + "490": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x201" + }, + "493": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1F7" + }, + "496": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "497": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "499": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1F1A" + }, + "502": { + "fn": "Receiver.tokensReceived", + "jump": "i", + "offset": [ + 1416, + 1603 + ], + "op": "JUMP", + "path": "112" + }, + "503": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "504": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "505": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "506": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "507": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "508": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "509": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "510": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "511": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "512": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMP", + "path": "112" + }, + "513": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "514": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "STOP", + "path": "112" + }, + "515": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "JUMPDEST", + "path": "99" + }, + "516": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "CALLVALUE", + "path": "99" + }, + "517": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "DUP1", + "path": "99" + }, + "518": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "ISZERO", + "path": "99" + }, + "519": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH2", + "path": "99", + "value": "0x20E" + }, + "522": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "JUMPI", + "path": "99" + }, + "523": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH0", + "path": "99" + }, + "524": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH0", + "path": "99" + }, + "525": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "REVERT", + "path": "99" + }, + "526": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "JUMPDEST", + "path": "99" + }, + "527": { + "op": "POP" + }, + "528": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH2", + "path": "99", + "value": "0x222" + }, + "531": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH2", + "path": "99", + "value": "0x21D" + }, + "534": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "CALLDATASIZE", + "path": "99" + }, + "535": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "537": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH2", + "path": "99", + "value": "0x1FDC" + }, + "540": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "jump": "i", + "offset": [ + 2271, + 2557 + ], + "op": "JUMP", + "path": "99" + }, + "541": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "JUMPDEST", + "path": "99" + }, + "542": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH2", + "path": "99", + "value": "0x64D" + }, + "545": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "jump": "i", + "offset": [ + 2271, + 2557 + ], + "op": "JUMP", + "path": "99" + }, + "546": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "JUMPDEST", + "path": "99" + }, + "547": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "549": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "MLOAD", + "path": "99" + }, + "550": { + "op": "SWAP1" + }, + "551": { + "op": "ISZERO" + }, + "552": { + "op": "ISZERO" + }, + "553": { + "op": "DUP2" + }, + "554": { + "op": "MSTORE" + }, + "555": { + "op": "PUSH1", + "value": "0x20" + }, + "557": { + "op": "ADD" + }, + "558": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "JUMPDEST", + "path": "99" + }, + "559": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "561": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "MLOAD", + "path": "99" + }, + "562": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "DUP1", + "path": "99" + }, + "563": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "SWAP2", + "path": "99" + }, + "564": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "SUB", + "path": "99" + }, + "565": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "SWAP1", + "path": "99" + }, + "566": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "RETURN", + "path": "99" + }, + "567": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "568": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x24A" + }, + "571": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x245" + }, + "574": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "CALLDATASIZE", + "path": "101" + }, + "575": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "577": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1FF7" + }, + "580": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "581": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "582": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x678" + }, + "585": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "586": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "587": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH1", + "path": "101", + "value": "0x40" + }, + "589": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "MLOAD", + "path": "101" + }, + "590": { + "op": "PUSH1", + "value": "0x1" + }, + "592": { + "op": "PUSH1", + "value": "0x1" + }, + "594": { + "op": "PUSH1", + "value": "0xA0" + }, + "596": { + "op": "SHL" + }, + "597": { + "op": "SUB" + }, + "598": { + "op": "SWAP1" + }, + "599": { + "op": "SWAP2" + }, + "600": { + "op": "AND" + }, + "601": { + "op": "DUP2" + }, + "602": { + "op": "MSTORE" + }, + "603": { + "op": "PUSH1", + "value": "0x20" + }, + "605": { + "op": "ADD" + }, + "606": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x22E" + }, + "609": { + "op": "JUMP" + }, + "610": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "611": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "CALLVALUE", + "path": "110" + }, + "612": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "DUP1", + "path": "110" + }, + "613": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "ISZERO", + "path": "110" + }, + "614": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x26D" + }, + "617": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPI", + "path": "110" + }, + "618": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH0", + "path": "110" + }, + "619": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH0", + "path": "110" + }, + "620": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "REVERT", + "path": "110" + }, + "621": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "622": { + "op": "POP" + }, + "623": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x281" + }, + "626": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x27C" + }, + "629": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "CALLDATASIZE", + "path": "110" + }, + "630": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "632": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x2089" + }, + "635": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "636": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "637": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x692" + }, + "640": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "641": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "642": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "644": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "MLOAD", + "path": "110" + }, + "645": { + "op": "PUSH1", + "value": "0x1" + }, + "647": { + "op": "PUSH1", + "value": "0x1" + }, + "649": { + "op": "PUSH1", + "value": "0xE0" + }, + "651": { + "op": "SHL" + }, + "652": { + "op": "SUB" + }, + "653": { + "op": "NOT" + }, + "654": { + "op": "SWAP1" + }, + "655": { + "op": "SWAP2" + }, + "656": { + "op": "AND" + }, + "657": { + "op": "DUP2" + }, + "658": { + "op": "MSTORE" + }, + "659": { + "op": "PUSH1", + "value": "0x20" + }, + "661": { + "op": "ADD" + }, + "662": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x22E" + }, + "665": { + "op": "JUMP" + }, + "666": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "667": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "CALLVALUE", + "path": "111" + }, + "668": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "DUP1", + "path": "111" + }, + "669": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "ISZERO", + "path": "111" + }, + "670": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2A5" + }, + "673": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPI", + "path": "111" + }, + "674": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH0", + "path": "111" + }, + "675": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH0", + "path": "111" + }, + "676": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "REVERT", + "path": "111" + }, + "677": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "678": { + "op": "POP" + }, + "679": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x281" + }, + "682": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2B4" + }, + "685": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "686": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "688": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2193" + }, + "691": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "692": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "693": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x6EC" + }, + "696": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "697": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "698": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "CALLVALUE", + "path": "85" + }, + "699": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "DUP1", + "path": "85" + }, + "700": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "ISZERO", + "path": "85" + }, + "701": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2C4" + }, + "704": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPI", + "path": "85" + }, + "705": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH0", + "path": "85" + }, + "706": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH0", + "path": "85" + }, + "707": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "REVERT", + "path": "85" + }, + "708": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "709": { + "op": "POP" + }, + "710": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2D8" + }, + "713": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2D3" + }, + "716": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "717": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "719": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x21D6" + }, + "722": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "723": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "724": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x811" + }, + "727": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "728": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "729": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "731": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "MLOAD", + "path": "85" + }, + "732": { + "op": "SWAP1" + }, + "733": { + "op": "DUP2" + }, + "734": { + "op": "MSTORE" + }, + "735": { + "op": "PUSH1", + "value": "0x20" + }, + "737": { + "op": "ADD" + }, + "738": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x22E" + }, + "741": { + "op": "JUMP" + }, + "742": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "JUMPDEST", + "path": "99" + }, + "743": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "CALLVALUE", + "path": "99" + }, + "744": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "DUP1", + "path": "99" + }, + "745": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "ISZERO", + "path": "99" + }, + "746": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2F1" + }, + "749": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "JUMPI", + "path": "99" + }, + "750": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "PUSH0", + "path": "99" + }, + "751": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "PUSH0", + "path": "99" + }, + "752": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "REVERT", + "path": "99" + }, + "753": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "JUMPDEST", + "path": "99" + }, + "754": { + "op": "POP" + }, + "755": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2D8" + }, + "758": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "PUSH2", + "path": "99", + "value": "0x300" + }, + "761": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "CALLDATASIZE", + "path": "99" + }, + "762": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "764": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2224" + }, + "767": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "jump": "i", + "offset": [ + 2123, + 2265 + ], + "op": "JUMP", + "path": "99" + }, + "768": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "JUMPDEST", + "path": "99" + }, + "769": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "PUSH2", + "path": "99", + "value": "0x843" + }, + "772": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "jump": "i", + "offset": [ + 2123, + 2265 + ], + "op": "JUMP", + "path": "99" + }, + "773": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "774": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "CALLVALUE", + "path": "85" + }, + "775": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "DUP1", + "path": "85" + }, + "776": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "ISZERO", + "path": "85" + }, + "777": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x310" + }, + "780": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPI", + "path": "85" + }, + "781": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH0", + "path": "85" + }, + "782": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH0", + "path": "85" + }, + "783": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "REVERT", + "path": "85" + }, + "784": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "785": { + "op": "POP" + }, + "786": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x201" + }, + "789": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x31F" + }, + "792": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "793": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "795": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x22B2" + }, + "798": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "799": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "800": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x84E" + }, + "803": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "804": { + "offset": [ + 330, + 367 + ], + "op": "JUMPDEST", + "path": "99" + }, + "805": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "CALLVALUE", + "path": "99" + }, + "806": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "DUP1", + "path": "99" + }, + "807": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "ISZERO", + "path": "99" + }, + "808": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "PUSH2", + "path": "99", + "value": "0x32F" + }, + "811": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "JUMPI", + "path": "99" + }, + "812": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "PUSH0", + "path": "99" + }, + "813": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "PUSH0", + "path": "99" + }, + "814": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "REVERT", + "path": "99" + }, + "815": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "JUMPDEST", + "path": "99" + }, + "816": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "POP", + "path": "99" + }, + "817": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2D8" + }, + "820": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "PUSH32", + "path": "99", + "value": "0x0" + }, + "853": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "DUP2", + "path": "99" + }, + "854": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 330, + 367 + ], + "op": "JUMP", + "path": "99" + }, + "855": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "856": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x201" + }, + "859": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x365" + }, + "862": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "CALLDATASIZE", + "path": "68" + }, + "863": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "865": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x22F0" + }, + "868": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "869": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "870": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x93E" + }, + "873": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "874": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "875": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x37D" + }, + "878": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x378" + }, + "881": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "882": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "884": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x233B" + }, + "887": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "888": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "889": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x95D" + }, + "892": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "893": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "894": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "896": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "MLOAD", + "path": "111" + }, + "897": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x22E" + }, + "900": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP2", + "path": "111" + }, + "901": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP1", + "path": "111" + }, + "902": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x23D4" + }, + "905": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "906": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "907": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "CALLVALUE", + "path": "113" + }, + "908": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "DUP1", + "path": "113" + }, + "909": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "ISZERO", + "path": "113" + }, + "910": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x395" + }, + "913": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPI", + "path": "113" + }, + "914": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH0", + "path": "113" + }, + "915": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH0", + "path": "113" + }, + "916": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "REVERT", + "path": "113" + }, + "917": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "918": { + "op": "POP" + }, + "919": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x281" + }, + "922": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x3A4" + }, + "925": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "CALLDATASIZE", + "path": "113" + }, + "926": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH1", + "path": "113", + "value": "0x4" + }, + "928": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x23E6" + }, + "931": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "932": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "933": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x989" + }, + "936": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "937": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "938": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "CALLVALUE", + "path": "68" + }, + "939": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "DUP1", + "path": "68" + }, + "940": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "ISZERO", + "path": "68" + }, + "941": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x3B4" + }, + "944": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPI", + "path": "68" + }, + "945": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH0", + "path": "68" + }, + "946": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH0", + "path": "68" + }, + "947": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "REVERT", + "path": "68" + }, + "948": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "949": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "POP", + "path": "68" + }, + "950": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x2D8" + }, + "953": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x9AE" + }, + "956": { + "fn": "UUPSUpgradeable.proxiableUUID", + "jump": "i", + "offset": [ + 3708, + 3842 + ], + "op": "JUMP", + "path": "68" + }, + "957": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "958": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "CALLVALUE", + "path": "110" + }, + "959": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "DUP1", + "path": "110" + }, + "960": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "ISZERO", + "path": "110" + }, + "961": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x3C8" + }, + "964": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPI", + "path": "110" + }, + "965": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH0", + "path": "110" + }, + "966": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH0", + "path": "110" + }, + "967": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "REVERT", + "path": "110" + }, + "968": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "969": { + "op": "POP" + }, + "970": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x222" + }, + "973": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x3D7" + }, + "976": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "CALLDATASIZE", + "path": "110" + }, + "977": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "979": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x2436" + }, + "982": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "983": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "984": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x9C9" + }, + "987": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "988": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "JUMPDEST", + "path": "97" + }, + "989": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "CALLVALUE", + "path": "97" + }, + "990": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "DUP1", + "path": "97" + }, + "991": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "ISZERO", + "path": "97" + }, + "992": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "PUSH2", + "path": "97", + "value": "0x3E7" + }, + "995": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "JUMPI", + "path": "97" + }, + "996": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "PUSH0", + "path": "97" + }, + "997": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "PUSH0", + "path": "97" + }, + "998": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "REVERT", + "path": "97" + }, + "999": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "JUMPDEST", + "path": "97" + }, + "1000": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "POP", + "path": "97" + }, + "1001": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "PUSH2", + "path": "97", + "value": "0x201" + }, + "1004": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "PUSH2", + "path": "97", + "value": "0xA67" + }, + "1007": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "jump": "i", + "offset": [ + 375, + 527 + ], + "op": "JUMP", + "path": "97" + }, + "1008": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "1009": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "CALLVALUE", + "path": "75" + }, + "1010": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "DUP1", + "path": "75" + }, + "1011": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "ISZERO", + "path": "75" + }, + "1012": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x3FB" + }, + "1015": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPI", + "path": "75" + }, + "1016": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH0", + "path": "75" + }, + "1017": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH0", + "path": "75" + }, + "1018": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "REVERT", + "path": "75" + }, + "1019": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "1020": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "POP", + "path": "75" + }, + "1021": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x404" + }, + "1024": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0xBC9" + }, + "1027": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "1028": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "1029": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "1031": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "MLOAD", + "path": "75" + }, + "1032": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x22E" + }, + "1035": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP8", + "path": "75" + }, + "1036": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP7", + "path": "75" + }, + "1037": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP6", + "path": "75" + }, + "1038": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP5", + "path": "75" + }, + "1039": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP4", + "path": "75" + }, + "1040": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP3", + "path": "75" + }, + "1041": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP2", + "path": "75" + }, + "1042": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP1", + "path": "75" + }, + "1043": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2451" + }, + "1046": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "1047": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1048": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "CALLVALUE", + "path": "99" + }, + "1049": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "DUP1", + "path": "99" + }, + "1050": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "ISZERO", + "path": "99" + }, + "1051": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "PUSH2", + "path": "99", + "value": "0x422" + }, + "1054": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "JUMPI", + "path": "99" + }, + "1055": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "PUSH0", + "path": "99" + }, + "1056": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "PUSH0", + "path": "99" + }, + "1057": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "REVERT", + "path": "99" + }, + "1058": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1059": { + "op": "POP" + }, + "1060": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2D8" + }, + "1063": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "PUSH2", + "path": "99", + "value": "0x431" + }, + "1066": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "CALLDATASIZE", + "path": "99" + }, + "1067": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "1069": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "PUSH2", + "path": "99", + "value": "0x24E7" + }, + "1072": { + "fn": "HyperAccountCommitMinter.getCommit", + "jump": "i", + "offset": [ + 2719, + 2920 + ], + "op": "JUMP", + "path": "99" + }, + "1073": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1074": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2778, + 2785 + ], + "op": "PUSH0", + "path": "99" + }, + "1075": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "SWAP1", + "path": "99", + "statement": 0 + }, + "1076": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "DUP2", + "path": "99" + }, + "1077": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "MSTORE", + "path": "99" + }, + "1078": { + "fn": "HyperAccountCommitMinter._getHyperAccountCommitMinterStorage", + "offset": [ + 1075, + 1110 + ], + "op": "PUSH32", + "path": "99", + "value": "0x659D6B2D1CD4038BBDC740615487E3191DB8A386CA05E11A459FEDC97F38DF00" + }, + "1111": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "1113": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "MSTORE", + "path": "99" + }, + "1114": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "1116": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "SWAP1", + "path": "99" + }, + "1117": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "KECCAK256", + "path": "99" + }, + "1118": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "SLOAD", + "path": "99" + }, + "1119": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2895, + 2913 + ], + "op": "SWAP1", + "path": "99" + }, + "1120": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 2719, + 2920 + ], + "op": "JUMP", + "path": "99" + }, + "1121": { + "offset": [ + 737, + 786 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1122": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "CALLVALUE", + "path": "109" + }, + "1123": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "DUP1", + "path": "109" + }, + "1124": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "ISZERO", + "path": "109" + }, + "1125": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "PUSH2", + "path": "109", + "value": "0x46C" + }, + "1128": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "JUMPI", + "path": "109" + }, + "1129": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "PUSH0", + "path": "109" + }, + "1130": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "PUSH0", + "path": "109" + }, + "1131": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "REVERT", + "path": "109" + }, + "1132": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1133": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "POP", + "path": "109" + }, + "1134": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "PUSH2", + "path": "109", + "value": "0x2D8" + }, + "1137": { + "offset": [ + 785, + 786 + ], + "op": "PUSH1", + "path": "109", + "value": "0x1" + }, + "1139": { + "offset": [ + 737, + 786 + ], + "op": "DUP2", + "path": "109" + }, + "1140": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 737, + 786 + ], + "op": "JUMP", + "path": "109" + }, + "1141": { + "offset": [ + 679, + 731 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1142": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "CALLVALUE", + "path": "109" + }, + "1143": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "DUP1", + "path": "109" + }, + "1144": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "ISZERO", + "path": "109" + }, + "1145": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "PUSH2", + "path": "109", + "value": "0x480" + }, + "1148": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "JUMPI", + "path": "109" + }, + "1149": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "1150": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "1151": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "REVERT", + "path": "109" + }, + "1152": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1153": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "POP", + "path": "109" + }, + "1154": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "PUSH2", + "path": "109", + "value": "0x2D8" + }, + "1157": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "1158": { + "offset": [ + 679, + 731 + ], + "op": "DUP2", + "path": "109" + }, + "1159": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 679, + 731 + ], + "op": "JUMP", + "path": "109" + }, + "1160": { + "offset": [ + 1819, + 1877 + ], + "op": "JUMPDEST", + "path": "68" + }, + "1161": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "CALLVALUE", + "path": "68" + }, + "1162": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "1163": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "ISZERO", + "path": "68" + }, + "1164": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH2", + "path": "68", + "value": "0x493" + }, + "1167": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "JUMPI", + "path": "68" + }, + "1168": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH0", + "path": "68" + }, + "1169": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH0", + "path": "68" + }, + "1170": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "REVERT", + "path": "68" + }, + "1171": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "JUMPDEST", + "path": "68" + }, + "1172": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "POP", + "path": "68" + }, + "1173": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH2", + "path": "68", + "value": "0x37D" + }, + "1176": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "1178": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "MLOAD", + "path": "68" + }, + "1179": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "1180": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "1182": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "ADD", + "path": "68" + }, + "1183": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "1185": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "1186": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "1187": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x5" + }, + "1189": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "1190": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "1191": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x20" + }, + "1193": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "ADD", + "path": "68" + }, + "1194": { + "op": "PUSH5", + "value": "0x352E302E3" + }, + "1200": { + "op": "PUSH1", + "value": "0xDC" + }, + "1202": { + "op": "SHL" + }, + "1203": { + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "1204": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "1205": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "POP", + "path": "68" + }, + "1206": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "1207": { + "fn": "HyperAccountCommitMinter.getCommit", + "offset": [ + 1819, + 1877 + ], + "op": "JUMP", + "path": "68" + }, + "1208": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1209": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "CALLVALUE", + "path": "109" + }, + "1210": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "DUP1", + "path": "109" + }, + "1211": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "ISZERO", + "path": "109" + }, + "1212": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH2", + "path": "109", + "value": "0x4C3" + }, + "1215": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPI", + "path": "109" + }, + "1216": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH0", + "path": "109" + }, + "1217": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH0", + "path": "109" + }, + "1218": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "REVERT", + "path": "109" + }, + "1219": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1220": { + "op": "POP" + }, + "1221": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "1242": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH2", + "path": "109", + "value": "0x24A" + }, + "1245": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMP", + "path": "109" + }, + "1246": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1247": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "CALLVALUE", + "path": "101" + }, + "1248": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "DUP1", + "path": "101" + }, + "1249": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "ISZERO", + "path": "101" + }, + "1250": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH2", + "path": "101", + "value": "0x4E9" + }, + "1253": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPI", + "path": "101" + }, + "1254": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH0", + "path": "101" + }, + "1255": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH0", + "path": "101" + }, + "1256": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "REVERT", + "path": "101" + }, + "1257": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1258": { + "op": "POP" + }, + "1259": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2124, + 2133 + ], + "op": "PUSH32", + "path": "101", + "statement": 1, + "value": "0x0" + }, + "1292": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH2", + "path": "101", + "value": "0x24A" + }, + "1295": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMP", + "path": "101" + }, + "1296": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1297": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "CALLVALUE", + "path": "85" + }, + "1298": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "DUP1", + "path": "85" + }, + "1299": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "ISZERO", + "path": "85" + }, + "1300": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x51B" + }, + "1303": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPI", + "path": "85" + }, + "1304": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH0", + "path": "85" + }, + "1305": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH0", + "path": "85" + }, + "1306": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "REVERT", + "path": "85" + }, + "1307": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1308": { + "op": "POP" + }, + "1309": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x201" + }, + "1312": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x52A" + }, + "1315": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "1316": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "1318": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x24FE" + }, + "1321": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1383, + 1638 + ], + "op": "JUMP", + "path": "85" + }, + "1322": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1323": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0xC72" + }, + "1326": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1383, + 1638 + ], + "op": "JUMP", + "path": "85" + }, + "1327": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1328": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "CALLVALUE", + "path": "112" + }, + "1329": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "DUP1", + "path": "112" + }, + "1330": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "ISZERO", + "path": "112" + }, + "1331": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x53A" + }, + "1334": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPI", + "path": "112" + }, + "1335": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH0", + "path": "112" + }, + "1336": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH0", + "path": "112" + }, + "1337": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "REVERT", + "path": "112" + }, + "1338": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1339": { + "op": "POP" + }, + "1340": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x281" + }, + "1343": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x549" + }, + "1346": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "1347": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "1349": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x2555" + }, + "1352": { + "fn": "Receiver.onERC1155BatchReceived", + "jump": "i", + "offset": [ + 931, + 1189 + ], + "op": "JUMP", + "path": "112" + }, + "1353": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1354": { + "op": "PUSH4", + "value": "0xBC197C81" + }, + "1359": { + "op": "PUSH1", + "value": "0xE0" + }, + "1361": { + "op": "SHL" + }, + "1362": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "SWAP9", + "path": "112" + }, + "1363": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "SWAP8", + "path": "112" + }, + "1364": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1365": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1366": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1367": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1368": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1369": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1370": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1371": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1372": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMP", + "path": "112" + }, + "1373": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1374": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "CALLVALUE", + "path": "113" + }, + "1375": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "DUP1", + "path": "113" + }, + "1376": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "ISZERO", + "path": "113" + }, + "1377": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0x568" + }, + "1380": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPI", + "path": "113" + }, + "1381": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH0", + "path": "113" + }, + "1382": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH0", + "path": "113" + }, + "1383": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "REVERT", + "path": "113" + }, + "1384": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1385": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "POP", + "path": "113" + }, + "1386": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2D8" + }, + "1389": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0xCCA" + }, + "1392": { + "fn": "TokenBoundMech.state", + "jump": "i", + "offset": [ + 2128, + 2485 + ], + "op": "JUMP", + "path": "113" + }, + "1393": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1394": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x37D" + }, + "1397": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x57F" + }, + "1400": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "1401": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "1403": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x25F5" + }, + "1406": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "1407": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1408": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0xDB1" + }, + "1411": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "1412": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1413": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "CALLVALUE", + "path": "85" + }, + "1414": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "DUP1", + "path": "85" + }, + "1415": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "ISZERO", + "path": "85" + }, + "1416": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0x58F" + }, + "1419": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPI", + "path": "85" + }, + "1420": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH0", + "path": "85" + }, + "1421": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH0", + "path": "85" + }, + "1422": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "REVERT", + "path": "85" + }, + "1423": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1424": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "POP", + "path": "85" + }, + "1425": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2D8" + }, + "1428": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0xDEA" + }, + "1431": { + "fn": "BaseAccount.getNonce", + "jump": "i", + "offset": [ + 981, + 1102 + ], + "op": "JUMP", + "path": "85" + }, + "1432": { + "offset": [ + 373, + 410 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1433": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "CALLVALUE", + "path": "99" + }, + "1434": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "DUP1", + "path": "99" + }, + "1435": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "ISZERO", + "path": "99" + }, + "1436": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "PUSH2", + "path": "99", + "value": "0x5A3" + }, + "1439": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "JUMPI", + "path": "99" + }, + "1440": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "PUSH0", + "path": "99" + }, + "1441": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "PUSH0", + "path": "99" + }, + "1442": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "REVERT", + "path": "99" + }, + "1443": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1444": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "POP", + "path": "99" + }, + "1445": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2D8" + }, + "1448": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "PUSH32", + "path": "99", + "value": "0x0" + }, + "1481": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "DUP2", + "path": "99" + }, + "1482": { + "fn": "BaseAccount.getNonce", + "offset": [ + 373, + 410 + ], + "op": "JUMP", + "path": "99" + }, + "1483": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1484": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "CALLVALUE", + "path": "99" + }, + "1485": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "DUP1", + "path": "99" + }, + "1486": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "ISZERO", + "path": "99" + }, + "1487": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "PUSH2", + "path": "99", + "value": "0x5D6" + }, + "1490": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "JUMPI", + "path": "99" + }, + "1491": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "PUSH0", + "path": "99" + }, + "1492": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "PUSH0", + "path": "99" + }, + "1493": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "REVERT", + "path": "99" + }, + "1494": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1495": { + "op": "POP" + }, + "1496": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "PUSH2", + "path": "99", + "value": "0x201" + }, + "1499": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "PUSH2", + "path": "99", + "value": "0x5E5" + }, + "1502": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "CALLDATASIZE", + "path": "99" + }, + "1503": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "1505": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "PUSH2", + "path": "99", + "value": "0x24E7" + }, + "1508": { + "fn": "HyperAccountCommitMinter.commit", + "jump": "i", + "offset": [ + 1788, + 2117 + ], + "op": "JUMP", + "path": "99" + }, + "1509": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1510": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "PUSH2", + "path": "99", + "value": "0xE73" + }, + "1513": { + "fn": "HyperAccountCommitMinter.commit", + "jump": "i", + "offset": [ + 1788, + 2117 + ], + "op": "JUMP", + "path": "99" + }, + "1514": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1515": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "CALLVALUE", + "path": "112" + }, + "1516": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "DUP1", + "path": "112" + }, + "1517": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "ISZERO", + "path": "112" + }, + "1518": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x5F5" + }, + "1521": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPI", + "path": "112" + }, + "1522": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH0", + "path": "112" + }, + "1523": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH0", + "path": "112" + }, + "1524": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "REVERT", + "path": "112" + }, + "1525": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1526": { + "op": "POP" + }, + "1527": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x281" + }, + "1530": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x604" + }, + "1533": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "1534": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "1536": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x266A" + }, + "1539": { + "fn": "Receiver.onERC1155Received", + "jump": "i", + "offset": [ + 699, + 925 + ], + "op": "JUMP", + "path": "112" + }, + "1540": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1541": { + "op": "PUSH4", + "value": "0xF23A6E61" + }, + "1546": { + "op": "PUSH1", + "value": "0xE0" + }, + "1548": { + "op": "SHL" + }, + "1549": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "SWAP7", + "path": "112" + }, + "1550": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "SWAP6", + "path": "112" + }, + "1551": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1552": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1553": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1554": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1555": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1556": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1557": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMP", + "path": "112" + }, + "1558": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1559": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "CALLVALUE", + "path": "113" + }, + "1560": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "DUP1", + "path": "113" + }, + "1561": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "ISZERO", + "path": "113" + }, + "1562": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x621" + }, + "1565": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPI", + "path": "113" + }, + "1566": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH0", + "path": "113" + }, + "1567": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH0", + "path": "113" + }, + "1568": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "REVERT", + "path": "113" + }, + "1569": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1570": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "POP", + "path": "113" + }, + "1571": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x62A" + }, + "1574": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0xEFE" + }, + "1577": { + "fn": "TokenBoundMech.token", + "jump": "i", + "offset": [ + 2491, + 2635 + ], + "op": "JUMP", + "path": "113" + }, + "1578": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1579": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "1581": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "DUP1", + "path": "113" + }, + "1582": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "MLOAD", + "path": "113" + }, + "1583": { + "op": "SWAP4" + }, + "1584": { + "op": "DUP5" + }, + "1585": { + "op": "MSTORE" + }, + "1586": { + "op": "PUSH1", + "value": "0x1" + }, + "1588": { + "op": "PUSH1", + "value": "0x1" + }, + "1590": { + "op": "PUSH1", + "value": "0xA0" + }, + "1592": { + "op": "SHL" + }, + "1593": { + "op": "SUB" + }, + "1594": { + "op": "SWAP1" + }, + "1595": { + "op": "SWAP3" + }, + "1596": { + "op": "AND" + }, + "1597": { + "op": "PUSH1", + "value": "0x20" + }, + "1599": { + "op": "DUP5" + }, + "1600": { + "op": "ADD" + }, + "1601": { + "op": "MSTORE" + }, + "1602": { + "op": "SWAP1" + }, + "1603": { + "op": "DUP3" + }, + "1604": { + "op": "ADD" + }, + "1605": { + "op": "MSTORE" + }, + "1606": { + "op": "PUSH1", + "value": "0x60" + }, + "1608": { + "op": "ADD" + }, + "1609": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x22E" + }, + "1612": { + "op": "JUMP" + }, + "1613": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1614": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2426, + 2430 + ], + "op": "PUSH0", + "path": "99" + }, + "1615": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2453, + 2489 + ], + "op": "PUSH2", + "path": "99", + "statement": 2, + "value": "0x657" + }, + "1618": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2477, + 2488 + ], + "op": "DUP3", + "path": "99" + }, + "1619": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2453, + 2476 + ], + "op": "PUSH2", + "path": "99", + "value": "0xF14" + }, + "1622": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "jump": "i", + "offset": [ + 2453, + 2489 + ], + "op": "JUMP", + "path": "99" + }, + "1623": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2453, + 2489 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1624": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2453, + 2550 + ], + "op": "DUP1", + "path": "99" + }, + "1625": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2453, + 2550 + ], + "op": "PUSH2", + "path": "99", + "value": "0x672" + }, + "1628": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2453, + 2550 + ], + "op": "JUMPI", + "path": "99" + }, + "1629": { + "op": "POP" + }, + "1630": { + "op": "PUSH1", + "value": "0x1" + }, + "1632": { + "op": "PUSH1", + "value": "0x1" + }, + "1634": { + "op": "PUSH1", + "value": "0xE0" + }, + "1636": { + "op": "SHL" + }, + "1637": { + "op": "SUB" + }, + "1638": { + "op": "NOT" + }, + "1639": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2493, + 2550 + ], + "op": "DUP3", + "path": "99" + }, + "1640": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2493, + 2550 + ], + "op": "AND", + "path": "99" + }, + "1641": { + "op": "PUSH4", + "value": "0x449E4A13" + }, + "1646": { + "op": "PUSH1", + "value": "0xE0" + }, + "1648": { + "op": "SHL" + }, + "1649": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2493, + 2550 + ], + "op": "EQ", + "path": "99" + }, + "1650": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2453, + 2550 + ], + "op": "JUMPDEST", + "path": "99" + }, + "1651": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2446, + 2550 + ], + "op": "SWAP3", + "path": "99" + }, + "1652": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "offset": [ + 2271, + 2557 + ], + "op": "SWAP2", + "path": "99" + }, + "1653": { + "op": "POP" + }, + "1654": { + "op": "POP" + }, + "1655": { + "fn": "HyperAccountCommitMinter.supportsInterface", + "jump": "o", + "offset": [ + 2271, + 2557 + ], + "op": "JUMP", + "path": "99" + }, + "1656": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1657": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2527, + 2538 + ], + "op": "PUSH0", + "path": "101" + }, + "1658": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2608 + ], + "op": "PUSH2", + "path": "101", + "statement": 3, + "value": "0x687" + }, + "1661": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2567, + 2569 + ], + "op": "DUP8", + "path": "101" + }, + "1662": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2571, + 2575 + ], + "op": "DUP8", + "path": "101" + }, + "1663": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2571, + 2575 + ], + "op": "DUP8", + "path": "101" + }, + "1664": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2577, + 2591 + ], + "op": "DUP8", + "path": "101" + }, + "1665": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2577, + 2591 + ], + "op": "DUP8", + "path": "101" + }, + "1666": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2593, + 2607 + ], + "op": "DUP8", + "path": "101" + }, + "1667": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2566 + ], + "op": "PUSH2", + "path": "101", + "value": "0xF3E" + }, + "1670": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2561, + 2608 + ], + "op": "JUMP", + "path": "101" + }, + "1671": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2608 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1672": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2554, + 2608 + ], + "op": "SWAP8", + "path": "101" + }, + "1673": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "SWAP7", + "path": "101" + }, + "1674": { + "op": "POP" + }, + "1675": { + "op": "POP" + }, + "1676": { + "op": "POP" + }, + "1677": { + "op": "POP" + }, + "1678": { + "op": "POP" + }, + "1679": { + "op": "POP" + }, + "1680": { + "op": "POP" + }, + "1681": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "o", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "1682": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1683": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 740, + 746 + ], + "op": "PUSH0", + "path": "110" + }, + "1684": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 765, + 791 + ], + "op": "PUSH0", + "path": "110" + }, + "1685": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 793, + 813 + ], + "op": "PUSH0", + "path": "110" + }, + "1686": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 824 + ], + "op": "PUSH2", + "path": "110", + "value": "0x69D" + }, + "1689": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 822 + ], + "op": "PUSH2", + "path": "110", + "value": "0xEFE" + }, + "1692": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 817, + 824 + ], + "op": "JUMP", + "path": "110" + }, + "1693": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 824 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1694": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP1", + "path": "110" + }, + "1695": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP4", + "path": "110" + }, + "1696": { + "op": "POP" + }, + "1697": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP2", + "path": "110" + }, + "1698": { + "op": "POP" + }, + "1699": { + "op": "POP" + }, + "1700": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 849 + ], + "op": "CALLER", + "path": "110", + "statement": 4 + }, + "1701": { + "op": "PUSH1", + "value": "0x1" + }, + "1703": { + "op": "PUSH1", + "value": "0x1" + }, + "1705": { + "op": "PUSH1", + "value": "0xA0" + }, + "1707": { + "op": "SHL" + }, + "1708": { + "op": "SUB" + }, + "1709": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "DUP4", + "path": "110" + }, + "1710": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "AND", + "path": "110" + }, + "1711": { + "branch": 83, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "EQ", + "path": "110" + }, + "1712": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "DUP1", + "path": "110" + }, + "1713": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "ISZERO", + "path": "110" + }, + "1714": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "PUSH2", + "path": "110", + "value": "0x6BA" + }, + "1717": { + "branch": 83, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "JUMPI", + "path": "110" + }, + "1718": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "POP", + "path": "110" + }, + "1719": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 894, + 906 + ], + "op": "DUP1", + "path": "110" + }, + "1720": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 875, + 890 + ], + "op": "DUP7", + "path": "110" + }, + "1721": { + "branch": 84, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 875, + 906 + ], + "op": "EQ", + "path": "110" + }, + "1722": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1723": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "ISZERO", + "path": "110" + }, + "1724": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "PUSH2", + "path": "110", + "value": "0x6D8" + }, + "1727": { + "branch": 84, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "JUMPI", + "path": "110" + }, + "1728": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "1730": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MLOAD", + "path": "110" + }, + "1731": { + "op": "PUSH4", + "value": "0xB79E3F3F" + }, + "1736": { + "op": "PUSH1", + "value": "0xE0" + }, + "1738": { + "op": "SHL" + }, + "1739": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "DUP2", + "path": "110" + }, + "1740": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MSTORE", + "path": "110" + }, + "1741": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "1743": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "ADD", + "path": "110" + }, + "1744": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "1746": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MLOAD", + "path": "110" + }, + "1747": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "DUP1", + "path": "110" + }, + "1748": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SWAP2", + "path": "110" + }, + "1749": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SUB", + "path": "110" + }, + "1750": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SWAP1", + "path": "110" + }, + "1751": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "REVERT", + "path": "110" + }, + "1752": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1753": { + "op": "POP" + }, + "1754": { + "op": "PUSH4", + "value": "0xA85BD01" + }, + "1759": { + "op": "PUSH1", + "value": "0xE1" + }, + "1761": { + "op": "SHL" + }, + "1762": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 973, + 1003 + ], + "op": "SWAP8", + "path": "110", + "statement": 5 + }, + "1763": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "SWAP7", + "path": "110" + }, + "1764": { + "op": "POP" + }, + "1765": { + "op": "POP" + }, + "1766": { + "op": "POP" + }, + "1767": { + "op": "POP" + }, + "1768": { + "op": "POP" + }, + "1769": { + "op": "POP" + }, + "1770": { + "op": "POP" + }, + "1771": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "o", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "1772": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1773": { + "fn": "Mech.isValidSignature", + "offset": [ + 2360, + 2377 + ], + "op": "PUSH0", + "path": "111" + }, + "1774": { + "fn": "Mech.isValidSignature", + "offset": [ + 2393, + 2402 + ], + "op": "PUSH0", + "path": "111" + }, + "1775": { + "fn": "Mech.isValidSignature", + "offset": [ + 2412, + 2421 + ], + "op": "PUSH0", + "path": "111" + }, + "1776": { + "fn": "Mech.isValidSignature", + "offset": [ + 2431, + 2438 + ], + "op": "PUSH0", + "path": "111" + }, + "1777": { + "fn": "Mech.isValidSignature", + "offset": [ + 2460, + 2486 + ], + "op": "PUSH2", + "path": "111", + "statement": 6, + "value": "0x70C" + }, + "1780": { + "fn": "Mech.isValidSignature", + "offset": [ + 2476, + 2485 + ], + "op": "DUP6", + "path": "111" + }, + "1781": { + "fn": "Mech._splitSignature", + "offset": [ + 6792, + 6796 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1783": { + "fn": "Mech._splitSignature", + "offset": [ + 6777, + 6797 + ], + "op": "DUP2", + "path": "111" + }, + "1784": { + "fn": "Mech._splitSignature", + "offset": [ + 6777, + 6797 + ], + "op": "ADD", + "path": "111" + }, + "1785": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "MLOAD", + "path": "111" + }, + "1786": { + "fn": "Mech._splitSignature", + "offset": [ + 6837, + 6841 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1788": { + "fn": "Mech._splitSignature", + "offset": [ + 6822, + 6842 + ], + "op": "DUP3", + "path": "111" + }, + "1789": { + "fn": "Mech._splitSignature", + "offset": [ + 6822, + 6842 + ], + "op": "ADD", + "path": "111" + }, + "1790": { + "fn": "Mech._splitSignature", + "offset": [ + 6816, + 6843 + ], + "op": "MLOAD", + "path": "111" + }, + "1791": { + "fn": "Mech._splitSignature", + "offset": [ + 6890, + 6894 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "1793": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "SWAP1", + "path": "111" + }, + "1794": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "SWAP3", + "path": "111" + }, + "1795": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "ADD", + "path": "111" + }, + "1796": { + "fn": "Mech._splitSignature", + "offset": [ + 6869, + 6896 + ], + "op": "MLOAD", + "path": "111" + }, + "1797": { + "fn": "Mech._splitSignature", + "offset": [ + 6472, + 6479 + ], + "op": "PUSH0", + "path": "111" + }, + "1798": { + "fn": "Mech._splitSignature", + "offset": [ + 6861, + 6897 + ], + "op": "BYTE", + "path": "111" + }, + "1799": { + "fn": "Mech._splitSignature", + "offset": [ + 6861, + 6897 + ], + "op": "SWAP3", + "path": "111" + }, + "1800": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "SWAP1", + "path": "111" + }, + "1801": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "SWAP2", + "path": "111" + }, + "1802": { + "fn": "Mech._splitSignature", + "offset": [ + 6816, + 6843 + ], + "op": "SWAP1", + "path": "111" + }, + "1803": { + "fn": "Mech._splitSignature", + "offset": [ + 6400, + 6913 + ], + "op": "JUMP", + "path": "111" + }, + "1804": { + "fn": "Mech.isValidSignature", + "offset": [ + 2460, + 2486 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1805": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP1", + "path": "111" + }, + "1806": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP5", + "path": "111" + }, + "1807": { + "op": "POP" + }, + "1808": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP3", + "path": "111" + }, + "1809": { + "op": "POP" + }, + "1810": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP1", + "path": "111" + }, + "1811": { + "op": "POP" + }, + "1812": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "1814": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "DUP2", + "path": "111" + }, + "1815": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "AND", + "path": "111" + }, + "1816": { + "fn": "Mech.isValidSignature", + "offset": [ + 2506, + 2507 + ], + "op": "PUSH0", + "path": "111" + }, + "1817": { + "branch": 95, + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "SUB", + "path": "111" + }, + "1818": { + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7D7" + }, + "1821": { + "branch": 95, + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "JUMPI", + "path": "111" + }, + "1822": { + "fn": "Mech.isValidSignature", + "offset": [ + 2688, + 2689 + ], + "op": "DUP3", + "path": "111" + }, + "1823": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "DUP6", + "path": "111" + }, + "1824": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "DUP4", + "path": "111" + }, + "1825": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "ADD", + "path": "111" + }, + "1826": { + "fn": "Mech.isValidSignature", + "offset": [ + 3030, + 3034 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1828": { + "fn": "Mech.isValidSignature", + "offset": [ + 3007, + 3035 + ], + "op": "ADD", + "path": "111" + }, + "1829": { + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3227 + ], + "op": "PUSH2", + "path": "111", + "value": "0x72D" + }, + "1832": { + "fn": "Mech.isValidSignature", + "offset": [ + 2688, + 2689 + ], + "op": "DUP3", + "path": "111" + }, + "1833": { + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3210 + ], + "op": "PUSH2", + "path": "111", + "value": "0x9C9" + }, + "1836": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3200, + 3227 + ], + "op": "JUMP", + "path": "111" + }, + "1837": { + "branch": 96, + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3227 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1838": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3227 + ], + "op": "ISZERO", + "path": "111" + }, + "1839": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "DUP1", + "path": "111" + }, + "1840": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "ISZERO", + "path": "111" + }, + "1841": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "PUSH2", + "path": "111", + "value": "0x743" + }, + "1844": { + "branch": 96, + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "JUMPI", + "path": "111" + }, + "1845": { + "op": "POP" + }, + "1846": { + "op": "PUSH1", + "value": "0x1" + }, + "1848": { + "op": "PUSH1", + "value": "0x1" + }, + "1850": { + "op": "PUSH1", + "value": "0xA0" + }, + "1852": { + "op": "SHL" + }, + "1853": { + "op": "SUB" + }, + "1854": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "DUP3", + "path": "111" + }, + "1855": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "AND", + "path": "111" + }, + "1856": { + "fn": "Mech.isValidSignature", + "offset": [ + 3258, + 3262 + ], + "op": "ADDRESS", + "path": "111" + }, + "1857": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "EQ", + "path": "111" + }, + "1858": { + "branch": 97, + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "ISZERO", + "path": "111" + }, + "1859": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1860": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "ISZERO", + "path": "111" + }, + "1861": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "PUSH2", + "path": "111", + "value": "0x75E" + }, + "1864": { + "branch": 97, + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "JUMPI", + "path": "111" + }, + "1865": { + "op": "POP" + }, + "1866": { + "op": "PUSH1", + "value": "0x1" + }, + "1868": { + "op": "PUSH1", + "value": "0x1" + }, + "1870": { + "op": "PUSH1", + "value": "0xE0" + }, + "1872": { + "op": "SHL" + }, + "1873": { + "op": "SUB" + }, + "1874": { + "op": "NOT" + }, + "1875": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "SWAP5", + "path": "111", + "statement": 7 + }, + "1876": { + "op": "POP" + }, + "1877": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "PUSH2", + "path": "111", + "value": "0x672" + }, + "1880": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "SWAP4", + "path": "111" + }, + "1881": { + "op": "POP" + }, + "1882": { + "op": "POP" + }, + "1883": { + "op": "POP" + }, + "1884": { + "op": "POP" + }, + "1885": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "JUMP", + "path": "111" + }, + "1886": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1887": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "statement": 8, + "value": "0x40" + }, + "1889": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1890": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "1895": { + "op": "PUSH1", + "value": "0xE1" + }, + "1897": { + "op": "SHL" + }, + "1898": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1899": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MSTORE", + "path": "111" + }, + "1900": { + "op": "PUSH1", + "value": "0x1" + }, + "1902": { + "op": "PUSH1", + "value": "0x1" + }, + "1904": { + "op": "PUSH1", + "value": "0xA0" + }, + "1906": { + "op": "SHL" + }, + "1907": { + "op": "SUB" + }, + "1908": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "DUP4", + "path": "111" + }, + "1909": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "AND", + "path": "111" + }, + "1910": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "SWAP1", + "path": "111" + }, + "1911": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "PUSH4", + "path": "111", + "value": "0x1626BA7E" + }, + "1916": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "SWAP1", + "path": "111" + }, + "1917": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x78C" + }, + "1920": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1921": { + "fn": "Mech.isValidSignature", + "offset": [ + 3379, + 3383 + ], + "op": "DUP12", + "path": "111" + }, + "1922": { + "fn": "Mech.isValidSignature", + "offset": [ + 3379, + 3383 + ], + "op": "SWAP1", + "path": "111" + }, + "1923": { + "fn": "Mech.isValidSignature", + "offset": [ + 3385, + 3402 + ], + "op": "DUP6", + "path": "111" + }, + "1924": { + "fn": "Mech.isValidSignature", + "offset": [ + 3385, + 3402 + ], + "op": "SWAP1", + "path": "111" + }, + "1925": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "1927": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1928": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x26E0" + }, + "1931": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3336, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "1932": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1933": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1935": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1937": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1938": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1939": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP4", + "path": "111" + }, + "1940": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SUB", + "path": "111" + }, + "1941": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1942": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP7", + "path": "111" + }, + "1943": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "GAS", + "path": "111" + }, + "1944": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "STATICCALL", + "path": "111" + }, + "1945": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ISZERO", + "path": "111" + }, + "1946": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1947": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ISZERO", + "path": "111" + }, + "1948": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7A7" + }, + "1951": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPI", + "path": "111" + }, + "1952": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1953": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1954": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1955": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "1956": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1957": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1958": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "REVERT", + "path": "111" + }, + "1959": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1960": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1961": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1962": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1963": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1964": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1966": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1967": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1968": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "1970": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "NOT", + "path": "111" + }, + "1971": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "1973": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP3", + "path": "111" + }, + "1974": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1975": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "AND", + "path": "111" + }, + "1976": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP3", + "path": "111" + }, + "1977": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1978": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1979": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1981": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MSTORE", + "path": "111" + }, + "1982": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1983": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1984": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1985": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1986": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7CB" + }, + "1989": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP2", + "path": "111" + }, + "1990": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1991": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x26F8" + }, + "1994": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3336, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "1995": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1996": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "SWAP6", + "path": "111" + }, + "1997": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1998": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1999": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "2000": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "2001": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "2002": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "2003": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x672" + }, + "2006": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "2007": { + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2008": { + "fn": "Mech.isValidSignature", + "offset": [ + 3480, + 3520 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7E6" + }, + "2011": { + "fn": "Mech.isValidSignature", + "offset": [ + 3491, + 3519 + ], + "op": "PUSH2", + "path": "111", + "value": "0x3D7" + }, + "2014": { + "fn": "Mech.isValidSignature", + "offset": [ + 3505, + 3509 + ], + "op": "DUP8", + "path": "111" + }, + "2015": { + "fn": "Mech.isValidSignature", + "offset": [ + 3511, + 3512 + ], + "op": "DUP4", + "path": "111" + }, + "2016": { + "fn": "Mech.isValidSignature", + "offset": [ + 3514, + 3515 + ], + "op": "DUP7", + "path": "111" + }, + "2017": { + "fn": "Mech.isValidSignature", + "offset": [ + 3517, + 3518 + ], + "op": "DUP7", + "path": "111" + }, + "2018": { + "fn": "Mech.isValidSignature", + "offset": [ + 3491, + 3504 + ], + "op": "PUSH2", + "path": "111", + "value": "0xF90" + }, + "2021": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3491, + 3519 + ], + "op": "JUMP", + "path": "111" + }, + "2022": { + "branch": 98, + "fn": "Mech.isValidSignature", + "offset": [ + 3480, + 3520 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2023": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "ISZERO", + "path": "111" + }, + "2024": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7FE" + }, + "2027": { + "branch": 98, + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "JUMPI", + "path": "111" + }, + "2028": { + "op": "POP" + }, + "2029": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "2034": { + "op": "PUSH1", + "value": "0xE1" + }, + "2036": { + "op": "SHL" + }, + "2037": { + "fn": "Mech.isValidSignature", + "offset": [ + 3547, + 3565 + ], + "op": "SWAP3", + "path": "111", + "statement": 9 + }, + "2038": { + "op": "POP" + }, + "2039": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "PUSH2", + "path": "111", + "value": "0x672" + }, + "2042": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "SWAP2", + "path": "111" + }, + "2043": { + "op": "POP" + }, + "2044": { + "op": "POP" + }, + "2045": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "JUMP", + "path": "111" + }, + "2046": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2047": { + "op": "POP" + }, + "2048": { + "op": "PUSH1", + "value": "0x1" + }, + "2050": { + "op": "PUSH1", + "value": "0x1" + }, + "2052": { + "op": "PUSH1", + "value": "0xE0" + }, + "2054": { + "op": "SHL" + }, + "2055": { + "op": "SUB" + }, + "2056": { + "op": "NOT" + }, + "2057": { + "fn": "Mech.isValidSignature", + "offset": [ + 3600, + 3617 + ], + "op": "SWAP6", + "path": "111", + "statement": 10 + }, + "2058": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "SWAP5", + "path": "111" + }, + "2059": { + "op": "POP" + }, + "2060": { + "op": "POP" + }, + "2061": { + "op": "POP" + }, + "2062": { + "op": "POP" + }, + "2063": { + "op": "POP" + }, + "2064": { + "fn": "Mech.isValidSignature", + "jump": "o", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "2065": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2066": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2662, + 2684 + ], + "op": "PUSH0", + "path": "85" + }, + "2067": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2720 + ], + "op": "PUSH2", + "path": "85", + "statement": 11, + "value": "0x81A" + }, + "2070": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2718 + ], + "op": "PUSH2", + "path": "85", + "value": "0xFBC" + }, + "2073": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2696, + 2720 + ], + "op": "JUMP", + "path": "85" + }, + "2074": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2720 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2075": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2785 + ], + "op": "PUSH2", + "path": "85", + "statement": 12, + "value": "0x824" + }, + "2078": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2766, + 2772 + ], + "op": "DUP5", + "path": "85" + }, + "2079": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2774, + 2784 + ], + "op": "DUP5", + "path": "85" + }, + "2080": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2765 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1021" + }, + "2083": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2747, + 2785 + ], + "op": "JUMP", + "path": "85" + }, + "2084": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2785 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2085": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2730, + 2785 + ], + "op": "SWAP1", + "path": "85" + }, + "2086": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2730, + 2785 + ], + "op": "POP", + "path": "85" + }, + "2087": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2823 + ], + "op": "PUSH2", + "path": "85", + "statement": 13, + "value": "0x833" + }, + "2090": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2816 + ], + "op": "DUP5", + "path": "85" + }, + "2091": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2093": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "ADD", + "path": "85" + }, + "2094": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "CALLDATALOAD", + "path": "85" + }, + "2095": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2809 + ], + "op": "PUSH2", + "path": "85", + "value": "0x107E" + }, + "2098": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2795, + 2823 + ], + "op": "JUMP", + "path": "85" + }, + "2099": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2823 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2100": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2865 + ], + "op": "PUSH2", + "path": "85", + "statement": 14, + "value": "0x83C" + }, + "2103": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2845, + 2864 + ], + "op": "DUP3", + "path": "85" + }, + "2104": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2844 + ], + "op": "PUSH2", + "path": "85", + "value": "0x10C7" + }, + "2107": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2833, + 2865 + ], + "op": "JUMP", + "path": "85" + }, + "2108": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2865 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2109": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "SWAP4", + "path": "85" + }, + "2110": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "SWAP3", + "path": "85" + }, + "2111": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "2112": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "2113": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "2114": { + "fn": "BaseAccount.validateUserOp", + "jump": "o", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "2115": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2123, + 2265 + ], + "op": "JUMPDEST", + "path": "99" + }, + "2116": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2204, + 2211 + ], + "op": "PUSH0", + "path": "99" + }, + "2117": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2230, + 2258 + ], + "op": "PUSH2", + "path": "99", + "statement": 15, + "value": "0x83C" + }, + "2120": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2245, + 2249 + ], + "op": "DUP4", + "path": "99" + }, + "2121": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2251, + 2257 + ], + "op": "DUP4", + "path": "99" + }, + "2122": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "offset": [ + 2230, + 2244 + ], + "op": "PUSH2", + "path": "99", + "value": "0x110C" + }, + "2125": { + "fn": "HyperAccountCommitMinter.getCommitHash", + "jump": "i", + "offset": [ + 2230, + 2258 + ], + "op": "JUMP", + "path": "99" + }, + "2126": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2127": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1979 + ], + "op": "PUSH2", + "path": "85", + "statement": 16, + "value": "0x856" + }, + "2130": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1977 + ], + "op": "PUSH2", + "path": "85", + "value": "0x113E" + }, + "2133": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1959, + 1979 + ], + "op": "JUMP", + "path": "85" + }, + "2134": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1979 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2135": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2012, + 2017 + ], + "op": "DUP1", + "path": "85" + }, + "2136": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1990, + 2009 + ], + "op": "PUSH0", + "path": "85" + }, + "2137": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2138": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2058, + 2069 + ], + "op": "DUP2", + "path": "85" + }, + "2139": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2054, + 2055 + ], + "op": "DUP2", + "path": "85" + }, + "2140": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2054, + 2069 + ], + "op": "LT", + "path": "85" + }, + "2141": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "ISZERO", + "path": "85" + }, + "2142": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "PUSH2", + "path": "85", + "value": "0x938" + }, + "2145": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPI", + "path": "85" + }, + "2146": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2108 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "2147": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2116 + ], + "op": "DUP5", + "path": "85" + }, + "2148": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2116 + ], + "op": "DUP5", + "path": "85" + }, + "2149": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2117, + 2118 + ], + "op": "DUP4", + "path": "85" + }, + "2150": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "2151": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "2152": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "LT", + "path": "85" + }, + "2153": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x874" + }, + "2156": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPI", + "path": "85" + }, + "2157": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x874" + }, + "2160": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2713" + }, + "2163": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2111, + 2119 + ], + "op": "JUMP", + "path": "85" + }, + "2164": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2165": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "2166": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "POP", + "path": "85" + }, + "2167": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2169": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "MUL", + "path": "85" + }, + "2170": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "2171": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "ADD", + "path": "85" + }, + "2172": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "2173": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x886" + }, + "2176": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP2", + "path": "85" + }, + "2177": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "2178": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2727" + }, + "2181": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2111, + 2119 + ], + "op": "JUMP", + "path": "85" + }, + "2182": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2183": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "2184": { + "op": "POP" + }, + "2185": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2140 + ], + "op": "PUSH0", + "path": "85" + }, + "2186": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH2", + "path": "85", + "value": "0x8E4" + }, + "2189": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH2", + "path": "85", + "value": "0x899" + }, + "2192": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2194": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "DUP5", + "path": "85" + }, + "2195": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "ADD", + "path": "85" + }, + "2196": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2119 + ], + "op": "DUP5", + "path": "85" + }, + "2197": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2436" + }, + "2200": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2153, + 2164 + ], + "op": "JUMP", + "path": "85" + }, + "2201": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2202": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2204": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "DUP5", + "path": "85" + }, + "2205": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "ADD", + "path": "85" + }, + "2206": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "CALLDATALOAD", + "path": "85" + }, + "2207": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH2", + "path": "85", + "value": "0x8AB" + }, + "2210": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2212": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "DUP7", + "path": "85" + }, + "2213": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "ADD", + "path": "85" + }, + "2214": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2170 + ], + "op": "DUP7", + "path": "85" + }, + "2215": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2745" + }, + "2218": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2178, + 2187 + ], + "op": "JUMP", + "path": "85" + }, + "2219": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2220": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2221": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2222": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "2224": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2225": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2227": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2228": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "2229": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DIV", + "path": "85" + }, + "2230": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MUL", + "path": "85" + }, + "2231": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2233": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2234": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2236": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MLOAD", + "path": "85" + }, + "2237": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "2238": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "2239": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2240": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2242": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "2243": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2244": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP4", + "path": "85" + }, + "2245": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP3", + "path": "85" + }, + "2246": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "2247": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "2248": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "2249": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "2250": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "2251": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2253": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2254": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP4", + "path": "85" + }, + "2255": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP4", + "path": "85" + }, + "2256": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2257": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP3", + "path": "85" + }, + "2258": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP5", + "path": "85" + }, + "2259": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "CALLDATACOPY", + "path": "85" + }, + "2260": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH0", + "path": "85" + }, + "2261": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP3", + "path": "85" + }, + "2262": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2263": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "2264": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "2265": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "2266": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "2267": { + "op": "POP" + }, + "2268": { + "op": "POP" + }, + "2269": { + "op": "POP" + }, + "2270": { + "op": "POP" + }, + "2271": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2189, + 2198 + ], + "op": "GAS", + "path": "85" + }, + "2272": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2152 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1146" + }, + "2275": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2143, + 2199 + ], + "op": "JUMP", + "path": "85" + }, + "2276": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2277": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "2278": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2199 + ], + "op": "POP", + "path": "85" + }, + "2279": { + "branch": 76, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2218, + 2220 + ], + "op": "DUP1", + "path": "85" + }, + "2280": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2213, + 2436 + ], + "op": "PUSH2", + "path": "85", + "value": "0x92E" + }, + "2283": { + "branch": 76, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2213, + 2436 + ], + "op": "JUMPI", + "path": "85" + }, + "2284": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2244, + 2255 + ], + "op": "DUP4", + "path": "85" + }, + "2285": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2259, + 2260 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1" + }, + "2287": { + "branch": 77, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2244, + 2260 + ], + "op": "SUB", + "path": "85" + }, + "2288": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "PUSH2", + "path": "85", + "value": "0x900" + }, + "2291": { + "branch": 77, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPI", + "path": "85" + }, + "2292": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2311 + ], + "op": "PUSH2", + "path": "85", + "statement": 17, + "value": "0x8FB" + }, + "2295": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2309 + ], + "op": "PUSH2", + "path": "85", + "value": "0x115C" + }, + "2298": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2284, + 2311 + ], + "op": "JUMP", + "path": "85" + }, + "2299": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2311 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2300": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "PUSH2", + "path": "85", + "value": "0x92E" + }, + "2303": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMP", + "path": "85" + }, + "2304": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2305": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2378, + 2379 + ], + "op": "DUP3", + "path": "85" + }, + "2306": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2402 + ], + "op": "PUSH2", + "path": "85", + "value": "0x90A" + }, + "2309": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2400, + 2401 + ], + "op": "PUSH0", + "path": "85" + }, + "2310": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2399 + ], + "op": "PUSH2", + "path": "85", + "value": "0x116D" + }, + "2313": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2381, + 2402 + ], + "op": "JUMP", + "path": "85" + }, + "2314": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2402 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2315": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2317": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MLOAD", + "path": "85" + }, + "2318": { + "op": "PUSH4", + "value": "0x5A154675" + }, + "2323": { + "op": "PUSH1", + "value": "0xE0" + }, + "2325": { + "op": "SHL" + }, + "2326": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "DUP2", + "path": "85" + }, + "2327": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MSTORE", + "path": "85" + }, + "2328": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "2330": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "ADD", + "path": "85" + }, + "2331": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH2", + "path": "85", + "value": "0x925" + }, + "2334": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP3", + "path": "85" + }, + "2335": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP2", + "path": "85" + }, + "2336": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP1", + "path": "85" + }, + "2337": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH2", + "path": "85", + "value": "0x26E0" + }, + "2340": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2365, + 2403 + ], + "op": "JUMP", + "path": "85" + }, + "2341": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2342": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2344": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MLOAD", + "path": "85" + }, + "2345": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "DUP1", + "path": "85" + }, + "2346": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP2", + "path": "85" + }, + "2347": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SUB", + "path": "85" + }, + "2348": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP1", + "path": "85" + }, + "2349": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "REVERT", + "path": "85" + }, + "2350": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2351": { + "op": "POP" + }, + "2352": { + "op": "POP" + }, + "2353": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2071, + 2074 + ], + "op": "PUSH1", + "path": "85", + "statement": 18, + "value": "0x1" + }, + "2355": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2071, + 2074 + ], + "op": "ADD", + "path": "85" + }, + "2356": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "PUSH2", + "path": "85", + "value": "0x859" + }, + "2359": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMP", + "path": "85" + }, + "2360": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2361": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "POP", + "path": "85" + }, + "2362": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1949, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2363": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2364": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2365": { + "fn": "BaseAccount.executeBatch", + "jump": "o", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "2366": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2367": { + "offset": [ + 2655, + 2668 + ], + "op": "PUSH2", + "path": "68", + "value": "0x946" + }, + "2370": { + "offset": [ + 2655, + 2666 + ], + "op": "PUSH2", + "path": "68", + "value": "0x119E" + }, + "2373": { + "jump": "i", + "offset": [ + 2655, + 2668 + ], + "op": "JUMP", + "path": "68" + }, + "2374": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 2655, + 2668 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2375": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4312 + ], + "op": "PUSH2", + "path": "68", + "statement": 19, + "value": "0x94F" + }, + "2378": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4294, + 4311 + ], + "op": "DUP3", + "path": "68" + }, + "2379": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4293 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1242" + }, + "2382": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4276, + 4312 + ], + "op": "JUMP", + "path": "68" + }, + "2383": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4312 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2384": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4368 + ], + "op": "PUSH2", + "path": "68", + "statement": 20, + "value": "0x959" + }, + "2387": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4344, + 4361 + ], + "op": "DUP3", + "path": "68" + }, + "2388": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4363, + 4367 + ], + "op": "DUP3", + "path": "68" + }, + "2389": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4343 + ], + "op": "PUSH2", + "path": "68", + "value": "0x128A" + }, + "2392": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4322, + 4368 + ], + "op": "JUMP", + "path": "68" + }, + "2393": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4368 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2394": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "POP", + "path": "68" + }, + "2395": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "POP", + "path": "68" + }, + "2396": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "o", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "2397": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2398": { + "fn": "Mech.execute", + "offset": [ + 5911, + 5934 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "2400": { + "fn": "Mech.execute", + "offset": [ + 5950, + 5962 + ], + "op": "PUSH0", + "path": "111" + }, + "2401": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6040 + ], + "op": "PUSH2", + "path": "111", + "statement": 21, + "value": "0x96E" + }, + "2404": { + "fn": "Mech.execute", + "offset": [ + 6002, + 6004 + ], + "op": "DUP8", + "path": "111" + }, + "2405": { + "fn": "Mech.execute", + "offset": [ + 6006, + 6011 + ], + "op": "DUP8", + "path": "111" + }, + "2406": { + "fn": "Mech.execute", + "offset": [ + 6013, + 6017 + ], + "op": "DUP8", + "path": "111" + }, + "2407": { + "fn": "Mech.execute", + "offset": [ + 6013, + 6017 + ], + "op": "DUP8", + "path": "111" + }, + "2408": { + "fn": "Mech.execute", + "offset": [ + 6019, + 6028 + ], + "op": "DUP8", + "path": "111" + }, + "2409": { + "fn": "Mech.execute", + "offset": [ + 6030, + 6039 + ], + "op": "GAS", + "path": "111" + }, + "2410": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6001 + ], + "op": "PUSH2", + "path": "111", + "value": "0x134B" + }, + "2413": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5996, + 6040 + ], + "op": "JUMP", + "path": "111" + }, + "2414": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6040 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2415": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "SWAP3", + "path": "111" + }, + "2416": { + "op": "POP" + }, + "2417": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "SWAP1", + "path": "111" + }, + "2418": { + "op": "POP" + }, + "2419": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "DUP1", + "path": "111" + }, + "2420": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "PUSH2", + "path": "111", + "statement": 22, + "value": "0x97F" + }, + "2423": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "JUMPI", + "path": "111" + }, + "2424": { + "fn": "Mech.execute", + "offset": [ + 6218, + 6228 + ], + "op": "DUP2", + "path": "111" + }, + "2425": { + "fn": "Mech.execute", + "offset": [ + 6212, + 6229 + ], + "op": "MLOAD", + "path": "111" + }, + "2426": { + "fn": "Mech.execute", + "offset": [ + 6205, + 6209 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "2428": { + "fn": "Mech.execute", + "offset": [ + 6193, + 6203 + ], + "op": "DUP4", + "path": "111" + }, + "2429": { + "fn": "Mech.execute", + "offset": [ + 6189, + 6210 + ], + "op": "ADD", + "path": "111" + }, + "2430": { + "fn": "Mech.execute", + "offset": [ + 6182, + 6230 + ], + "op": "REVERT", + "path": "111" + }, + "2431": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2432": { + "fn": "Mech.execute", + "offset": [ + 5940, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2433": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP6", + "path": "111" + }, + "2434": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP5", + "path": "111" + }, + "2435": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2436": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2437": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2438": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2439": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2440": { + "fn": "Mech.execute", + "jump": "o", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "2441": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2442": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3077, + 3094 + ], + "op": "PUSH0", + "path": "113" + }, + "2443": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3131 + ], + "op": "PUSH2", + "path": "113", + "statement": 23, + "value": "0x993" + }, + "2446": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3124, + 3130 + ], + "op": "DUP5", + "path": "113" + }, + "2447": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3123 + ], + "op": "PUSH2", + "path": "113", + "value": "0x9C9" + }, + "2450": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 3113, + 3131 + ], + "op": "JUMP", + "path": "113" + }, + "2451": { + "branch": 104, + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3131 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2452": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "PUSH2", + "path": "113", + "value": "0x99D" + }, + "2455": { + "branch": 104, + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPI", + "path": "113" + }, + "2456": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3182, + 3183 + ], + "op": "PUSH0", + "path": "113" + }, + "2457": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "PUSH2", + "path": "113", + "value": "0x9A6" + }, + "2460": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMP", + "path": "113" + }, + "2461": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2462": { + "op": "PUSH4", + "value": "0x291F193" + }, + "2467": { + "op": "PUSH1", + "value": "0xE5" + }, + "2469": { + "op": "SHL" + }, + "2470": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2471": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3106, + 3184 + ], + "op": "SWAP5", + "path": "113" + }, + "2472": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "SWAP4", + "path": "113" + }, + "2473": { + "op": "POP" + }, + "2474": { + "op": "POP" + }, + "2475": { + "op": "POP" + }, + "2476": { + "op": "POP" + }, + "2477": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "o", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "2478": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2479": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3777, + 3784 + ], + "op": "PUSH0", + "path": "68" + }, + "2480": { + "offset": [ + 2926, + 2946 + ], + "op": "PUSH2", + "path": "68", + "value": "0x9B7" + }, + "2483": { + "offset": [ + 2926, + 2944 + ], + "op": "PUSH2", + "path": "68", + "value": "0x13A2" + }, + "2486": { + "jump": "i", + "offset": [ + 2926, + 2946 + ], + "op": "JUMP", + "path": "68" + }, + "2487": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 2926, + 2946 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2488": { + "op": "POP" + }, + "2489": { + "op": "PUSH0" + }, + "2490": { + "op": "MLOAD" + }, + "2491": { + "op": "PUSH1", + "value": "0x20" + }, + "2493": { + "op": "PUSH2", + "value": "0x2A77" + }, + "2496": { + "op": "PUSH0" + }, + "2497": { + "op": "CODECOPY" + }, + "2498": { + "op": "PUSH0" + }, + "2499": { + "op": "MLOAD" + }, + "2500": { + "op": "SWAP1" + }, + "2501": { + "op": "PUSH0" + }, + "2502": { + "op": "MSTORE" + }, + "2503": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "SWAP1", + "path": "68" + }, + "2504": { + "fn": "UUPSUpgradeable.proxiableUUID", + "jump": "o", + "offset": [ + 3708, + 3842 + ], + "op": "JUMP", + "path": "68" + }, + "2505": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2506": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 420, + 424 + ], + "op": "PUSH0", + "path": "110" + }, + "2507": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 439, + 460 + ], + "op": "PUSH0", + "path": "110" + }, + "2508": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 462, + 477 + ], + "op": "PUSH0", + "path": "110" + }, + "2509": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 488 + ], + "op": "PUSH2", + "path": "110", + "value": "0x9D4" + }, + "2512": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 486 + ], + "op": "PUSH2", + "path": "110", + "value": "0xEFE" + }, + "2515": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 481, + 488 + ], + "op": "JUMP", + "path": "110" + }, + "2516": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 488 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2517": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "statement": 24, + "value": "0x40" + }, + "2519": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2520": { + "op": "PUSH4", + "value": "0x31A9108F" + }, + "2525": { + "op": "PUSH1", + "value": "0xE1" + }, + "2527": { + "op": "SHL" + }, + "2528": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2529": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MSTORE", + "path": "110" + }, + "2530": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "2532": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2533": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2534": { + "op": "DUP3" + }, + "2535": { + "op": "SWAP1" + }, + "2536": { + "op": "MSTORE" + }, + "2537": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP2", + "path": "110" + }, + "2538": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP5", + "path": "110" + }, + "2539": { + "op": "POP" + }, + "2540": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP3", + "path": "110" + }, + "2541": { + "op": "POP" + }, + "2542": { + "op": "PUSH1", + "value": "0x1" + }, + "2544": { + "op": "PUSH1", + "value": "0x1" + }, + "2546": { + "op": "PUSH1", + "value": "0xA0" + }, + "2548": { + "op": "SHL" + }, + "2549": { + "op": "SUB" + }, + "2550": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "DUP1", + "path": "110" + }, + "2551": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "DUP8", + "path": "110" + }, + "2552": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "AND", + "path": "110" + }, + "2553": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "SWAP3", + "path": "110" + }, + "2554": { + "op": "POP" + }, + "2555": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "DUP5", + "path": "110" + }, + "2556": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "AND", + "path": "110" + }, + "2557": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "SWAP1", + "path": "110" + }, + "2558": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "PUSH4", + "path": "110", + "value": "0x6352211E" + }, + "2563": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "SWAP1", + "path": "110" + }, + "2564": { + "op": "PUSH1", + "value": "0x24" + }, + "2566": { + "op": "ADD" + }, + "2567": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x20" + }, + "2569": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2571": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2572": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2573": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP4", + "path": "110" + }, + "2574": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SUB", + "path": "110" + }, + "2575": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2576": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP7", + "path": "110" + }, + "2577": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "GAS", + "path": "110" + }, + "2578": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "STATICCALL", + "path": "110" + }, + "2579": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ISZERO", + "path": "110" + }, + "2580": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2581": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ISZERO", + "path": "110" + }, + "2582": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0xA21" + }, + "2585": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPI", + "path": "110" + }, + "2586": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2587": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2588": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2589": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATACOPY", + "path": "110" + }, + "2590": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2591": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2592": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "REVERT", + "path": "110" + }, + "2593": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2594": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2595": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2596": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2597": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2598": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2600": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2601": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2602": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x1F" + }, + "2604": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "NOT", + "path": "110" + }, + "2605": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x1F" + }, + "2607": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP3", + "path": "110" + }, + "2608": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2609": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "AND", + "path": "110" + }, + "2610": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP3", + "path": "110" + }, + "2611": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2612": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2613": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2615": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MSTORE", + "path": "110" + }, + "2616": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2617": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2618": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2619": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP1", + "path": "110" + }, + "2620": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0xA45" + }, + "2623": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP2", + "path": "110" + }, + "2624": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP1", + "path": "110" + }, + "2625": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0x2787" + }, + "2628": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 505, + 544 + ], + "op": "JUMP", + "path": "110" + }, + "2629": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2630": { + "op": "PUSH1", + "value": "0x1" + }, + "2632": { + "op": "PUSH1", + "value": "0x1" + }, + "2634": { + "op": "PUSH1", + "value": "0xA0" + }, + "2636": { + "op": "SHL" + }, + "2637": { + "op": "SUB" + }, + "2638": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "AND", + "path": "110" + }, + "2639": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "EQ", + "path": "110" + }, + "2640": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "DUP1", + "path": "110" + }, + "2641": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2642": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "PUSH2", + "path": "110", + "value": "0x9A6" + }, + "2645": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "JUMPI", + "path": "110" + }, + "2646": { + "op": "POP" + }, + "2647": { + "op": "POP" + }, + "2648": { + "op": "POP" + }, + "2649": { + "op": "POP" + }, + "2650": { + "op": "PUSH1", + "value": "0x1" + }, + "2652": { + "op": "PUSH1", + "value": "0x1" + }, + "2654": { + "op": "PUSH1", + "value": "0xA0" + }, + "2656": { + "op": "SHL" + }, + "2657": { + "op": "SUB" + }, + "2658": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "AND", + "path": "110" + }, + "2659": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2660": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2661": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "SWAP1", + "path": "110" + }, + "2662": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "o", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "2663": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 375, + 527 + ], + "op": "JUMPDEST", + "path": "97" + }, + "2664": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 8870, + 8891 + ], + "op": "PUSH32", + "path": "67", + "value": "0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + "2697": { + "offset": [ + 4302, + 4317 + ], + "op": "DUP1", + "path": "67" + }, + "2698": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "SLOAD", + "path": "67" + }, + "2699": { + "op": "PUSH1", + "value": "0x1" + }, + "2701": { + "op": "PUSH1", + "value": "0x40" + }, + "2703": { + "op": "SHL" + }, + "2704": { + "offset": [ + 4302, + 4317 + ], + "op": "DUP2", + "path": "67" + }, + "2705": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "DIV", + "path": "67" + }, + "2706": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "PUSH1", + "path": "67", + "value": "0xFF" + }, + "2708": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "AND", + "path": "67" + }, + "2709": { + "offset": [ + 4301, + 4317 + ], + "op": "ISZERO", + "path": "67" + }, + "2710": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4301, + 4317 + ], + "op": "SWAP1", + "path": "67" + }, + "2711": { + "op": "PUSH1", + "value": "0x1" + }, + "2713": { + "op": "PUSH1", + "value": "0x1" + }, + "2715": { + "op": "PUSH1", + "value": "0x40" + }, + "2717": { + "op": "SHL" + }, + "2718": { + "op": "SUB" + }, + "2719": { + "offset": [ + 4348, + 4362 + ], + "op": "AND", + "path": "67" + }, + "2720": { + "offset": [ + 4158, + 4188 + ], + "op": "PUSH0", + "path": "67" + }, + "2721": { + "offset": [ + 4726, + 4742 + ], + "op": "DUP2", + "path": "67" + }, + "2722": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4742 + ], + "op": "ISZERO", + "path": "67" + }, + "2723": { + "offset": [ + 4726, + 4760 + ], + "op": "DUP1", + "path": "67" + }, + "2724": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "ISZERO", + "path": "67" + }, + "2725": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "PUSH2", + "path": "67", + "value": "0xAAB" + }, + "2728": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "JUMPI", + "path": "67" + }, + "2729": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "POP", + "path": "67" + }, + "2730": { + "offset": [ + 4746, + 4760 + ], + "op": "DUP3", + "path": "67" + }, + "2731": { + "offset": [ + 4726, + 4760 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2732": { + "offset": [ + 4706, + 4760 + ], + "op": "SWAP1", + "path": "67" + }, + "2733": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4706, + 4760 + ], + "op": "POP", + "path": "67" + }, + "2734": { + "offset": [ + 4770, + 4787 + ], + "op": "PUSH0", + "path": "67" + }, + "2735": { + "offset": [ + 4790, + 4801 + ], + "op": "DUP3", + "path": "67" + }, + "2736": { + "op": "PUSH1", + "value": "0x1" + }, + "2738": { + "op": "PUSH1", + "value": "0x1" + }, + "2740": { + "op": "PUSH1", + "value": "0x40" + }, + "2742": { + "op": "SHL" + }, + "2743": { + "op": "SUB" + }, + "2744": { + "offset": [ + 4790, + 4806 + ], + "op": "AND", + "path": "67" + }, + "2745": { + "offset": [ + 4805, + 4806 + ], + "op": "PUSH1", + "path": "67", + "value": "0x1" + }, + "2747": { + "offset": [ + 4790, + 4806 + ], + "op": "EQ", + "path": "67" + }, + "2748": { + "offset": [ + 4790, + 4840 + ], + "op": "DUP1", + "path": "67" + }, + "2749": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "ISZERO", + "path": "67" + }, + "2750": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "PUSH2", + "path": "67", + "value": "0xAC6" + }, + "2753": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "JUMPI", + "path": "67" + }, + "2754": { + "op": "POP" + }, + "2755": { + "offset": [ + 4818, + 4822 + ], + "op": "ADDRESS", + "path": "67" + }, + "2756": { + "offset": [ + 4810, + 4835 + ], + "op": "EXTCODESIZE", + "path": "67" + }, + "2757": { + "offset": [ + 4810, + 4840 + ], + "op": "ISZERO", + "path": "67" + }, + "2758": { + "offset": [ + 4790, + 4840 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2759": { + "offset": [ + 4770, + 4840 + ], + "op": "SWAP1", + "path": "67" + }, + "2760": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4770, + 4840 + ], + "op": "POP", + "path": "67" + }, + "2761": { + "offset": [ + 4856, + 4868 + ], + "op": "DUP2", + "path": "67" + }, + "2762": { + "offset": [ + 4855, + 4868 + ], + "op": "ISZERO", + "path": "67" + }, + "2763": { + "offset": [ + 4855, + 4885 + ], + "op": "DUP1", + "path": "67" + }, + "2764": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "ISZERO", + "path": "67" + }, + "2765": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "PUSH2", + "path": "67", + "value": "0xAD4" + }, + "2768": { + "offset": [ + 4855, + 4885 + ], + "op": "JUMPI", + "path": "67" + }, + "2769": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "POP", + "path": "67" + }, + "2770": { + "offset": [ + 4873, + 4885 + ], + "op": "DUP1", + "path": "67" + }, + "2771": { + "offset": [ + 4872, + 4885 + ], + "op": "ISZERO", + "path": "67" + }, + "2772": { + "offset": [ + 4855, + 4885 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2773": { + "offset": [ + 4851, + 4942 + ], + "op": "ISZERO", + "path": "67" + }, + "2774": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4851, + 4942 + ], + "op": "PUSH2", + "path": "67", + "value": "0xAF2" + }, + "2777": { + "offset": [ + 4851, + 4942 + ], + "op": "JUMPI", + "path": "67" + }, + "2778": { + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2780": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MLOAD", + "path": "67" + }, + "2781": { + "op": "PUSH4", + "value": "0xF92EE8A9" + }, + "2786": { + "op": "PUSH1", + "value": "0xE0" + }, + "2788": { + "op": "SHL" + }, + "2789": { + "offset": [ + 4908, + 4931 + ], + "op": "DUP2", + "path": "67" + }, + "2790": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MSTORE", + "path": "67" + }, + "2791": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x4" + }, + "2793": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "ADD", + "path": "67" + }, + "2794": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2796": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MLOAD", + "path": "67" + }, + "2797": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "DUP1", + "path": "67" + }, + "2798": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SWAP2", + "path": "67" + }, + "2799": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SUB", + "path": "67" + }, + "2800": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SWAP1", + "path": "67" + }, + "2801": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "REVERT", + "path": "67" + }, + "2802": { + "offset": [ + 4851, + 4942 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2803": { + "offset": [ + 4951, + 4969 + ], + "op": "DUP5", + "path": "67" + }, + "2804": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "SLOAD", + "path": "67" + }, + "2805": { + "op": "PUSH8", + "value": "0xFFFFFFFFFFFFFFFF" + }, + "2814": { + "op": "NOT" + }, + "2815": { + "offset": [ + 4951, + 4969 + ], + "op": "AND", + "path": "67" + }, + "2816": { + "offset": [ + 4968, + 4969 + ], + "op": "PUSH1", + "path": "67", + "value": "0x1" + }, + "2818": { + "offset": [ + 4951, + 4969 + ], + "op": "OR", + "path": "67" + }, + "2819": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "DUP6", + "path": "67" + }, + "2820": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "SSTORE", + "path": "67" + }, + "2821": { + "offset": [ + 4979, + 5046 + ], + "op": "DUP4", + "path": "67" + }, + "2822": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "ISZERO", + "path": "67" + }, + "2823": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "PUSH2", + "path": "67", + "value": "0xB1C" + }, + "2826": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "JUMPI", + "path": "67" + }, + "2827": { + "offset": [ + 5013, + 5035 + ], + "op": "DUP5", + "path": "67" + }, + "2828": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "SLOAD", + "path": "67" + }, + "2829": { + "op": "PUSH1", + "value": "0xFF" + }, + "2831": { + "op": "PUSH1", + "value": "0x40" + }, + "2833": { + "op": "SHL" + }, + "2834": { + "op": "NOT" + }, + "2835": { + "offset": [ + 5013, + 5035 + ], + "op": "AND", + "path": "67" + }, + "2836": { + "op": "PUSH1", + "value": "0x1" + }, + "2838": { + "op": "PUSH1", + "value": "0x40" + }, + "2840": { + "op": "SHL" + }, + "2841": { + "offset": [ + 5013, + 5035 + ], + "op": "OR", + "path": "67" + }, + "2842": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "DUP6", + "path": "67" + }, + "2843": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "SSTORE", + "path": "67" + }, + "2844": { + "offset": [ + 4979, + 5046 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2845": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 435, + 459 + ], + "op": "PUSH2", + "path": "97", + "statement": 25, + "value": "0xB24" + }, + "2848": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 435, + 457 + ], + "op": "PUSH2", + "path": "97", + "value": "0x13EB" + }, + "2851": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "jump": "i", + "offset": [ + 435, + 459 + ], + "op": "JUMP", + "path": "97" + }, + "2852": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 435, + 459 + ], + "op": "JUMPDEST", + "path": "97" + }, + "2853": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH2", + "path": "97", + "statement": 26, + "value": "0xB7C" + }, + "2856": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x40" + }, + "2858": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "MLOAD", + "path": "97" + }, + "2859": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "DUP1", + "path": "97" + }, + "2860": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x40" + }, + "2862": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "ADD", + "path": "97" + }, + "2863": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x40" + }, + "2865": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "MSTORE", + "path": "97" + }, + "2866": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "DUP1", + "path": "97" + }, + "2867": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x1D" + }, + "2869": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "DUP2", + "path": "97" + }, + "2870": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "MSTORE", + "path": "97" + }, + "2871": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x20" + }, + "2873": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "ADD", + "path": "97" + }, + "2874": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH32", + "path": "97", + "value": "0x48797065724163636F756E743943686172436F6D6D69744D696E746572000000" + }, + "2907": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "DUP2", + "path": "97" + }, + "2908": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "MSTORE", + "path": "97" + }, + "2909": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "POP", + "path": "97" + }, + "2910": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x40" + }, + "2912": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "MLOAD", + "path": "97" + }, + "2913": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "DUP1", + "path": "97" + }, + "2914": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x40" + }, + "2916": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "ADD", + "path": "97" + }, + "2917": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x40" + }, + "2919": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "MSTORE", + "path": "97" + }, + "2920": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "DUP1", + "path": "97" + }, + "2921": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x1" + }, + "2923": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "DUP2", + "path": "97" + }, + "2924": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "MSTORE", + "path": "97" + }, + "2925": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "PUSH1", + "path": "97", + "value": "0x20" + }, + "2927": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "ADD", + "path": "97" + }, + "2928": { + "op": "PUSH1", + "value": "0x31" + }, + "2930": { + "op": "PUSH1", + "value": "0xF8" + }, + "2932": { + "op": "SHL" + }, + "2933": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "DUP2", + "path": "97" + }, + "2934": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "MSTORE", + "path": "97" + }, + "2935": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "POP", + "path": "97" + }, + "2936": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 482 + ], + "op": "PUSH2", + "path": "97", + "value": "0x13F3" + }, + "2939": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "jump": "i", + "offset": [ + 469, + 520 + ], + "op": "JUMP", + "path": "97" + }, + "2940": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 469, + 520 + ], + "op": "JUMPDEST", + "path": "97" + }, + "2941": { + "offset": [ + 5070, + 5084 + ], + "op": "DUP4", + "path": "67" + }, + "2942": { + "offset": [ + 5066, + 5167 + ], + "op": "ISZERO", + "path": "67" + }, + "2943": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5066, + 5167 + ], + "op": "PUSH2", + "path": "67", + "value": "0xBC2" + }, + "2946": { + "offset": [ + 5066, + 5167 + ], + "op": "JUMPI", + "path": "67" + }, + "2947": { + "offset": [ + 5100, + 5123 + ], + "op": "DUP5", + "path": "67" + }, + "2948": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "SLOAD", + "path": "67" + }, + "2949": { + "op": "PUSH1", + "value": "0xFF" + }, + "2951": { + "op": "PUSH1", + "value": "0x40" + }, + "2953": { + "op": "SHL" + }, + "2954": { + "op": "NOT" + }, + "2955": { + "offset": [ + 5100, + 5123 + ], + "op": "AND", + "path": "67" + }, + "2956": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "DUP6", + "path": "67" + }, + "2957": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "SSTORE", + "path": "67" + }, + "2958": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2960": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "MLOAD", + "path": "67" + }, + "2961": { + "op": "PUSH1", + "value": "0x1" + }, + "2963": { + "op": "DUP2" + }, + "2964": { + "op": "MSTORE" + }, + "2965": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH32", + "path": "67", + "value": "0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2" + }, + "2998": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP1", + "path": "67" + }, + "2999": { + "op": "PUSH1", + "value": "0x20" + }, + "3001": { + "op": "ADD" + }, + "3002": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "3004": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "MLOAD", + "path": "67" + }, + "3005": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "DUP1", + "path": "67" + }, + "3006": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP2", + "path": "67" + }, + "3007": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SUB", + "path": "67" + }, + "3008": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP1", + "path": "67" + }, + "3009": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "LOG1", + "path": "67" + }, + "3010": { + "offset": [ + 5066, + 5167 + ], + "op": "JUMPDEST", + "path": "67" + }, + "3011": { + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "3012": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "3013": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "3014": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "3015": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "3016": { + "fn": "HyperAccount9CharCommitMinter.initialize", + "jump": "o", + "offset": [ + 375, + 527 + ], + "op": "JUMP", + "path": "97" + }, + "3017": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3018": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "PUSH0", + "path": "75" + }, + "3019": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "3021": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "DUP1", + "path": "75" + }, + "3022": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP3", + "path": "75" + }, + "3023": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP1", + "path": "75" + }, + "3024": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP1", + "path": "75" + }, + "3025": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "DUP4", + "path": "75" + }, + "3026": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP2", + "path": "75" + }, + "3027": { + "op": "PUSH0" + }, + "3028": { + "op": "MLOAD" + }, + "3029": { + "op": "PUSH1", + "value": "0x20" + }, + "3031": { + "op": "PUSH2", + "value": "0x2A57" + }, + "3034": { + "op": "PUSH0" + }, + "3035": { + "op": "CODECOPY" + }, + "3036": { + "op": "PUSH0" + }, + "3037": { + "op": "MLOAD" + }, + "3038": { + "op": "SWAP1" + }, + "3039": { + "op": "PUSH0" + }, + "3040": { + "op": "MSTORE" + }, + "3041": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5790 + ], + "op": "DUP1", + "path": "75", + "statement": 27 + }, + "3042": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5790 + ], + "op": "SLOAD", + "path": "75" + }, + "3043": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5511, + 5556 + ], + "op": "SWAP1", + "path": "75" + }, + "3044": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5511, + 5556 + ], + "op": "SWAP2", + "path": "75" + }, + "3045": { + "op": "POP" + }, + "3046": { + "branch": 81, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5795 + ], + "op": "ISZERO", + "path": "75" + }, + "3047": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "DUP1", + "path": "75" + }, + "3048": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "ISZERO", + "path": "75" + }, + "3049": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "PUSH2", + "path": "75", + "value": "0xBF4" + }, + "3052": { + "branch": 81, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "JUMPI", + "path": "75" + }, + "3053": { + "op": "POP" + }, + "3054": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1" + }, + "3056": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "DUP2", + "path": "75" + }, + "3057": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "ADD", + "path": "75" + }, + "3058": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "SLOAD", + "path": "75" + }, + "3059": { + "branch": 82, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5820 + ], + "op": "ISZERO", + "path": "75" + }, + "3060": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3061": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH2", + "path": "75", + "value": "0xC38" + }, + "3064": { + "branch": 82, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "JUMPI", + "path": "75" + }, + "3065": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "3067": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "MLOAD", + "path": "75" + }, + "3068": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "3072": { + "op": "PUSH1", + "value": "0xE5" + }, + "3074": { + "op": "SHL" + }, + "3075": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "DUP2", + "path": "75" + }, + "3076": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "MSTORE", + "path": "75" + }, + "3077": { + "op": "PUSH1", + "value": "0x20" + }, + "3079": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH1", + "path": "75", + "value": "0x4" + }, + "3081": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "DUP3", + "path": "75" + }, + "3082": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "ADD", + "path": "75" + }, + "3083": { + "op": "MSTORE" + }, + "3084": { + "op": "PUSH1", + "value": "0x15" + }, + "3086": { + "op": "PUSH1", + "value": "0x24" + }, + "3088": { + "op": "DUP3" + }, + "3089": { + "op": "ADD" + }, + "3090": { + "op": "MSTORE" + }, + "3091": { + "op": "PUSH21", + "value": "0x1152540DCC4C8E88155B9A5B9A5D1A585B1A5E9959" + }, + "3113": { + "op": "PUSH1", + "value": "0x5A" + }, + "3115": { + "op": "SHL" + }, + "3116": { + "op": "PUSH1", + "value": "0x44" + }, + "3118": { + "op": "DUP3" + }, + "3119": { + "op": "ADD" + }, + "3120": { + "op": "MSTORE" + }, + "3121": { + "op": "PUSH1", + "value": "0x64" + }, + "3123": { + "op": "ADD" + }, + "3124": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH2", + "path": "75", + "value": "0x925" + }, + "3127": { + "op": "JUMP" + }, + "3128": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3129": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5921 + ], + "op": "PUSH2", + "path": "75", + "statement": 28, + "value": "0xC40" + }, + "3132": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5919 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1405" + }, + "3135": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5908, + 5921 + ], + "op": "JUMP", + "path": "75" + }, + "3136": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5921 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3137": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5951 + ], + "op": "PUSH2", + "path": "75", + "value": "0xC48" + }, + "3140": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5949 + ], + "op": "PUSH2", + "path": "75", + "value": "0x14C5" + }, + "3143": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5935, + 5951 + ], + "op": "JUMP", + "path": "75" + }, + "3144": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5951 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3145": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "3147": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP1", + "path": "75" + }, + "3148": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MLOAD", + "path": "75" + }, + "3149": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6027, + 6028 + ], + "op": "PUSH0", + "path": "75" + }, + "3150": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP1", + "path": "75" + }, + "3151": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP3", + "path": "75" + }, + "3152": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MSTORE", + "path": "75" + }, + "3153": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "3155": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP3", + "path": "75" + }, + "3156": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "ADD", + "path": "75" + }, + "3157": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP1", + "path": "75" + }, + "3158": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP3", + "path": "75" + }, + "3159": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MSTORE", + "path": "75" + }, + "3160": { + "op": "PUSH1", + "value": "0xF" + }, + "3162": { + "op": "PUSH1", + "value": "0xF8" + }, + "3164": { + "op": "SHL" + }, + "3165": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP13", + "path": "75" + }, + "3166": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP4", + "path": "75" + }, + "3167": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP12", + "path": "75" + }, + "3168": { + "op": "POP" + }, + "3169": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP2", + "path": "75" + }, + "3170": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP10", + "path": "75" + }, + "3171": { + "op": "POP" + }, + "3172": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5965, + 5978 + ], + "op": "CHAINID", + "path": "75" + }, + "3173": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5965, + 5978 + ], + "op": "SWAP9", + "path": "75" + }, + "3174": { + "op": "POP" + }, + "3175": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6000, + 6004 + ], + "op": "ADDRESS", + "path": "75" + }, + "3176": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6000, + 6004 + ], + "op": "SWAP8", + "path": "75" + }, + "3177": { + "op": "POP" + }, + "3178": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6027, + 6028 + ], + "op": "SWAP6", + "path": "75" + }, + "3179": { + "op": "POP" + }, + "3180": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP4", + "path": "75" + }, + "3181": { + "op": "POP" + }, + "3182": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP2", + "path": "75" + }, + "3183": { + "op": "POP" + }, + "3184": { + "op": "POP" + }, + "3185": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "o", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "3186": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3187": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1499 + ], + "op": "PUSH2", + "path": "85", + "statement": 29, + "value": "0xC7A" + }, + "3190": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1497 + ], + "op": "PUSH2", + "path": "85", + "value": "0x113E" + }, + "3193": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1479, + 1499 + ], + "op": "JUMP", + "path": "85" + }, + "3194": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1499 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3195": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1517 + ], + "op": "PUSH0", + "path": "85" + }, + "3196": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH2", + "path": "85", + "value": "0xCBB" + }, + "3199": { + "fn": "BaseAccount.execute", + "offset": [ + 1530, + 1536 + ], + "op": "DUP6", + "path": "85" + }, + "3200": { + "fn": "BaseAccount.execute", + "offset": [ + 1538, + 1543 + ], + "op": "DUP6", + "path": "85" + }, + "3201": { + "fn": "BaseAccount.execute", + "offset": [ + 1545, + 1549 + ], + "op": "DUP6", + "path": "85" + }, + "3202": { + "fn": "BaseAccount.execute", + "offset": [ + 1545, + 1549 + ], + "op": "DUP6", + "path": "85" + }, + "3203": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3204": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3205": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3207": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3208": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3210": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3211": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "3212": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DIV", + "path": "85" + }, + "3213": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MUL", + "path": "85" + }, + "3214": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3216": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3217": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3219": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MLOAD", + "path": "85" + }, + "3220": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "3221": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "3222": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3223": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3225": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "3226": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3227": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP4", + "path": "85" + }, + "3228": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP3", + "path": "85" + }, + "3229": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "3230": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "3231": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "3232": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "3233": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "3234": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3236": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3237": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP4", + "path": "85" + }, + "3238": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP4", + "path": "85" + }, + "3239": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3240": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP3", + "path": "85" + }, + "3241": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP5", + "path": "85" + }, + "3242": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "CALLDATACOPY", + "path": "85" + }, + "3243": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH0", + "path": "85" + }, + "3244": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP3", + "path": "85" + }, + "3245": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3246": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "3247": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "3248": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "3249": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "3250": { + "op": "POP" + }, + "3251": { + "op": "POP" + }, + "3252": { + "op": "POP" + }, + "3253": { + "op": "POP" + }, + "3254": { + "fn": "BaseAccount.execute", + "offset": [ + 1551, + 1560 + ], + "op": "GAS", + "path": "85" + }, + "3255": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1529 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1146" + }, + "3258": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1520, + 1561 + ], + "op": "JUMP", + "path": "85" + }, + "3259": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3260": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "3261": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1561 + ], + "op": "POP", + "path": "85" + }, + "3262": { + "branch": 78, + "fn": "BaseAccount.execute", + "offset": [ + 1576, + 1578 + ], + "op": "DUP1", + "path": "85" + }, + "3263": { + "fn": "BaseAccount.execute", + "offset": [ + 1571, + 1632 + ], + "op": "PUSH2", + "path": "85", + "value": "0xBC2" + }, + "3266": { + "branch": 78, + "fn": "BaseAccount.execute", + "offset": [ + 1571, + 1632 + ], + "op": "JUMPI", + "path": "85" + }, + "3267": { + "fn": "BaseAccount.execute", + "offset": [ + 1594, + 1621 + ], + "op": "PUSH2", + "path": "85", + "statement": 30, + "value": "0xBC2" + }, + "3270": { + "fn": "BaseAccount.execute", + "offset": [ + 1594, + 1619 + ], + "op": "PUSH2", + "path": "85", + "value": "0x115C" + }, + "3273": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1594, + 1621 + ], + "op": "JUMP", + "path": "85" + }, + "3274": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3275": { + "fn": "TokenBoundMech.state", + "offset": [ + 2168, + 2175 + ], + "op": "PUSH0", + "path": "113" + }, + "3276": { + "fn": "TokenBoundMech.state", + "offset": [ + 2168, + 2175 + ], + "op": "DUP1", + "path": "113" + }, + "3277": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "PUSH32", + "path": "113", + "value": "0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800" + }, + "3310": { + "fn": "TokenBoundMech.state", + "offset": [ + 2187, + 2248 + ], + "op": "SWAP1", + "path": "113" + }, + "3311": { + "op": "POP" + }, + "3312": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2354 + ], + "op": "PUSH0", + "path": "113" + }, + "3313": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "3334": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3336": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "3337": { + "op": "PUSH4", + "value": "0x1AAB3F0D" + }, + "3342": { + "op": "PUSH1", + "value": "0xE1" + }, + "3344": { + "op": "SHL" + }, + "3345": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3346": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MSTORE", + "path": "113" + }, + "3347": { + "fn": "TokenBoundMech.state", + "offset": [ + 2387, + 2391 + ], + "op": "ADDRESS", + "path": "113" + }, + "3348": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x4" + }, + "3350": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3351": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3352": { + "op": "MSTORE" + }, + "3353": { + "fn": "TokenBoundMech.state", + "offset": [ + 2394, + 2395 + ], + "op": "PUSH0", + "path": "113" + }, + "3354": { + "op": "PUSH1", + "value": "0x24" + }, + "3356": { + "op": "DUP3" + }, + "3357": { + "op": "ADD" + }, + "3358": { + "op": "MSTORE" + }, + "3359": { + "op": "PUSH1", + "value": "0x1" + }, + "3361": { + "op": "PUSH1", + "value": "0x1" + }, + "3363": { + "op": "PUSH1", + "value": "0xA0" + }, + "3365": { + "op": "SHL" + }, + "3366": { + "op": "SUB" + }, + "3367": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP2", + "path": "113" + }, + "3368": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3369": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP2", + "path": "113" + }, + "3370": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "AND", + "path": "113" + }, + "3371": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3372": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "PUSH4", + "path": "113", + "value": "0x35567E1A" + }, + "3377": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3378": { + "op": "PUSH1", + "value": "0x44" + }, + "3380": { + "op": "ADD" + }, + "3381": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3383": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3385": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "3386": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3387": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP4", + "path": "113" + }, + "3388": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SUB", + "path": "113" + }, + "3389": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3390": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP7", + "path": "113" + }, + "3391": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "GAS", + "path": "113" + }, + "3392": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "STATICCALL", + "path": "113" + }, + "3393": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ISZERO", + "path": "113" + }, + "3394": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3395": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ISZERO", + "path": "113" + }, + "3396": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0xD4F" + }, + "3399": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPI", + "path": "113" + }, + "3400": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3401": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3402": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3403": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATACOPY", + "path": "113" + }, + "3404": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3405": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3406": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "REVERT", + "path": "113" + }, + "3407": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3408": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3409": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3410": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3411": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3412": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3414": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "3415": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3416": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x1F" + }, + "3418": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "NOT", + "path": "113" + }, + "3419": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x1F" + }, + "3421": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3422": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3423": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "AND", + "path": "113" + }, + "3424": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3425": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3426": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3427": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3429": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MSTORE", + "path": "113" + }, + "3430": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3431": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3432": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3433": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3434": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0xD73" + }, + "3437": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP2", + "path": "113" + }, + "3438": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3439": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0x27A2" + }, + "3442": { + "fn": "TokenBoundMech.state", + "jump": "i", + "offset": [ + 2357, + 2396 + ], + "op": "JUMP", + "path": "113" + }, + "3443": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3444": { + "fn": "TokenBoundMech.state", + "offset": [ + 2443, + 2457 + ], + "op": "DUP3", + "path": "113", + "statement": 31 + }, + "3445": { + "fn": "TokenBoundMech.state", + "offset": [ + 2443, + 2457 + ], + "op": "SLOAD", + "path": "113" + }, + "3446": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3448": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MLOAD", + "path": "113" + }, + "3449": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP2", + "path": "113" + }, + "3450": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP3", + "path": "113" + }, + "3451": { + "op": "POP" + }, + "3452": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH2", + "path": "113", + "value": "0xD92" + }, + "3455": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SWAP2", + "path": "113" + }, + "3456": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "DUP4", + "path": "113" + }, + "3457": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3458": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3460": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "ADD", + "path": "113" + }, + "3461": { + "op": "SWAP2" + }, + "3462": { + "op": "DUP3" + }, + "3463": { + "op": "MSTORE" + }, + "3464": { + "op": "PUSH1", + "value": "0x20" + }, + "3466": { + "op": "DUP3" + }, + "3467": { + "op": "ADD" + }, + "3468": { + "op": "MSTORE" + }, + "3469": { + "op": "PUSH1", + "value": "0x40" + }, + "3471": { + "op": "ADD" + }, + "3472": { + "op": "SWAP1" + }, + "3473": { + "op": "JUMP" + }, + "3474": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3475": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3477": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MLOAD", + "path": "113" + }, + "3478": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3480": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP2", + "path": "113" + }, + "3481": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP4", + "path": "113" + }, + "3482": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SUB", + "path": "113" + }, + "3483": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SUB", + "path": "113" + }, + "3484": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP2", + "path": "113" + }, + "3485": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MSTORE", + "path": "113" + }, + "3486": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SWAP1", + "path": "113" + }, + "3487": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3489": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MSTORE", + "path": "113" + }, + "3490": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "DUP1", + "path": "113" + }, + "3491": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "MLOAD", + "path": "113" + }, + "3492": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "SWAP1", + "path": "113" + }, + "3493": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3495": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "ADD", + "path": "113" + }, + "3496": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "KECCAK256", + "path": "113" + }, + "3497": { + "fn": "TokenBoundMech.state", + "offset": [ + 2414, + 2477 + ], + "op": "PUSH0", + "path": "113" + }, + "3498": { + "fn": "TokenBoundMech.state", + "offset": [ + 2414, + 2477 + ], + "op": "SHR", + "path": "113" + }, + "3499": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "SWAP3", + "path": "113" + }, + "3500": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3501": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3502": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3503": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "SWAP1", + "path": "113" + }, + "3504": { + "fn": "TokenBoundMech.state", + "jump": "o", + "offset": [ + 2128, + 2485 + ], + "op": "JUMP", + "path": "113" + }, + "3505": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3506": { + "fn": "Mech.execute", + "offset": [ + 5072, + 5095 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "3508": { + "fn": "Mech.execute", + "offset": [ + 5111, + 5123 + ], + "op": "PUSH0", + "path": "111" + }, + "3509": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5222 + ], + "op": "PUSH2", + "path": "111", + "statement": 32, + "value": "0xDCE" + }, + "3512": { + "fn": "Mech.execute", + "offset": [ + 5163, + 5165 + ], + "op": "DUP9", + "path": "111" + }, + "3513": { + "fn": "Mech.execute", + "offset": [ + 5167, + 5172 + ], + "op": "DUP9", + "path": "111" + }, + "3514": { + "fn": "Mech.execute", + "offset": [ + 5174, + 5178 + ], + "op": "DUP9", + "path": "111" + }, + "3515": { + "fn": "Mech.execute", + "offset": [ + 5174, + 5178 + ], + "op": "DUP9", + "path": "111" + }, + "3516": { + "fn": "Mech.execute", + "offset": [ + 5180, + 5189 + ], + "op": "DUP9", + "path": "111" + }, + "3517": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5201 + ], + "op": "DUP9", + "path": "111" + }, + "3518": { + "branch": 99, + "fn": "Mech.execute", + "offset": [ + 5191, + 5201 + ], + "op": "ISZERO", + "path": "111" + }, + "3519": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "PUSH2", + "path": "111", + "value": "0xDC8" + }, + "3522": { + "branch": 99, + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "JUMPI", + "path": "111" + }, + "3523": { + "fn": "Mech.execute", + "offset": [ + 5216, + 5221 + ], + "op": "DUP9", + "path": "111" + }, + "3524": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5162 + ], + "op": "PUSH2", + "path": "111", + "value": "0x134B" + }, + "3527": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5157, + 5222 + ], + "op": "JUMP", + "path": "111" + }, + "3528": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3529": { + "fn": "Mech.execute", + "offset": [ + 5204, + 5213 + ], + "op": "GAS", + "path": "111" + }, + "3530": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5162 + ], + "op": "PUSH2", + "path": "111", + "value": "0x134B" + }, + "3533": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5157, + 5222 + ], + "op": "JUMP", + "path": "111" + }, + "3534": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5222 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3535": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "SWAP3", + "path": "111" + }, + "3536": { + "op": "POP" + }, + "3537": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "SWAP1", + "path": "111" + }, + "3538": { + "op": "POP" + }, + "3539": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "DUP1", + "path": "111" + }, + "3540": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "PUSH2", + "path": "111", + "statement": 33, + "value": "0xDDF" + }, + "3543": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "JUMPI", + "path": "111" + }, + "3544": { + "fn": "Mech.execute", + "offset": [ + 5400, + 5410 + ], + "op": "DUP2", + "path": "111" + }, + "3545": { + "fn": "Mech.execute", + "offset": [ + 5394, + 5411 + ], + "op": "MLOAD", + "path": "111" + }, + "3546": { + "fn": "Mech.execute", + "offset": [ + 5387, + 5391 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "3548": { + "fn": "Mech.execute", + "offset": [ + 5375, + 5385 + ], + "op": "DUP4", + "path": "111" + }, + "3549": { + "fn": "Mech.execute", + "offset": [ + 5371, + 5392 + ], + "op": "ADD", + "path": "111" + }, + "3550": { + "fn": "Mech.execute", + "offset": [ + 5364, + 5412 + ], + "op": "REVERT", + "path": "111" + }, + "3551": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3552": { + "fn": "Mech.execute", + "offset": [ + 5101, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3553": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "SWAP7", + "path": "111" + }, + "3554": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "SWAP6", + "path": "111" + }, + "3555": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3556": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3557": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3558": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3559": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3560": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3561": { + "fn": "Mech.execute", + "jump": "o", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "3562": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3563": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1030, + 1037 + ], + "op": "PUSH0", + "path": "85" + }, + "3564": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "3585": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "statement": 34, + "value": "0x40" + }, + "3587": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3588": { + "op": "PUSH4", + "value": "0x1AAB3F0D" + }, + "3593": { + "op": "PUSH1", + "value": "0xE1" + }, + "3595": { + "op": "SHL" + }, + "3596": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3597": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MSTORE", + "path": "85" + }, + "3598": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1086, + 1090 + ], + "op": "ADDRESS", + "path": "85" + }, + "3599": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "3601": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3602": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3603": { + "op": "MSTORE" + }, + "3604": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1093, + 1094 + ], + "op": "PUSH0", + "path": "85" + }, + "3605": { + "op": "PUSH1", + "value": "0x24" + }, + "3607": { + "op": "DUP3" + }, + "3608": { + "op": "ADD" + }, + "3609": { + "op": "MSTORE" + }, + "3610": { + "op": "PUSH1", + "value": "0x1" + }, + "3612": { + "op": "PUSH1", + "value": "0x1" + }, + "3614": { + "op": "PUSH1", + "value": "0xA0" + }, + "3616": { + "op": "SHL" + }, + "3617": { + "op": "SUB" + }, + "3618": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP2", + "path": "85" + }, + "3619": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3620": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP2", + "path": "85" + }, + "3621": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "AND", + "path": "85" + }, + "3622": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3623": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "PUSH4", + "path": "85", + "value": "0x35567E1A" + }, + "3628": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3629": { + "op": "PUSH1", + "value": "0x44" + }, + "3631": { + "op": "ADD" + }, + "3632": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3634": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3636": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3637": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3638": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP4", + "path": "85" + }, + "3639": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SUB", + "path": "85" + }, + "3640": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3641": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP7", + "path": "85" + }, + "3642": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "GAS", + "path": "85" + }, + "3643": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "STATICCALL", + "path": "85" + }, + "3644": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ISZERO", + "path": "85" + }, + "3645": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3646": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ISZERO", + "path": "85" + }, + "3647": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0xE4A" + }, + "3650": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPI", + "path": "85" + }, + "3651": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3652": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3653": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3654": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATACOPY", + "path": "85" + }, + "3655": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3656": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3657": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "REVERT", + "path": "85" + }, + "3658": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3659": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3660": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3661": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3662": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3663": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3665": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3666": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3667": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3669": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "NOT", + "path": "85" + }, + "3670": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3672": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3673": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3674": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "AND", + "path": "85" + }, + "3675": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3676": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3677": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3678": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3680": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MSTORE", + "path": "85" + }, + "3681": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3682": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3683": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3684": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3685": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0xE6E" + }, + "3688": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP2", + "path": "85" + }, + "3689": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3690": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0x27A2" + }, + "3693": { + "fn": "BaseAccount.getNonce", + "jump": "i", + "offset": [ + 1056, + 1095 + ], + "op": "JUMP", + "path": "85" + }, + "3694": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3695": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1049, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3696": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1049, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3697": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "SWAP1", + "path": "85" + }, + "3698": { + "fn": "BaseAccount.getNonce", + "jump": "o", + "offset": [ + 981, + 1102 + ], + "op": "JUMP", + "path": "85" + }, + "3699": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "JUMPDEST", + "path": "99" + }, + "3700": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1840, + 1881 + ], + "op": "PUSH0", + "path": "99" + }, + "3701": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "DUP2", + "path": "99" + }, + "3702": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "DUP2", + "path": "99" + }, + "3703": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "MSTORE", + "path": "99" + }, + "3704": { + "fn": "HyperAccountCommitMinter._getHyperAccountCommitMinterStorage", + "offset": [ + 1075, + 1110 + ], + "op": "PUSH32", + "path": "99", + "value": "0x659D6B2D1CD4038BBDC740615487E3191DB8A386CA05E11A459FEDC97F38DF00" + }, + "3737": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "3739": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "DUP2", + "path": "99" + }, + "3740": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "SWAP1", + "path": "99" + }, + "3741": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "MSTORE", + "path": "99" + }, + "3742": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "3744": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "SWAP1", + "path": "99" + }, + "3745": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "SWAP2", + "path": "99" + }, + "3746": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "KECCAK256", + "path": "99" + }, + "3747": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1935, + 1953 + ], + "op": "SLOAD", + "path": "99" + }, + "3748": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1957, + 1972 + ], + "op": "TIMESTAMP", + "path": "99" + }, + "3749": { + "op": "GT" + }, + "3750": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1931, + 2111 + ], + "op": "PUSH2", + "path": "99", + "value": "0xEC2" + }, + "3753": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1931, + 2111 + ], + "op": "JUMPI", + "path": "99" + }, + "3754": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "3756": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "MLOAD", + "path": "99" + }, + "3757": { + "op": "PUSH4", + "value": "0x17D57DB1" + }, + "3762": { + "op": "PUSH1", + "value": "0xE2" + }, + "3764": { + "op": "SHL" + }, + "3765": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "DUP2", + "path": "99" + }, + "3766": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "MSTORE", + "path": "99" + }, + "3767": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "3769": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "ADD", + "path": "99" + }, + "3770": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "3772": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "MLOAD", + "path": "99" + }, + "3773": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "DUP1", + "path": "99" + }, + "3774": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "SWAP2", + "path": "99" + }, + "3775": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "SUB", + "path": "99" + }, + "3776": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "SWAP1", + "path": "99" + }, + "3777": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1995, + 2018 + ], + "op": "REVERT", + "path": "99" + }, + "3778": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1931, + 2111 + ], + "op": "JUMPDEST", + "path": "99" + }, + "3779": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2070, + 2100 + ], + "op": "PUSH2", + "path": "99", + "statement": 35, + "value": "0xEEC" + }, + "3782": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2088, + 2100 + ], + "op": "PUSH32", + "path": "99", + "value": "0x0" + }, + "3815": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2070, + 2085 + ], + "op": "TIMESTAMP", + "path": "99" + }, + "3816": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2070, + 2100 + ], + "op": "PUSH2", + "path": "99", + "value": "0x27CD" + }, + "3819": { + "fn": "HyperAccountCommitMinter.commit", + "jump": "i", + "offset": [ + 2070, + 2100 + ], + "op": "JUMP", + "path": "99" + }, + "3820": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2070, + 2100 + ], + "op": "JUMPDEST", + "path": "99" + }, + "3821": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2058 + ], + "op": "PUSH0", + "path": "99" + }, + "3822": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "DUP4", + "path": "99" + }, + "3823": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "DUP2", + "path": "99" + }, + "3824": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "MSTORE", + "path": "99" + }, + "3825": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "3827": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "DUP4", + "path": "99" + }, + "3828": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "SWAP1", + "path": "99" + }, + "3829": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "MSTORE", + "path": "99" + }, + "3830": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "3832": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "SWAP1", + "path": "99" + }, + "3833": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2067 + ], + "op": "KECCAK256", + "path": "99" + }, + "3834": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 2049, + 2100 + ], + "op": "SSTORE", + "path": "99" + }, + "3835": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1830, + 2117 + ], + "op": "POP", + "path": "99" + }, + "3836": { + "fn": "HyperAccountCommitMinter.commit", + "offset": [ + 1788, + 2117 + ], + "op": "POP", + "path": "99" + }, + "3837": { + "fn": "HyperAccountCommitMinter.commit", + "jump": "o", + "offset": [ + 1788, + 2117 + ], + "op": "JUMP", + "path": "99" + }, + "3838": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3839": { + "fn": "TokenBoundMech.token", + "offset": [ + 2529, + 2544 + ], + "op": "PUSH0", + "path": "113" + }, + "3840": { + "fn": "TokenBoundMech.token", + "offset": [ + 2546, + 2567 + ], + "op": "PUSH0", + "path": "113" + }, + "3841": { + "fn": "TokenBoundMech.token", + "offset": [ + 2569, + 2584 + ], + "op": "PUSH0", + "path": "113" + }, + "3842": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2628 + ], + "op": "PUSH2", + "path": "113", + "statement": 36, + "value": "0xF09" + }, + "3845": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2626 + ], + "op": "PUSH2", + "path": "113", + "value": "0x1503" + }, + "3848": { + "fn": "TokenBoundMech.token", + "jump": "i", + "offset": [ + 2603, + 2628 + ], + "op": "JUMP", + "path": "113" + }, + "3849": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2628 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3850": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3851": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3852": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3853": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3854": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3855": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3856": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP1", + "path": "113" + }, + "3857": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP2", + "path": "113" + }, + "3858": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP3", + "path": "113" + }, + "3859": { + "fn": "TokenBoundMech.token", + "jump": "o", + "offset": [ + 2491, + 2635 + ], + "op": "JUMP", + "path": "113" + }, + "3860": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3861": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2247, + 2251 + ], + "op": "PUSH0", + "path": "101" + }, + "3862": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2306 + ], + "op": "PUSH2", + "path": "101", + "statement": 37, + "value": "0xF1E" + }, + "3865": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2294, + 2305 + ], + "op": "DUP3", + "path": "101" + }, + "3866": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2293 + ], + "op": "PUSH2", + "path": "101", + "value": "0x150F" + }, + "3869": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "jump": "i", + "offset": [ + 2270, + 2306 + ], + "op": "JUMP", + "path": "101" + }, + "3870": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2306 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3871": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "DUP1", + "path": "101" + }, + "3872": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "PUSH2", + "path": "101", + "value": "0x672" + }, + "3875": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "JUMPI", + "path": "101" + }, + "3876": { + "op": "POP" + }, + "3877": { + "op": "PUSH1", + "value": "0x1" + }, + "3879": { + "op": "PUSH1", + "value": "0x1" + }, + "3881": { + "op": "PUSH1", + "value": "0xE0" + }, + "3883": { + "op": "SHL" + }, + "3884": { + "op": "SUB" + }, + "3885": { + "op": "NOT" + }, + "3886": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "DUP3", + "path": "101" + }, + "3887": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "AND", + "path": "101" + }, + "3888": { + "op": "PUSH4", + "value": "0x3C1CC5F1" + }, + "3893": { + "op": "PUSH1", + "value": "0xE0" + }, + "3895": { + "op": "SHL" + }, + "3896": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "EQ", + "path": "101" + }, + "3897": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2263, + 2362 + ], + "op": "SWAP3", + "path": "101" + }, + "3898": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "SWAP2", + "path": "101" + }, + "3899": { + "op": "POP" + }, + "3900": { + "op": "POP" + }, + "3901": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "jump": "o", + "offset": [ + 2146, + 2369 + ], + "op": "JUMP", + "path": "101" + }, + "3902": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 533, + 837 + ], + "op": "JUMPDEST", + "path": "97" + }, + "3903": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 687, + 698 + ], + "op": "PUSH0", + "path": "97" + }, + "3904": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 732, + 733 + ], + "op": "PUSH1", + "path": "97", + "value": "0x9" + }, + "3906": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 718, + 733 + ], + "op": "DUP6", + "path": "97" + }, + "3907": { + "branch": 74, + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 718, + 733 + ], + "op": "LT", + "path": "97" + }, + "3908": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 714, + 760 + ], + "op": "ISZERO", + "path": "97" + }, + "3909": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 714, + 760 + ], + "op": "PUSH2", + "path": "97", + "value": "0xF82" + }, + "3912": { + "branch": 74, + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 714, + 760 + ], + "op": "JUMPI", + "path": "97" + }, + "3913": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 735, + 760 + ], + "op": "PUSH1", + "path": "97", + "statement": 38, + "value": "0x40" + }, + "3915": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 735, + 760 + ], + "op": "MLOAD", + "path": "97" + }, + "3916": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "3920": { + "op": "PUSH1", + "value": "0xE5" + }, + "3922": { + "op": "SHL" + }, + "3923": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 735, + 760 + ], + "op": "DUP2", + "path": "97" + }, + "3924": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 735, + 760 + ], + "op": "MSTORE", + "path": "97" + }, + "3925": { + "op": "PUSH1", + "value": "0x20" + }, + "3927": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 735, + 760 + ], + "op": "PUSH1", + "path": "97", + "value": "0x4" + }, + "3929": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 735, + 760 + ], + "op": "DUP3", + "path": "97" + }, + "3930": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 735, + 760 + ], + "op": "ADD", + "path": "97" + }, + "3931": { + "op": "MSTORE" + }, + "3932": { + "op": "PUSH1", + "value": "0xF" + }, + "3934": { + "op": "PUSH1", + "value": "0x24" + }, + "3936": { + "op": "DUP3" + }, + "3937": { + "op": "ADD" + }, + "3938": { + "op": "MSTORE" + }, + "3939": { + "op": "PUSH15", + "value": "0x131858995B081D1BDBC81CDA1BDC9D" + }, + "3955": { + "op": "PUSH1", + "value": "0x8A" + }, + "3957": { + "op": "SHL" + }, + "3958": { + "op": "PUSH1", + "value": "0x44" + }, + "3960": { + "op": "DUP3" + }, + "3961": { + "op": "ADD" + }, + "3962": { + "op": "MSTORE" + }, + "3963": { + "op": "PUSH1", + "value": "0x64" + }, + "3965": { + "op": "ADD" + }, + "3966": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 735, + 760 + ], + "op": "PUSH2", + "path": "97", + "value": "0x925" + }, + "3969": { + "op": "JUMP" + }, + "3970": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 714, + 760 + ], + "op": "JUMPDEST", + "path": "97" + }, + "3971": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 777, + 830 + ], + "op": "PUSH2", + "path": "97", + "statement": 39, + "value": "0x687" + }, + "3974": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 789, + 791 + ], + "op": "DUP8", + "path": "97" + }, + "3975": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 793, + 797 + ], + "op": "DUP8", + "path": "97" + }, + "3976": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 793, + 797 + ], + "op": "DUP8", + "path": "97" + }, + "3977": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 799, + 813 + ], + "op": "DUP8", + "path": "97" + }, + "3978": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 799, + 813 + ], + "op": "DUP8", + "path": "97" + }, + "3979": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 815, + 829 + ], + "op": "DUP8", + "path": "97" + }, + "3980": { + "fn": "HyperAccount9CharCommitMinter._mint", + "offset": [ + 777, + 788 + ], + "op": "PUSH2", + "path": "97", + "value": "0x1539" + }, + "3983": { + "fn": "HyperAccount9CharCommitMinter._mint", + "jump": "i", + "offset": [ + 777, + 830 + ], + "op": "JUMP", + "path": "97" + }, + "3984": { + "op": "JUMPDEST" + }, + "3985": { + "op": "PUSH0" + }, + "3986": { + "op": "PUSH0" + }, + "3987": { + "op": "PUSH0" + }, + "3988": { + "op": "PUSH0" + }, + "3989": { + "op": "PUSH2", + "value": "0xFA0" + }, + "3992": { + "op": "DUP9" + }, + "3993": { + "op": "DUP9" + }, + "3994": { + "op": "DUP9" + }, + "3995": { + "op": "DUP9" + }, + "3996": { + "op": "PUSH2", + "value": "0x170B" + }, + "3999": { + "jump": "i", + "op": "JUMP" + }, + "4000": { + "op": "JUMPDEST" + }, + "4001": { + "op": "SWAP3" + }, + "4002": { + "op": "POP" + }, + "4003": { + "op": "SWAP3" + }, + "4004": { + "op": "POP" + }, + "4005": { + "op": "SWAP3" + }, + "4006": { + "op": "POP" + }, + "4007": { + "op": "PUSH2", + "value": "0xFB0" + }, + "4010": { + "op": "DUP3" + }, + "4011": { + "op": "DUP3" + }, + "4012": { + "op": "PUSH2", + "value": "0x17D3" + }, + "4015": { + "jump": "i", + "op": "JUMP" + }, + "4016": { + "op": "JUMPDEST" + }, + "4017": { + "op": "POP" + }, + "4018": { + "op": "SWAP1" + }, + "4019": { + "op": "SWAP7" + }, + "4020": { + "op": "SWAP6" + }, + "4021": { + "op": "POP" + }, + "4022": { + "op": "POP" + }, + "4023": { + "op": "POP" + }, + "4024": { + "op": "POP" + }, + "4025": { + "op": "POP" + }, + "4026": { + "op": "POP" + }, + "4027": { + "jump": "o", + "op": "JUMP" + }, + "4028": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 2953, + 3136 + ], + "op": "JUMPDEST", + "path": "85" + }, + "4029": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3040, + 3050 + ], + "op": "CALLER", + "path": "85", + "statement": 40 + }, + "4030": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "4051": { + "branch": 79, + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3040, + 3075 + ], + "op": "EQ", + "path": "85" + }, + "4052": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH2", + "path": "85", + "value": "0x101F" + }, + "4055": { + "branch": 79, + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "JUMPI", + "path": "85" + }, + "4056": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "4058": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "MLOAD", + "path": "85" + }, + "4059": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "4063": { + "op": "PUSH1", + "value": "0xE5" + }, + "4065": { + "op": "SHL" + }, + "4066": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "DUP2", + "path": "85" + }, + "4067": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "MSTORE", + "path": "85" + }, + "4068": { + "op": "PUSH1", + "value": "0x20" + }, + "4070": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "4072": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "DUP3", + "path": "85" + }, + "4073": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "ADD", + "path": "85" + }, + "4074": { + "op": "MSTORE" + }, + "4075": { + "op": "PUSH1", + "value": "0x1C" + }, + "4077": { + "op": "PUSH1", + "value": "0x24" + }, + "4079": { + "op": "DUP3" + }, + "4080": { + "op": "ADD" + }, + "4081": { + "op": "MSTORE" + }, + "4082": { + "op": "PUSH32", + "value": "0x6163636F756E743A206E6F742066726F6D20456E747279506F696E7400000000" + }, + "4115": { + "op": "PUSH1", + "value": "0x44" + }, + "4117": { + "op": "DUP3" + }, + "4118": { + "op": "ADD" + }, + "4119": { + "op": "MSTORE" + }, + "4120": { + "op": "PUSH1", + "value": "0x64" + }, + "4122": { + "op": "ADD" + }, + "4123": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH2", + "path": "85", + "value": "0x925" + }, + "4126": { + "op": "JUMP" + }, + "4127": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "JUMPDEST", + "path": "85" + }, + "4128": { + "fn": "BaseAccount._requireFromEntryPoint", + "jump": "o", + "offset": [ + 2953, + 3136 + ], + "op": "JUMP", + "path": "85" + }, + "4129": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 2978, + 3594 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4130": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3130, + 3152 + ], + "op": "PUSH0", + "path": "101" + }, + "4131": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3197, + 3198 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "4133": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1031" + }, + "4136": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH1", + "path": "101", + "value": "0x60" + }, + "4138": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "DUP6", + "path": "101" + }, + "4139": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "ADD", + "path": "101" + }, + "4140": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3178 + ], + "op": "DUP6", + "path": "101" + }, + "4141": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH2", + "path": "101", + "value": "0x2745" + }, + "4144": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3172, + 3187 + ], + "op": "JUMP", + "path": "101" + }, + "4145": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4146": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3194 + ], + "op": "SWAP1", + "path": "101" + }, + "4147": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3194 + ], + "op": "POP", + "path": "101" + }, + "4148": { + "branch": 92, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3198 + ], + "op": "GT", + "path": "101" + }, + "4149": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "ISZERO", + "path": "101" + }, + "4150": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1074" + }, + "4153": { + "branch": 92, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "JUMPI", + "path": "101" + }, + "4154": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3214, + 3224 + ], + "op": "PUSH0", + "path": "101" + }, + "4155": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3253 + ], + "op": "PUSH2", + "path": "101", + "value": "0x104F" + }, + "4158": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH2", + "path": "101", + "value": "0x104A" + }, + "4161": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH1", + "path": "101", + "value": "0x60" + }, + "4163": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "DUP7", + "path": "101" + }, + "4164": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "ADD", + "path": "101" + }, + "4165": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3243 + ], + "op": "DUP7", + "path": "101" + }, + "4166": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH2", + "path": "101", + "value": "0x2745" + }, + "4169": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3237, + 3252 + ], + "op": "JUMP", + "path": "101" + }, + "4170": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4171": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3236 + ], + "op": "PUSH2", + "path": "101", + "value": "0x188B" + }, + "4174": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3227, + 3253 + ], + "op": "JUMP", + "path": "101" + }, + "4175": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3253 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4176": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3214, + 3253 + ], + "op": "SWAP1", + "path": "101" + }, + "4177": { + "op": "POP" + }, + "4178": { + "op": "PUSH4", + "value": "0xF6B31013" + }, + "4183": { + "op": "PUSH1", + "value": "0xE0" + }, + "4185": { + "op": "SHL" + }, + "4186": { + "op": "PUSH1", + "value": "0x1" + }, + "4188": { + "op": "PUSH1", + "value": "0x1" + }, + "4190": { + "op": "PUSH1", + "value": "0xE0" + }, + "4192": { + "op": "SHL" + }, + "4193": { + "op": "SUB" + }, + "4194": { + "op": "NOT" + }, + "4195": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "DUP3", + "path": "101" + }, + "4196": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "AND", + "path": "101" + }, + "4197": { + "branch": 93, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "ADD", + "path": "101" + }, + "4198": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1072" + }, + "4201": { + "branch": 93, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "JUMPI", + "path": "101" + }, + "4202": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "4203": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "SWAP2", + "path": "101", + "statement": 41 + }, + "4204": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "POP", + "path": "101" + }, + "4205": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "POP", + "path": "101" + }, + "4206": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "PUSH2", + "path": "101", + "value": "0x672" + }, + "4209": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "JUMP", + "path": "101" + }, + "4210": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4211": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3200, + 3442 + ], + "op": "POP", + "path": "101" + }, + "4212": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4213": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3543, + 3587 + ], + "op": "PUSH2", + "path": "101", + "statement": 42, + "value": "0x83C" + }, + "4216": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3568, + 3574 + ], + "op": "DUP4", + "path": "101" + }, + "4217": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3576, + 3586 + ], + "op": "DUP4", + "path": "101" + }, + "4218": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3543, + 3567 + ], + "op": "PUSH2", + "path": "101", + "value": "0x18A2" + }, + "4221": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3543, + 3587 + ], + "op": "JUMP", + "path": "101" + }, + "4222": { + "fn": "Account._validateNonce", + "offset": [ + 1189, + 1508 + ], + "op": "JUMPDEST", + "path": "109" + }, + "4223": { + "op": "PUSH1", + "value": "0x1" + }, + "4225": { + "op": "PUSH1", + "value": "0x1" + }, + "4227": { + "op": "PUSH1", + "value": "0x40" + }, + "4229": { + "op": "SHL" + }, + "4230": { + "op": "SUB" + }, + "4231": { + "fn": "Account._validateNonce", + "offset": [ + 1459, + 1483 + ], + "op": "DUP2", + "path": "109", + "statement": 43 + }, + "4232": { + "branch": 75, + "fn": "Account._validateNonce", + "offset": [ + 1459, + 1483 + ], + "op": "LT", + "path": "109" + }, + "4233": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH2", + "path": "109", + "value": "0x10C4" + }, + "4236": { + "branch": 75, + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "JUMPI", + "path": "109" + }, + "4237": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH1", + "path": "109", + "value": "0x40" + }, + "4239": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "MLOAD", + "path": "109" + }, + "4240": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "4244": { + "op": "PUSH1", + "value": "0xE5" + }, + "4246": { + "op": "SHL" + }, + "4247": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "DUP2", + "path": "109" + }, + "4248": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "MSTORE", + "path": "109" + }, + "4249": { + "op": "PUSH1", + "value": "0x20" + }, + "4251": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH1", + "path": "109", + "value": "0x4" + }, + "4253": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "DUP3", + "path": "109" + }, + "4254": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "ADD", + "path": "109" + }, + "4255": { + "op": "MSTORE" + }, + "4256": { + "op": "PUSH1", + "value": "0xD" + }, + "4258": { + "op": "PUSH1", + "value": "0x24" + }, + "4260": { + "op": "DUP3" + }, + "4261": { + "op": "ADD" + }, + "4262": { + "op": "MSTORE" + }, + "4263": { + "op": "PUSH13", + "value": "0x496E76616C6964206E6F6E6365" + }, + "4277": { + "op": "PUSH1", + "value": "0x98" + }, + "4279": { + "op": "SHL" + }, + "4280": { + "op": "PUSH1", + "value": "0x44" + }, + "4282": { + "op": "DUP3" + }, + "4283": { + "op": "ADD" + }, + "4284": { + "op": "MSTORE" + }, + "4285": { + "op": "PUSH1", + "value": "0x64" + }, + "4287": { + "op": "ADD" + }, + "4288": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH2", + "path": "109", + "value": "0x925" + }, + "4291": { + "op": "JUMP" + }, + "4292": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "JUMPDEST", + "path": "109" + }, + "4293": { + "fn": "Account._validateNonce", + "offset": [ + 1189, + 1508 + ], + "op": "POP", + "path": "109" + }, + "4294": { + "fn": "Account._validateNonce", + "jump": "o", + "offset": [ + 1189, + 1508 + ], + "op": "JUMP", + "path": "109" + }, + "4295": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5811, + 6161 + ], + "op": "JUMPDEST", + "path": "85" + }, + "4296": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5892, + 5916 + ], + "op": "DUP1", + "path": "85" + }, + "4297": { + "branch": 80, + "fn": "BaseAccount._payPrefund", + "offset": [ + 5892, + 5916 + ], + "op": "ISZERO", + "path": "85" + }, + "4298": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5888, + 6155 + ], + "op": "PUSH2", + "path": "85", + "value": "0x10C4" + }, + "4301": { + "branch": 80, + "fn": "BaseAccount._payPrefund", + "offset": [ + 5888, + 6155 + ], + "op": "JUMPI", + "path": "85" + }, + "4302": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "4304": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MLOAD", + "path": "85" + }, + "4305": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "PUSH0", + "path": "85" + }, + "4306": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "SWAP1", + "path": "85" + }, + "4307": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "CALLER", + "path": "85" + }, + "4308": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "SWAP1", + "path": "85" + }, + "4309": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "DUP4", + "path": "85" + }, + "4310": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "SWAP1", + "path": "85" + }, + "4311": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "DUP4", + "path": "85" + }, + "4312": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "4313": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "DUP2", + "path": "85" + }, + "4314": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "4315": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "DUP6", + "path": "85" + }, + "4316": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "DUP8", + "path": "85" + }, + "4317": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "GAS", + "path": "85" + }, + "4318": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "CALL", + "path": "85" + }, + "4319": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "SWAP3", + "path": "85" + }, + "4320": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "4321": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "4322": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "4323": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "4324": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP1", + "path": "85" + }, + "4325": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH0", + "path": "85" + }, + "4326": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "4327": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "EQ", + "path": "85" + }, + "4328": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH2", + "path": "85", + "value": "0xBC2" + }, + "4331": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "JUMPI", + "path": "85" + }, + "4332": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "4334": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MLOAD", + "path": "85" + }, + "4335": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "SWAP2", + "path": "85" + }, + "4336": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "4337": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "4339": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "NOT", + "path": "85" + }, + "4340": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x3F" + }, + "4342": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "4343": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "4344": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "AND", + "path": "85" + }, + "4345": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP3", + "path": "85" + }, + "4346": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "4347": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "4349": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MSTORE", + "path": "85" + }, + "4350": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "4351": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP3", + "path": "85" + }, + "4352": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MSTORE", + "path": "85" + }, + "4353": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "4354": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH0", + "path": "85" + }, + "4355": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "4357": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP5", + "path": "85" + }, + "4358": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "4359": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATACOPY", + "path": "85" + }, + "4360": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH2", + "path": "85", + "value": "0xBC2" + }, + "4363": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "JUMP", + "path": "85" + }, + "4364": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2563, + 2713 + ], + "op": "JUMPDEST", + "path": "99" + }, + "4365": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2645, + 2652 + ], + "op": "PUSH0", + "path": "99" + }, + "4366": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2692, + 2696 + ], + "op": "DUP3", + "path": "99", + "statement": 44 + }, + "4367": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2698, + 2704 + ], + "op": "DUP3", + "path": "99" + }, + "4368": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "4370": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "MLOAD", + "path": "99" + }, + "4371": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "4373": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "ADD", + "path": "99" + }, + "4374": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "PUSH2", + "path": "99", + "value": "0x1120" + }, + "4377": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "SWAP3", + "path": "99" + }, + "4378": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "SWAP2", + "path": "99" + }, + "4379": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "SWAP1", + "path": "99" + }, + "4380": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "PUSH2", + "path": "99", + "value": "0x27E0" + }, + "4383": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "jump": "i", + "offset": [ + 2681, + 2705 + ], + "op": "JUMP", + "path": "99" + }, + "4384": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "JUMPDEST", + "path": "99" + }, + "4385": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "4387": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "MLOAD", + "path": "99" + }, + "4388": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "4390": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "DUP2", + "path": "99" + }, + "4391": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "DUP4", + "path": "99" + }, + "4392": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "SUB", + "path": "99" + }, + "4393": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "SUB", + "path": "99" + }, + "4394": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "DUP2", + "path": "99" + }, + "4395": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "MSTORE", + "path": "99" + }, + "4396": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "SWAP1", + "path": "99" + }, + "4397": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "4399": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2681, + 2705 + ], + "op": "MSTORE", + "path": "99" + }, + "4400": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2671, + 2706 + ], + "op": "DUP1", + "path": "99" + }, + "4401": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2671, + 2706 + ], + "op": "MLOAD", + "path": "99" + }, + "4402": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2671, + 2706 + ], + "op": "SWAP1", + "path": "99" + }, + "4403": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2671, + 2706 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "4405": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2671, + 2706 + ], + "op": "ADD", + "path": "99" + }, + "4406": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2671, + 2706 + ], + "op": "KECCAK256", + "path": "99" + }, + "4407": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2664, + 2706 + ], + "op": "SWAP1", + "path": "99" + }, + "4408": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2664, + 2706 + ], + "op": "POP", + "path": "99" + }, + "4409": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2563, + 2713 + ], + "op": "SWAP3", + "path": "99" + }, + "4410": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2563, + 2713 + ], + "op": "SWAP2", + "path": "99" + }, + "4411": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2563, + 2713 + ], + "op": "POP", + "path": "99" + }, + "4412": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "offset": [ + 2563, + 2713 + ], + "op": "POP", + "path": "99" + }, + "4413": { + "fn": "HyperAccountCommitMinter._getCommitHash", + "jump": "o", + "offset": [ + 2563, + 2713 + ], + "op": "JUMP", + "path": "99" + }, + "4414": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3142, + 3235 + ], + "op": "JUMPDEST", + "path": "85" + }, + "4415": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3204, + 3228 + ], + "op": "PUSH2", + "path": "85", + "statement": 45, + "value": "0x101F" + }, + "4418": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3204, + 3226 + ], + "op": "PUSH2", + "path": "85", + "value": "0xFBC" + }, + "4421": { + "fn": "BaseAccount._requireForExecute", + "jump": "i", + "offset": [ + 3204, + 3228 + ], + "op": "JUMP", + "path": "85" + }, + "4422": { + "op": "JUMPDEST" + }, + "4423": { + "op": "PUSH0" + }, + "4424": { + "op": "PUSH0" + }, + "4425": { + "op": "PUSH0" + }, + "4426": { + "op": "DUP5" + }, + "4427": { + "op": "MLOAD" + }, + "4428": { + "op": "PUSH1", + "value": "0x20" + }, + "4430": { + "op": "DUP7" + }, + "4431": { + "op": "ADD" + }, + "4432": { + "op": "DUP8" + }, + "4433": { + "op": "DUP10" + }, + "4434": { + "op": "DUP8" + }, + "4435": { + "op": "CALL" + }, + "4436": { + "op": "SWAP6" + }, + "4437": { + "op": "SWAP5" + }, + "4438": { + "op": "POP" + }, + "4439": { + "op": "POP" + }, + "4440": { + "op": "POP" + }, + "4441": { + "op": "POP" + }, + "4442": { + "op": "POP" + }, + "4443": { + "jump": "o", + "op": "JUMP" + }, + "4444": { + "op": "JUMPDEST" + }, + "4445": { + "op": "PUSH2", + "value": "0x101F" + }, + "4448": { + "op": "PUSH2", + "value": "0x1168" + }, + "4451": { + "op": "PUSH0" + }, + "4452": { + "op": "PUSH2", + "value": "0x116D" + }, + "4455": { + "jump": "i", + "op": "JUMP" + }, + "4456": { + "op": "JUMPDEST" + }, + "4457": { + "op": "PUSH2", + "value": "0x19AF" + }, + "4460": { + "jump": "i", + "op": "JUMP" + }, + "4461": { + "op": "JUMPDEST" + }, + "4462": { + "op": "PUSH1", + "value": "0x60" + }, + "4464": { + "op": "RETURNDATASIZE" + }, + "4465": { + "op": "DUP3" + }, + "4466": { + "op": "ISZERO" + }, + "4467": { + "op": "PUSH2", + "value": "0x1181" + }, + "4470": { + "op": "JUMPI" + }, + "4471": { + "op": "DUP3" + }, + "4472": { + "op": "DUP2" + }, + "4473": { + "op": "GT" + }, + "4474": { + "op": "ISZERO" + }, + "4475": { + "op": "PUSH2", + "value": "0x1181" + }, + "4478": { + "op": "JUMPI" + }, + "4479": { + "op": "POP" + }, + "4480": { + "op": "DUP2" + }, + "4481": { + "op": "JUMPDEST" + }, + "4482": { + "op": "PUSH1", + "value": "0x40" + }, + "4484": { + "op": "MLOAD" + }, + "4485": { + "op": "PUSH1", + "value": "0x20" + }, + "4487": { + "op": "DUP3" + }, + "4488": { + "op": "ADD" + }, + "4489": { + "op": "DUP2" + }, + "4490": { + "op": "ADD" + }, + "4491": { + "op": "PUSH1", + "value": "0x40" + }, + "4493": { + "op": "MSTORE" + }, + "4494": { + "op": "DUP2" + }, + "4495": { + "op": "DUP2" + }, + "4496": { + "op": "MSTORE" + }, + "4497": { + "op": "DUP2" + }, + "4498": { + "op": "PUSH0" + }, + "4499": { + "op": "PUSH1", + "value": "0x20" + }, + "4501": { + "op": "DUP4" + }, + "4502": { + "op": "ADD" + }, + "4503": { + "op": "RETURNDATACOPY" + }, + "4504": { + "op": "SWAP4" + }, + "4505": { + "op": "SWAP3" + }, + "4506": { + "op": "POP" + }, + "4507": { + "op": "POP" + }, + "4508": { + "op": "POP" + }, + "4509": { + "jump": "o", + "op": "JUMP" + }, + "4510": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4603, + 4915 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4511": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4683, + 4687 + ], + "op": "ADDRESS", + "path": "68", + "statement": 46 + }, + "4512": { + "op": "PUSH1", + "value": "0x1" + }, + "4514": { + "op": "PUSH1", + "value": "0x1" + }, + "4516": { + "op": "PUSH1", + "value": "0xA0" + }, + "4518": { + "op": "SHL" + }, + "4519": { + "op": "SUB" + }, + "4520": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4692, + 4698 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "4553": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "AND", + "path": "68" + }, + "4554": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "EQ", + "path": "68" + }, + "4555": { + "branch": 105, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "DUP1", + "path": "68" + }, + "4556": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1224" + }, + "4559": { + "branch": 105, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "JUMPI", + "path": "68" + }, + "4560": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "POP", + "path": "68" + }, + "4561": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4789, + 4795 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "4594": { + "op": "PUSH1", + "value": "0x1" + }, + "4596": { + "op": "PUSH1", + "value": "0x1" + }, + "4598": { + "op": "PUSH1", + "value": "0xA0" + }, + "4600": { + "op": "SHL" + }, + "4601": { + "op": "SUB" + }, + "4602": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "AND", + "path": "68" + }, + "4603": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4785 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1218" + }, + "4606": { + "op": "PUSH0" + }, + "4607": { + "op": "MLOAD" + }, + "4608": { + "op": "PUSH1", + "value": "0x20" + }, + "4610": { + "op": "PUSH2", + "value": "0x2A77" + }, + "4613": { + "op": "PUSH0" + }, + "4614": { + "op": "CODECOPY" + }, + "4615": { + "op": "PUSH0" + }, + "4616": { + "op": "MLOAD" + }, + "4617": { + "op": "SWAP1" + }, + "4618": { + "op": "PUSH0" + }, + "4619": { + "op": "MSTORE" + }, + "4620": { + "op": "SLOAD" + }, + "4621": { + "op": "PUSH1", + "value": "0x1" + }, + "4623": { + "op": "PUSH1", + "value": "0x1" + }, + "4625": { + "op": "PUSH1", + "value": "0xA0" + }, + "4627": { + "op": "SHL" + }, + "4628": { + "op": "SUB" + }, + "4629": { + "op": "AND" + }, + "4630": { + "op": "SWAP1" + }, + "4631": { + "op": "JUMP" + }, + "4632": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4785 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4633": { + "op": "PUSH1", + "value": "0x1" + }, + "4635": { + "op": "PUSH1", + "value": "0x1" + }, + "4637": { + "op": "PUSH1", + "value": "0xA0" + }, + "4639": { + "op": "SHL" + }, + "4640": { + "op": "SUB" + }, + "4641": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "AND", + "path": "68" + }, + "4642": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "EQ", + "path": "68" + }, + "4643": { + "branch": 106, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "ISZERO", + "path": "68" + }, + "4644": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4645": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "ISZERO", + "path": "68" + }, + "4646": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "PUSH2", + "path": "68", + "value": "0x101F" + }, + "4649": { + "branch": 106, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "JUMPI", + "path": "68" + }, + "4650": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4652": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MLOAD", + "path": "68" + }, + "4653": { + "op": "PUSH4", + "value": "0x703E46DD" + }, + "4658": { + "op": "PUSH1", + "value": "0xE1" + }, + "4660": { + "op": "SHL" + }, + "4661": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "DUP2", + "path": "68" + }, + "4662": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MSTORE", + "path": "68" + }, + "4663": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4665": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "ADD", + "path": "68" + }, + "4666": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4668": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MLOAD", + "path": "68" + }, + "4669": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "DUP1", + "path": "68" + }, + "4670": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SWAP2", + "path": "68" + }, + "4671": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SUB", + "path": "68" + }, + "4672": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SWAP1", + "path": "68" + }, + "4673": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "REVERT", + "path": "68" + }, + "4674": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 2877, + 2972 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4675": { + "offset": [ + 1240, + 1262 + ], + "op": "PUSH2", + "path": "111", + "value": "0x124B" + }, + "4678": { + "offset": [ + 1251, + 1261 + ], + "op": "CALLER", + "path": "111" + }, + "4679": { + "offset": [ + 1240, + 1250 + ], + "op": "PUSH2", + "path": "111", + "value": "0x9C9" + }, + "4682": { + "jump": "i", + "offset": [ + 1240, + 1262 + ], + "op": "JUMP", + "path": "111" + }, + "4683": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1240, + 1262 + ], + "op": "JUMPDEST", + "path": "111" + }, + "4684": { + "offset": [ + 1239, + 1262 + ], + "op": "ISZERO", + "path": "111" + }, + "4685": { + "offset": [ + 1239, + 1301 + ], + "op": "DUP1", + "path": "111" + }, + "4686": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1239, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "4687": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1239, + 1301 + ], + "op": "PUSH2", + "path": "111", + "value": "0x126C" + }, + "4690": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPI", + "path": "111" + }, + "4691": { + "op": "POP" + }, + "4692": { + "offset": [ + 1266, + 1276 + ], + "op": "CALLER", + "path": "111" + }, + "4693": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "4714": { + "offset": [ + 1266, + 1301 + ], + "op": "EQ", + "path": "111" + }, + "4715": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1266, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "4716": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPDEST", + "path": "111" + }, + "4717": { + "offset": [ + 1235, + 1360 + ], + "op": "ISZERO", + "path": "111" + }, + "4718": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1235, + 1360 + ], + "op": "PUSH2", + "path": "111", + "value": "0x10C4" + }, + "4721": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPI", + "path": "111" + }, + "4722": { + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "4724": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "4725": { + "op": "PUSH4", + "value": "0x47802953" + }, + "4730": { + "op": "PUSH1", + "value": "0xE1" + }, + "4732": { + "op": "SHL" + }, + "4733": { + "offset": [ + 1324, + 1349 + ], + "op": "DUP2", + "path": "111" + }, + "4734": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MSTORE", + "path": "111" + }, + "4735": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "4737": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "ADD", + "path": "111" + }, + "4738": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "4740": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "4741": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "DUP1", + "path": "111" + }, + "4742": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP2", + "path": "111" + }, + "4743": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SUB", + "path": "111" + }, + "4744": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP1", + "path": "111" + }, + "4745": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "REVERT", + "path": "111" + }, + "4746": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4747": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6174, + 6191 + ], + "op": "DUP2", + "path": "68" + }, + "4748": { + "op": "PUSH1", + "value": "0x1" + }, + "4750": { + "op": "PUSH1", + "value": "0x1" + }, + "4752": { + "op": "PUSH1", + "value": "0xA0" + }, + "4754": { + "op": "SHL" + }, + "4755": { + "op": "SUB" + }, + "4756": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6206 + ], + "op": "AND", + "path": "68" + }, + "4757": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6206 + ], + "op": "PUSH4", + "path": "68", + "value": "0x52D1902D" + }, + "4762": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4764": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4765": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4766": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH4", + "path": "68", + "value": "0xFFFFFFFF" + }, + "4771": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "AND", + "path": "68" + }, + "4772": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0xE0" + }, + "4774": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SHL", + "path": "68" + }, + "4775": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4776": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MSTORE", + "path": "68" + }, + "4777": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4779": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4780": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x20" + }, + "4782": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4784": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4785": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4786": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP4", + "path": "68" + }, + "4787": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SUB", + "path": "68" + }, + "4788": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4789": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP7", + "path": "68" + }, + "4790": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "GAS", + "path": "68" + }, + "4791": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "STATICCALL", + "path": "68" + }, + "4792": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP3", + "path": "68" + }, + "4793": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4794": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4795": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4796": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4797": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ISZERO", + "path": "68" + }, + "4798": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x12E4" + }, + "4801": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPI", + "path": "68" + }, + "4802": { + "op": "POP" + }, + "4803": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4805": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4806": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4807": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x1F" + }, + "4809": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "RETURNDATASIZE", + "path": "68" + }, + "4810": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4811": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4812": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4813": { + "op": "PUSH1", + "value": "0x1F" + }, + "4815": { + "op": "NOT" + }, + "4816": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "AND", + "path": "68" + }, + "4817": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP3", + "path": "68" + }, + "4818": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4819": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4820": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP3", + "path": "68" + }, + "4821": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MSTORE", + "path": "68" + }, + "4822": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x12E1" + }, + "4825": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP2", + "path": "68" + }, + "4826": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4827": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4828": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4829": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x27A2" + }, + "4832": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "i", + "offset": [ + 6156, + 6208 + ], + "op": "JUMP", + "path": "68" + }, + "4833": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4834": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x1" + }, + "4836": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4837": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "PUSH2", + "path": "68", + "value": "0x130C" + }, + "4840": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "JUMPI", + "path": "68" + }, + "4841": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4843": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "MLOAD", + "path": "68" + }, + "4844": { + "op": "PUSH4", + "value": "0x4C9C8CE3" + }, + "4849": { + "op": "PUSH1", + "value": "0xE0" + }, + "4851": { + "op": "SHL" + }, + "4852": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "DUP2", + "path": "68" + }, + "4853": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "MSTORE", + "path": "68" + }, + "4854": { + "op": "PUSH1", + "value": "0x1" + }, + "4856": { + "op": "PUSH1", + "value": "0x1" + }, + "4858": { + "op": "PUSH1", + "value": "0xA0" + }, + "4860": { + "op": "SHL" + }, + "4861": { + "op": "SUB" + }, + "4862": { + "op": "DUP4" + }, + "4863": { + "op": "AND" + }, + "4864": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4866": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "DUP3", + "path": "68" + }, + "4867": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "ADD", + "path": "68" + }, + "4868": { + "op": "MSTORE" + }, + "4869": { + "op": "PUSH1", + "value": "0x24" + }, + "4871": { + "op": "ADD" + }, + "4872": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH2", + "path": "68", + "value": "0x925" + }, + "4875": { + "op": "JUMP" + }, + "4876": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4877": { + "op": "PUSH0" + }, + "4878": { + "op": "MLOAD" + }, + "4879": { + "op": "PUSH1", + "value": "0x20" + }, + "4881": { + "op": "PUSH2", + "value": "0x2A77" + }, + "4884": { + "op": "PUSH0" + }, + "4885": { + "op": "CODECOPY" + }, + "4886": { + "op": "PUSH0" + }, + "4887": { + "op": "MLOAD" + }, + "4888": { + "op": "SWAP1" + }, + "4889": { + "op": "PUSH0" + }, + "4890": { + "op": "MSTORE" + }, + "4891": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6250, + 6290 + ], + "op": "DUP2", + "path": "68", + "statement": 47 + }, + "4892": { + "branch": 107, + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6250, + 6290 + ], + "op": "EQ", + "path": "68" + }, + "4893": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "PUSH2", + "path": "68", + "value": "0x133C" + }, + "4896": { + "branch": 107, + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "JUMPI", + "path": "68" + }, + "4897": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4899": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "MLOAD", + "path": "68" + }, + "4900": { + "op": "PUSH4", + "value": "0x2A875269" + }, + "4905": { + "op": "PUSH1", + "value": "0xE2" + }, + "4907": { + "op": "SHL" + }, + "4908": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "DUP2", + "path": "68" + }, + "4909": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "MSTORE", + "path": "68" + }, + "4910": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4912": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "DUP2", + "path": "68" + }, + "4913": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "ADD", + "path": "68" + }, + "4914": { + "op": "DUP3" + }, + "4915": { + "op": "SWAP1" + }, + "4916": { + "op": "MSTORE" + }, + "4917": { + "op": "PUSH1", + "value": "0x24" + }, + "4919": { + "op": "ADD" + }, + "4920": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH2", + "path": "68", + "value": "0x925" + }, + "4923": { + "op": "JUMP" + }, + "4924": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4925": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6433 + ], + "op": "PUSH2", + "path": "68", + "statement": 48, + "value": "0x1346" + }, + "4928": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6409, + 6426 + ], + "op": "DUP4", + "path": "68" + }, + "4929": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6428, + 6432 + ], + "op": "DUP4", + "path": "68" + }, + "4930": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6408 + ], + "op": "PUSH2", + "path": "68", + "value": "0x19B7" + }, + "4933": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "i", + "offset": [ + 6379, + 6433 + ], + "op": "JUMP", + "path": "68" + }, + "4934": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6433 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4935": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6209, + 6444 + ], + "op": "POP", + "path": "68" + }, + "4936": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "POP", + "path": "68" + }, + "4937": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "POP", + "path": "68" + }, + "4938": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "o", + "offset": [ + 6057, + 6595 + ], + "op": "JUMP", + "path": "68" + }, + "4939": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "JUMPDEST", + "path": "113" + }, + "4940": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "PUSH32", + "path": "113", + "value": "0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800" + }, + "4973": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "DUP1", + "path": "113", + "statement": 49 + }, + "4974": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SLOAD", + "path": "113" + }, + "4975": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "PUSH0", + "path": "113" + }, + "4976": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "SWAP2", + "path": "113" + }, + "4977": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3439, + 3462 + ], + "op": "PUSH1", + "path": "113", + "value": "0x60" + }, + "4979": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3439, + 3462 + ], + "op": "SWAP2", + "path": "113" + }, + "4980": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "DUP2", + "path": "113" + }, + "4981": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "DUP5", + "path": "113" + }, + "4982": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "PUSH2", + "path": "113", + "value": "0x137E" + }, + "4985": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "DUP4", + "path": "113" + }, + "4986": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2809" + }, + "4989": { + "fn": "TokenBoundMech._exec", + "jump": "i", + "offset": [ + 3601, + 3617 + ], + "op": "JUMP", + "path": "113" + }, + "4990": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "JUMPDEST", + "path": "113" + }, + "4991": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SWAP2", + "path": "113" + }, + "4992": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SWAP1", + "path": "113" + }, + "4993": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "POP", + "path": "113" + }, + "4994": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SSTORE", + "path": "113" + }, + "4995": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "POP", + "path": "113" + }, + "4996": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3719 + ], + "op": "PUSH2", + "path": "113", + "statement": 50, + "value": "0x1391" + }, + "4999": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3685, + 3687 + ], + "op": "DUP10", + "path": "113" + }, + "5000": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3689, + 3694 + ], + "op": "DUP10", + "path": "113" + }, + "5001": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3696, + 3700 + ], + "op": "DUP10", + "path": "113" + }, + "5002": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3696, + 3700 + ], + "op": "DUP10", + "path": "113" + }, + "5003": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3702, + 3711 + ], + "op": "DUP10", + "path": "113" + }, + "5004": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3713, + 3718 + ], + "op": "DUP10", + "path": "113" + }, + "5005": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3684 + ], + "op": "PUSH2", + "path": "113", + "value": "0x1A0C" + }, + "5008": { + "fn": "TokenBoundMech._exec", + "jump": "i", + "offset": [ + 3673, + 3719 + ], + "op": "JUMP", + "path": "113" + }, + "5009": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3719 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5010": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "SWAP3", + "path": "113" + }, + "5011": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "5012": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "SWAP3", + "path": "113" + }, + "5013": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "5014": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "5015": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5016": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP7", + "path": "113" + }, + "5017": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5018": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP7", + "path": "113" + }, + "5019": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP5", + "path": "113" + }, + "5020": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5021": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5022": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5023": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5024": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5025": { + "fn": "TokenBoundMech._exec", + "jump": "o", + "offset": [ + 3263, + 3726 + ], + "op": "JUMP", + "path": "113" + }, + "5026": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5032, + 5245 + ], + "op": "JUMPDEST", + "path": "68" + }, + "5027": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5106, + 5110 + ], + "op": "ADDRESS", + "path": "68", + "statement": 51 + }, + "5028": { + "op": "PUSH1", + "value": "0x1" + }, + "5030": { + "op": "PUSH1", + "value": "0x1" + }, + "5032": { + "op": "PUSH1", + "value": "0xA0" + }, + "5034": { + "op": "SHL" + }, + "5035": { + "op": "SUB" + }, + "5036": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5115, + 5121 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "5069": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5098, + 5121 + ], + "op": "AND", + "path": "68" + }, + "5070": { + "branch": 108, + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5098, + 5121 + ], + "op": "EQ", + "path": "68" + }, + "5071": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5094, + 5239 + ], + "op": "PUSH2", + "path": "68", + "value": "0x101F" + }, + "5074": { + "branch": 108, + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5094, + 5239 + ], + "op": "JUMPI", + "path": "68" + }, + "5075": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "5077": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MLOAD", + "path": "68" + }, + "5078": { + "op": "PUSH4", + "value": "0x703E46DD" + }, + "5083": { + "op": "PUSH1", + "value": "0xE1" + }, + "5085": { + "op": "SHL" + }, + "5086": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "DUP2", + "path": "68" + }, + "5087": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MSTORE", + "path": "68" + }, + "5088": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "5090": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "ADD", + "path": "68" + }, + "5091": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "5093": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MLOAD", + "path": "68" + }, + "5094": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "DUP1", + "path": "68" + }, + "5095": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SWAP2", + "path": "68" + }, + "5096": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SUB", + "path": "68" + }, + "5097": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SWAP1", + "path": "68" + }, + "5098": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "REVERT", + "path": "68" + }, + "5099": { + "fn": "UUPSUpgradeable.__UUPSUpgradeable_init", + "offset": [ + 2970, + 3037 + ], + "op": "JUMPDEST", + "path": "68" + }, + "5100": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0x101F" + }, + "5103": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1B63" + }, + "5106": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "5107": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3446, + 3593 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5108": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0x13FB" + }, + "5111": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1B63" + }, + "5114": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "5115": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 6931, + 6951 + ], + "op": "JUMPDEST", + "path": "67" + }, + "5116": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3548, + 3586 + ], + "op": "PUSH2", + "path": "75", + "statement": 52, + "value": "0x959" + }, + "5119": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3572, + 3576 + ], + "op": "DUP3", + "path": "75" + }, + "5120": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3578, + 3585 + ], + "op": "DUP3", + "path": "75" + }, + "5121": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3548, + 3571 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1BAC" + }, + "5124": { + "fn": "EIP712Upgradeable.__EIP712_init", + "jump": "i", + "offset": [ + 3548, + 3586 + ], + "op": "JUMP", + "path": "75" + }, + "5125": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6300, + 6455 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5126": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6441, + 6448 + ], + "op": "PUSH32", + "path": "75", + "statement": 53, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102" + }, + "5159": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5160": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "5161": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6354, + 6367 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "5163": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6354, + 6367 + ], + "op": "SWAP2", + "path": "75" + }, + "5164": { + "op": "PUSH0" + }, + "5165": { + "op": "MLOAD" + }, + "5166": { + "op": "PUSH1", + "value": "0x20" + }, + "5168": { + "op": "PUSH2", + "value": "0x2A57" + }, + "5171": { + "op": "PUSH0" + }, + "5172": { + "op": "CODECOPY" + }, + "5173": { + "op": "PUSH0" + }, + "5174": { + "op": "MLOAD" + }, + "5175": { + "op": "SWAP1" + }, + "5176": { + "op": "PUSH0" + }, + "5177": { + "op": "MSTORE" + }, + "5178": { + "fn": "EIP712Upgradeable._getEIP712Storage", + "offset": [ + 2839, + 2860 + ], + "op": "SWAP2", + "path": "75" + }, + "5179": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1443" + }, + "5182": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5183": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2821" + }, + "5186": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "i", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "5187": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5188": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5189": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "5191": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5192": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5194": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5195": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5196": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DIV", + "path": "75" + }, + "5197": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MUL", + "path": "75" + }, + "5198": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5200": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5201": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "5203": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MLOAD", + "path": "75" + }, + "5204": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5205": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5206": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5207": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "5209": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5210": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5211": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP3", + "path": "75" + }, + "5212": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5213": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5214": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5215": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5216": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5217": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5219": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5220": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "5221": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5222": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "5223": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x146F" + }, + "5226": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5227": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2821" + }, + "5230": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "i", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "5231": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5232": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5233": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ISZERO", + "path": "75" + }, + "5234": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x14BA" + }, + "5237": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "5238": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5239": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "5241": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "LT", + "path": "75" + }, + "5242": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1491" + }, + "5245": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "5246": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x100" + }, + "5249": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5250": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "5251": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "5252": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DIV", + "path": "75" + }, + "5253": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MUL", + "path": "75" + }, + "5254": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "5255": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5256": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5257": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5259": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5260": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5261": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x14BA" + }, + "5264": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "5265": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5266": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "5267": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5268": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5269": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5270": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH0", + "path": "75" + }, + "5271": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5272": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5274": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH0", + "path": "75" + }, + "5275": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "KECCAK256", + "path": "75" + }, + "5276": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5277": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5278": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5279": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "5280": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5281": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5282": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5283": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1" + }, + "5285": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5286": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5287": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5289": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5290": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5291": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "5292": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "GT", + "path": "75" + }, + "5293": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x149D" + }, + "5296": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "5297": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "5298": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5299": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SUB", + "path": "75" + }, + "5300": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "5302": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "AND", + "path": "75" + }, + "5303": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "5304": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5305": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5306": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5307": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5308": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5309": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5310": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5311": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5312": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5313": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5314": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5315": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6300, + 6455 + ], + "op": "SWAP1", + "path": "75" + }, + "5316": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "o", + "offset": [ + 6300, + 6455 + ], + "op": "JUMP", + "path": "75" + }, + "5317": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6682, + 6843 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5318": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6826, + 6836 + ], + "op": "PUSH32", + "path": "75", + "statement": 54, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103" + }, + "5351": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "DUP1", + "path": "75" + }, + "5352": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "SLOAD", + "path": "75" + }, + "5353": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6739, + 6752 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "5355": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6739, + 6752 + ], + "op": "SWAP2", + "path": "75" + }, + "5356": { + "op": "PUSH0" + }, + "5357": { + "op": "MLOAD" + }, + "5358": { + "op": "PUSH1", + "value": "0x20" + }, + "5360": { + "op": "PUSH2", + "value": "0x2A57" + }, + "5363": { + "op": "PUSH0" + }, + "5364": { + "op": "CODECOPY" + }, + "5365": { + "op": "PUSH0" + }, + "5366": { + "op": "MLOAD" + }, + "5367": { + "op": "SWAP1" + }, + "5368": { + "op": "PUSH0" + }, + "5369": { + "op": "MSTORE" + }, + "5370": { + "fn": "EIP712Upgradeable._getEIP712Storage", + "offset": [ + 2839, + 2860 + ], + "op": "SWAP2", + "path": "75" + }, + "5371": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1443" + }, + "5374": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "SWAP1", + "path": "75" + }, + "5375": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2821" + }, + "5378": { + "fn": "EIP712Upgradeable._EIP712Version", + "jump": "i", + "offset": [ + 6819, + 6836 + ], + "op": "JUMP", + "path": "75" + }, + "5379": { + "op": "JUMPDEST" + }, + "5380": { + "op": "PUSH0" + }, + "5381": { + "op": "PUSH0" + }, + "5382": { + "op": "PUSH0" + }, + "5383": { + "op": "PUSH2", + "value": "0xF09" + }, + "5386": { + "op": "ADDRESS" + }, + "5387": { + "op": "PUSH2", + "value": "0x1C0B" + }, + "5390": { + "jump": "i", + "op": "JUMP" + }, + "5391": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3732, + 3935 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5392": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3817, + 3821 + ], + "op": "PUSH0", + "path": "113" + }, + "5393": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3876 + ], + "op": "PUSH2", + "path": "113", + "statement": 55, + "value": "0x1519" + }, + "5396": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3864, + 3875 + ], + "op": "DUP3", + "path": "113" + }, + "5397": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3863 + ], + "op": "PUSH2", + "path": "113", + "value": "0x1C5F" + }, + "5400": { + "fn": "TokenBoundMech.supportsInterface", + "jump": "i", + "offset": [ + 3840, + 3876 + ], + "op": "JUMP", + "path": "113" + }, + "5401": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3876 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5402": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "DUP1", + "path": "113" + }, + "5403": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "PUSH2", + "path": "113", + "value": "0x672" + }, + "5406": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "JUMPI", + "path": "113" + }, + "5407": { + "op": "POP" + }, + "5408": { + "op": "PUSH1", + "value": "0x1" + }, + "5410": { + "op": "PUSH1", + "value": "0x1" + }, + "5412": { + "op": "PUSH1", + "value": "0xE0" + }, + "5414": { + "op": "SHL" + }, + "5415": { + "op": "SUB" + }, + "5416": { + "op": "NOT" + }, + "5417": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "DUP3", + "path": "113" + }, + "5418": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "AND", + "path": "113" + }, + "5419": { + "op": "PUSH4", + "value": "0x6FAFF5F1" + }, + "5424": { + "op": "PUSH1", + "value": "0xE0" + }, + "5426": { + "op": "SHL" + }, + "5427": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "EQ", + "path": "113" + }, + "5428": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3833, + 3928 + ], + "op": "SWAP3", + "path": "113" + }, + "5429": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3732, + 3935 + ], + "op": "SWAP2", + "path": "113" + }, + "5430": { + "op": "POP" + }, + "5431": { + "op": "POP" + }, + "5432": { + "fn": "TokenBoundMech.supportsInterface", + "jump": "o", + "offset": [ + 3732, + 3935 + ], + "op": "JUMP", + "path": "113" + }, + "5433": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 2926, + 3890 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5434": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3096, + 3107 + ], + "op": "PUSH0", + "path": "99" + }, + "5435": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3096, + 3107 + ], + "op": "DUP1", + "path": "99" + }, + "5436": { + "fn": "HyperAccountCommitMinter._getHyperAccountCommitMinterStorage", + "offset": [ + 1075, + 1110 + ], + "op": "PUSH32", + "path": "99", + "value": "0x659D6B2D1CD4038BBDC740615487E3191DB8A386CA05E11A459FEDC97F38DF00" + }, + "5469": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3123, + 3204 + ], + "op": "SWAP1", + "path": "99" + }, + "5470": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3123, + 3204 + ], + "op": "POP", + "path": "99" + }, + "5471": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3215, + 3239 + ], + "op": "PUSH0", + "path": "99" + }, + "5472": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3243 + ], + "op": "DUP2", + "path": "99" + }, + "5473": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3251 + ], + "op": "PUSH0", + "path": "99" + }, + "5474": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3251 + ], + "op": "ADD", + "path": "99" + }, + "5475": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "PUSH0", + "path": "99" + }, + "5476": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "PUSH2", + "path": "99", + "value": "0x15A3" + }, + "5479": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3267, + 3271 + ], + "op": "DUP11", + "path": "99" + }, + "5480": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3267, + 3271 + ], + "op": "DUP11", + "path": "99" + }, + "5481": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP1", + "path": "99" + }, + "5482": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP1", + "path": "99" + }, + "5483": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "PUSH1", + "path": "99", + "value": "0x1F" + }, + "5485": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "ADD", + "path": "99" + }, + "5486": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "5488": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP1", + "path": "99" + }, + "5489": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP2", + "path": "99" + }, + "5490": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DIV", + "path": "99" + }, + "5491": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "MUL", + "path": "99" + }, + "5492": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "5494": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "ADD", + "path": "99" + }, + "5495": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5497": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "MLOAD", + "path": "99" + }, + "5498": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP1", + "path": "99" + }, + "5499": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP2", + "path": "99" + }, + "5500": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "ADD", + "path": "99" + }, + "5501": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5503": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "MSTORE", + "path": "99" + }, + "5504": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP1", + "path": "99" + }, + "5505": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP4", + "path": "99" + }, + "5506": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP3", + "path": "99" + }, + "5507": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP2", + "path": "99" + }, + "5508": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP1", + "path": "99" + }, + "5509": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP2", + "path": "99" + }, + "5510": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP2", + "path": "99" + }, + "5511": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "MSTORE", + "path": "99" + }, + "5512": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "5514": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "ADD", + "path": "99" + }, + "5515": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP4", + "path": "99" + }, + "5516": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP4", + "path": "99" + }, + "5517": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP1", + "path": "99" + }, + "5518": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP3", + "path": "99" + }, + "5519": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "DUP5", + "path": "99" + }, + "5520": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "CALLDATACOPY", + "path": "99" + }, + "5521": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "PUSH0", + "path": "99" + }, + "5522": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP3", + "path": "99" + }, + "5523": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "ADD", + "path": "99" + }, + "5524": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP2", + "path": "99" + }, + "5525": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP1", + "path": "99" + }, + "5526": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "SWAP2", + "path": "99" + }, + "5527": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "MSTORE", + "path": "99" + }, + "5528": { + "op": "POP" + }, + "5529": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3273, + 3283 + ], + "op": "CALLER", + "path": "99" + }, + "5530": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3273, + 3283 + ], + "op": "SWAP3", + "path": "99" + }, + "5531": { + "op": "POP" + }, + "5532": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3266 + ], + "op": "PUSH2", + "path": "99", + "value": "0x110C" + }, + "5535": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3266 + ], + "op": "SWAP2", + "path": "99" + }, + "5536": { + "op": "POP" + }, + "5537": { + "op": "POP" + }, + "5538": { + "fn": "HyperAccountCommitMinter._mint", + "jump": "i", + "offset": [ + 3252, + 3284 + ], + "op": "JUMP", + "path": "99" + }, + "5539": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3252, + 3284 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5540": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "DUP2", + "path": "99" + }, + "5541": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "MSTORE", + "path": "99" + }, + "5542": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "5544": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "ADD", + "path": "99" + }, + "5545": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "SWAP1", + "path": "99" + }, + "5546": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "DUP2", + "path": "99" + }, + "5547": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "MSTORE", + "path": "99" + }, + "5548": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "5550": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "ADD", + "path": "99" + }, + "5551": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "PUSH0", + "path": "99" + }, + "5552": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "KECCAK256", + "path": "99" + }, + "5553": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3242, + 3285 + ], + "op": "SLOAD", + "path": "99" + }, + "5554": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3215, + 3285 + ], + "op": "SWAP1", + "path": "99" + }, + "5555": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3215, + 3285 + ], + "op": "POP", + "path": "99" + }, + "5556": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3376, + 3392 + ], + "op": "DUP1", + "path": "99", + "statement": 56 + }, + "5557": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3396, + 3397 + ], + "op": "PUSH0", + "path": "99" + }, + "5558": { + "branch": 89, + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3376, + 3397 + ], + "op": "SUB", + "path": "99" + }, + "5559": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3372, + 3447 + ], + "op": "PUSH2", + "path": "99", + "value": "0x15D3" + }, + "5562": { + "branch": 89, + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3372, + 3447 + ], + "op": "JUMPI", + "path": "99" + }, + "5563": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5565": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "MLOAD", + "path": "99" + }, + "5566": { + "op": "PUSH4", + "value": "0x345512DF" + }, + "5571": { + "op": "PUSH1", + "value": "0xE2" + }, + "5573": { + "op": "SHL" + }, + "5574": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "DUP2", + "path": "99" + }, + "5575": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "MSTORE", + "path": "99" + }, + "5576": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "5578": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "ADD", + "path": "99" + }, + "5579": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5581": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "MLOAD", + "path": "99" + }, + "5582": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "DUP1", + "path": "99" + }, + "5583": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "SWAP2", + "path": "99" + }, + "5584": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "SUB", + "path": "99" + }, + "5585": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "SWAP1", + "path": "99" + }, + "5586": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3420, + 3436 + ], + "op": "REVERT", + "path": "99" + }, + "5587": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3372, + 3447 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5588": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3581, + 3596 + ], + "op": "TIMESTAMP", + "path": "99", + "statement": 57 + }, + "5589": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3565, + 3577 + ], + "op": "PUSH32", + "path": "99", + "value": "0x0" + }, + "5622": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3562 + ], + "op": "PUSH2", + "path": "99", + "value": "0x161F" + }, + "5625": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3550, + 3562 + ], + "op": "PUSH32", + "path": "99", + "value": "0x0" + }, + "5658": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3547 + ], + "op": "DUP5", + "path": "99" + }, + "5659": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3562 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2859" + }, + "5662": { + "fn": "HyperAccountCommitMinter._mint", + "jump": "i", + "offset": [ + 3531, + 3562 + ], + "op": "JUMP", + "path": "99" + }, + "5663": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3562 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5664": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3577 + ], + "op": "PUSH2", + "path": "99", + "value": "0x1629" + }, + "5667": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3577 + ], + "op": "SWAP2", + "path": "99" + }, + "5668": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3577 + ], + "op": "SWAP1", + "path": "99" + }, + "5669": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3577 + ], + "op": "PUSH2", + "path": "99", + "value": "0x27CD" + }, + "5672": { + "fn": "HyperAccountCommitMinter._mint", + "jump": "i", + "offset": [ + 3531, + 3577 + ], + "op": "JUMP", + "path": "99" + }, + "5673": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3577 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5674": { + "branch": 90, + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3531, + 3596 + ], + "op": "LT", + "path": "99" + }, + "5675": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3527, + 3644 + ], + "op": "PUSH2", + "path": "99", + "value": "0x1647" + }, + "5678": { + "branch": 90, + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3527, + 3644 + ], + "op": "JUMPI", + "path": "99" + }, + "5679": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5681": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "MLOAD", + "path": "99" + }, + "5682": { + "op": "PUSH4", + "value": "0x9E8DDD6D" + }, + "5687": { + "op": "PUSH1", + "value": "0xE0" + }, + "5689": { + "op": "SHL" + }, + "5690": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "DUP2", + "path": "99" + }, + "5691": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "MSTORE", + "path": "99" + }, + "5692": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "5694": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "ADD", + "path": "99" + }, + "5695": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5697": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "MLOAD", + "path": "99" + }, + "5698": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "DUP1", + "path": "99" + }, + "5699": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "SWAP2", + "path": "99" + }, + "5700": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "SUB", + "path": "99" + }, + "5701": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "SWAP1", + "path": "99" + }, + "5702": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3619, + 3633 + ], + "op": "REVERT", + "path": "99" + }, + "5703": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3527, + 3644 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5704": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3747, + 3762 + ], + "op": "TIMESTAMP", + "path": "99", + "statement": 58 + }, + "5705": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3728, + 3744 + ], + "op": "DUP2", + "path": "99" + }, + "5706": { + "branch": 91, + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3728, + 3762 + ], + "op": "LT", + "path": "99" + }, + "5707": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3724, + 3810 + ], + "op": "ISZERO", + "path": "99" + }, + "5708": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3724, + 3810 + ], + "op": "PUSH2", + "path": "99", + "value": "0x1668" + }, + "5711": { + "branch": 91, + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3724, + 3810 + ], + "op": "JUMPI", + "path": "99" + }, + "5712": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5714": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "MLOAD", + "path": "99" + }, + "5715": { + "op": "PUSH4", + "value": "0x716DBCC9" + }, + "5720": { + "op": "PUSH1", + "value": "0xE0" + }, + "5722": { + "op": "SHL" + }, + "5723": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "DUP2", + "path": "99" + }, + "5724": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "MSTORE", + "path": "99" + }, + "5725": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "5727": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "ADD", + "path": "99" + }, + "5728": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5730": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "MLOAD", + "path": "99" + }, + "5731": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "DUP1", + "path": "99" + }, + "5732": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "SWAP2", + "path": "99" + }, + "5733": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "SUB", + "path": "99" + }, + "5734": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "SWAP1", + "path": "99" + }, + "5735": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3785, + 3799 + ], + "op": "REVERT", + "path": "99" + }, + "5736": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3724, + 3810 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5737": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH1", + "path": "99", + "statement": 59, + "value": "0x40" + }, + "5739": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "MLOAD", + "path": "99" + }, + "5740": { + "op": "PUSH4", + "value": "0x94CEFED" + }, + "5745": { + "op": "PUSH1", + "value": "0xE0" + }, + "5747": { + "op": "SHL" + }, + "5748": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP2", + "path": "99" + }, + "5749": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "MSTORE", + "path": "99" + }, + "5750": { + "op": "PUSH1", + "value": "0x1" + }, + "5752": { + "op": "PUSH1", + "value": "0x1" + }, + "5754": { + "op": "PUSH1", + "value": "0xA0" + }, + "5756": { + "op": "SHL" + }, + "5757": { + "op": "SUB" + }, + "5758": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3836 + ], + "op": "PUSH32", + "path": "99", + "value": "0x0" + }, + "5791": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3841 + ], + "op": "AND", + "path": "99" + }, + "5792": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3841 + ], + "op": "SWAP1", + "path": "99" + }, + "5793": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3841 + ], + "op": "PUSH4", + "path": "99", + "value": "0x94CEFED" + }, + "5798": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3841 + ], + "op": "SWAP1", + "path": "99" + }, + "5799": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH2", + "path": "99", + "value": "0x16BE" + }, + "5802": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "SWAP1", + "path": "99" + }, + "5803": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3842, + 3844 + ], + "op": "DUP13", + "path": "99" + }, + "5804": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3842, + 3844 + ], + "op": "SWAP1", + "path": "99" + }, + "5805": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3846, + 3850 + ], + "op": "DUP13", + "path": "99" + }, + "5806": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3846, + 3850 + ], + "op": "SWAP1", + "path": "99" + }, + "5807": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3846, + 3850 + ], + "op": "DUP13", + "path": "99" + }, + "5808": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3846, + 3850 + ], + "op": "SWAP1", + "path": "99" + }, + "5809": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3852, + 3866 + ], + "op": "DUP13", + "path": "99" + }, + "5810": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3852, + 3866 + ], + "op": "SWAP1", + "path": "99" + }, + "5811": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3852, + 3866 + ], + "op": "DUP13", + "path": "99" + }, + "5812": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3852, + 3866 + ], + "op": "SWAP1", + "path": "99" + }, + "5813": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3868, + 3882 + ], + "op": "DUP13", + "path": "99" + }, + "5814": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3868, + 3882 + ], + "op": "SWAP1", + "path": "99" + }, + "5815": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH1", + "path": "99", + "value": "0x4" + }, + "5817": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "ADD", + "path": "99" + }, + "5818": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2894" + }, + "5821": { + "fn": "HyperAccountCommitMinter._mint", + "jump": "i", + "offset": [ + 3827, + 3883 + ], + "op": "JUMP", + "path": "99" + }, + "5822": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5823": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH1", + "path": "99", + "value": "0x20" + }, + "5825": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5827": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "MLOAD", + "path": "99" + }, + "5828": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP1", + "path": "99" + }, + "5829": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP4", + "path": "99" + }, + "5830": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "SUB", + "path": "99" + }, + "5831": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP2", + "path": "99" + }, + "5832": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH0", + "path": "99" + }, + "5833": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP8", + "path": "99" + }, + "5834": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "GAS", + "path": "99" + }, + "5835": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "CALL", + "path": "99" + }, + "5836": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "ISZERO", + "path": "99" + }, + "5837": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP1", + "path": "99" + }, + "5838": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "ISZERO", + "path": "99" + }, + "5839": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH2", + "path": "99", + "value": "0x16DA" + }, + "5842": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "JUMPI", + "path": "99" + }, + "5843": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "RETURNDATASIZE", + "path": "99" + }, + "5844": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH0", + "path": "99" + }, + "5845": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH0", + "path": "99" + }, + "5846": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "RETURNDATACOPY", + "path": "99" + }, + "5847": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "RETURNDATASIZE", + "path": "99" + }, + "5848": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH0", + "path": "99" + }, + "5849": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "REVERT", + "path": "99" + }, + "5850": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5851": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "POP", + "path": "99" + }, + "5852": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "POP", + "path": "99" + }, + "5853": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "POP", + "path": "99" + }, + "5854": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "POP", + "path": "99" + }, + "5855": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5857": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "MLOAD", + "path": "99" + }, + "5858": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "RETURNDATASIZE", + "path": "99" + }, + "5859": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH1", + "path": "99", + "value": "0x1F" + }, + "5861": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "NOT", + "path": "99" + }, + "5862": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH1", + "path": "99", + "value": "0x1F" + }, + "5864": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP3", + "path": "99" + }, + "5865": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "ADD", + "path": "99" + }, + "5866": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "AND", + "path": "99" + }, + "5867": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP3", + "path": "99" + }, + "5868": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "ADD", + "path": "99" + }, + "5869": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP1", + "path": "99" + }, + "5870": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH1", + "path": "99", + "value": "0x40" + }, + "5872": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "MSTORE", + "path": "99" + }, + "5873": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "POP", + "path": "99" + }, + "5874": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "DUP2", + "path": "99" + }, + "5875": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "ADD", + "path": "99" + }, + "5876": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "SWAP1", + "path": "99" + }, + "5877": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH2", + "path": "99", + "value": "0x16FE" + }, + "5880": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "SWAP2", + "path": "99" + }, + "5881": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "SWAP1", + "path": "99" + }, + "5882": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "PUSH2", + "path": "99", + "value": "0x2787" + }, + "5885": { + "fn": "HyperAccountCommitMinter._mint", + "jump": "i", + "offset": [ + 3827, + 3883 + ], + "op": "JUMP", + "path": "99" + }, + "5886": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3827, + 3883 + ], + "op": "JUMPDEST", + "path": "99" + }, + "5887": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 3820, + 3883 + ], + "op": "SWAP10", + "path": "99" + }, + "5888": { + "fn": "HyperAccountCommitMinter._mint", + "offset": [ + 2926, + 3890 + ], + "op": "SWAP9", + "path": "99" + }, + "5889": { + "op": "POP" + }, + "5890": { + "op": "POP" + }, + "5891": { + "op": "POP" + }, + "5892": { + "op": "POP" + }, + "5893": { + "op": "POP" + }, + "5894": { + "op": "POP" + }, + "5895": { + "op": "POP" + }, + "5896": { + "op": "POP" + }, + "5897": { + "op": "POP" + }, + "5898": { + "fn": "HyperAccountCommitMinter._mint", + "jump": "o", + "offset": [ + 2926, + 3890 + ], + "op": "JUMP", + "path": "99" + }, + "5899": { + "op": "JUMPDEST" + }, + "5900": { + "op": "PUSH0" + }, + "5901": { + "op": "DUP1" + }, + "5902": { + "op": "DUP1" + }, + "5903": { + "op": "PUSH32", + "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" + }, + "5936": { + "op": "DUP5" + }, + "5937": { + "op": "GT" + }, + "5938": { + "op": "ISZERO" + }, + "5939": { + "op": "PUSH2", + "value": "0x1744" + }, + "5942": { + "op": "JUMPI" + }, + "5943": { + "op": "POP" + }, + "5944": { + "op": "PUSH0" + }, + "5945": { + "op": "SWAP2" + }, + "5946": { + "op": "POP" + }, + "5947": { + "op": "PUSH1", + "value": "0x3" + }, + "5949": { + "op": "SWAP1" + }, + "5950": { + "op": "POP" + }, + "5951": { + "op": "DUP3" + }, + "5952": { + "op": "PUSH2", + "value": "0x17C9" + }, + "5955": { + "op": "JUMP" + }, + "5956": { + "op": "JUMPDEST" + }, + "5957": { + "op": "PUSH1", + "value": "0x40" + }, + "5959": { + "op": "DUP1" + }, + "5960": { + "op": "MLOAD" + }, + "5961": { + "op": "PUSH0" + }, + "5962": { + "op": "DUP1" + }, + "5963": { + "op": "DUP3" + }, + "5964": { + "op": "MSTORE" + }, + "5965": { + "op": "PUSH1", + "value": "0x20" + }, + "5967": { + "op": "DUP3" + }, + "5968": { + "op": "ADD" + }, + "5969": { + "op": "DUP1" + }, + "5970": { + "op": "DUP5" + }, + "5971": { + "op": "MSTORE" + }, + "5972": { + "op": "DUP11" + }, + "5973": { + "op": "SWAP1" + }, + "5974": { + "op": "MSTORE" + }, + "5975": { + "op": "PUSH1", + "value": "0xFF" + }, + "5977": { + "op": "DUP10" + }, + "5978": { + "op": "AND" + }, + "5979": { + "op": "SWAP3" + }, + "5980": { + "op": "DUP3" + }, + "5981": { + "op": "ADD" + }, + "5982": { + "op": "SWAP3" + }, + "5983": { + "op": "SWAP1" + }, + "5984": { + "op": "SWAP3" + }, + "5985": { + "op": "MSTORE" + }, + "5986": { + "op": "PUSH1", + "value": "0x60" + }, + "5988": { + "op": "DUP2" + }, + "5989": { + "op": "ADD" + }, + "5990": { + "op": "DUP8" + }, + "5991": { + "op": "SWAP1" + }, + "5992": { + "op": "MSTORE" + }, + "5993": { + "op": "PUSH1", + "value": "0x80" + }, + "5995": { + "op": "DUP2" + }, + "5996": { + "op": "ADD" + }, + "5997": { + "op": "DUP7" + }, + "5998": { + "op": "SWAP1" + }, + "5999": { + "op": "MSTORE" + }, + "6000": { + "op": "PUSH1", + "value": "0x1" + }, + "6002": { + "op": "SWAP1" + }, + "6003": { + "op": "PUSH1", + "value": "0xA0" + }, + "6005": { + "op": "ADD" + }, + "6006": { + "op": "PUSH1", + "value": "0x20" + }, + "6008": { + "op": "PUSH1", + "value": "0x40" + }, + "6010": { + "op": "MLOAD" + }, + "6011": { + "op": "PUSH1", + "value": "0x20" + }, + "6013": { + "op": "DUP2" + }, + "6014": { + "op": "SUB" + }, + "6015": { + "op": "SWAP1" + }, + "6016": { + "op": "DUP1" + }, + "6017": { + "op": "DUP5" + }, + "6018": { + "op": "SUB" + }, + "6019": { + "op": "SWAP1" + }, + "6020": { + "op": "DUP6" + }, + "6021": { + "op": "GAS" + }, + "6022": { + "op": "STATICCALL" + }, + "6023": { + "op": "ISZERO" + }, + "6024": { + "op": "DUP1" + }, + "6025": { + "op": "ISZERO" + }, + "6026": { + "op": "PUSH2", + "value": "0x1795" + }, + "6029": { + "op": "JUMPI" + }, + "6030": { + "op": "RETURNDATASIZE" + }, + "6031": { + "op": "PUSH0" + }, + "6032": { + "op": "PUSH0" + }, + "6033": { + "op": "RETURNDATACOPY" + }, + "6034": { + "op": "RETURNDATASIZE" + }, + "6035": { + "op": "PUSH0" + }, + "6036": { + "op": "REVERT" + }, + "6037": { + "op": "JUMPDEST" + }, + "6038": { + "op": "POP" + }, + "6039": { + "op": "POP" + }, + "6040": { + "op": "PUSH1", + "value": "0x40" + }, + "6042": { + "op": "MLOAD" + }, + "6043": { + "op": "PUSH1", + "value": "0x1F" + }, + "6045": { + "op": "NOT" + }, + "6046": { + "op": "ADD" + }, + "6047": { + "op": "MLOAD" + }, + "6048": { + "op": "SWAP2" + }, + "6049": { + "op": "POP" + }, + "6050": { + "op": "POP" + }, + "6051": { + "op": "PUSH1", + "value": "0x1" + }, + "6053": { + "op": "PUSH1", + "value": "0x1" + }, + "6055": { + "op": "PUSH1", + "value": "0xA0" + }, + "6057": { + "op": "SHL" + }, + "6058": { + "op": "SUB" + }, + "6059": { + "op": "DUP2" + }, + "6060": { + "op": "AND" + }, + "6061": { + "op": "PUSH2", + "value": "0x17C0" + }, + "6064": { + "op": "JUMPI" + }, + "6065": { + "op": "POP" + }, + "6066": { + "op": "PUSH0" + }, + "6067": { + "op": "SWAP3" + }, + "6068": { + "op": "POP" + }, + "6069": { + "op": "PUSH1", + "value": "0x1" + }, + "6071": { + "op": "SWAP2" + }, + "6072": { + "op": "POP" + }, + "6073": { + "op": "DUP3" + }, + "6074": { + "op": "SWAP1" + }, + "6075": { + "op": "POP" + }, + "6076": { + "op": "PUSH2", + "value": "0x17C9" + }, + "6079": { + "op": "JUMP" + }, + "6080": { + "op": "JUMPDEST" + }, + "6081": { + "op": "SWAP3" + }, + "6082": { + "op": "POP" + }, + "6083": { + "op": "PUSH0" + }, + "6084": { + "op": "SWAP2" + }, + "6085": { + "op": "POP" + }, + "6086": { + "op": "DUP2" + }, + "6087": { + "op": "SWAP1" + }, + "6088": { + "op": "POP" + }, + "6089": { + "op": "JUMPDEST" + }, + "6090": { + "op": "SWAP5" + }, + "6091": { + "op": "POP" + }, + "6092": { + "op": "SWAP5" + }, + "6093": { + "op": "POP" + }, + "6094": { + "op": "SWAP5" + }, + "6095": { + "op": "SWAP2" + }, + "6096": { + "op": "POP" + }, + "6097": { + "op": "POP" + }, + "6098": { + "jump": "o", + "op": "JUMP" + }, + "6099": { + "op": "JUMPDEST" + }, + "6100": { + "op": "PUSH0" + }, + "6101": { + "op": "DUP3" + }, + "6102": { + "op": "PUSH1", + "value": "0x3" + }, + "6104": { + "op": "DUP2" + }, + "6105": { + "op": "GT" + }, + "6106": { + "op": "ISZERO" + }, + "6107": { + "op": "PUSH2", + "value": "0x17E6" + }, + "6110": { + "op": "JUMPI" + }, + "6111": { + "op": "PUSH2", + "value": "0x17E6" + }, + "6114": { + "op": "PUSH2", + "value": "0x28E7" + }, + "6117": { + "jump": "i", + "op": "JUMP" + }, + "6118": { + "op": "JUMPDEST" + }, + "6119": { + "op": "SUB" + }, + "6120": { + "op": "PUSH2", + "value": "0x17EF" + }, + "6123": { + "op": "JUMPI" + }, + "6124": { + "op": "POP" + }, + "6125": { + "op": "POP" + }, + "6126": { + "jump": "o", + "op": "JUMP" + }, + "6127": { + "op": "JUMPDEST" + }, + "6128": { + "op": "PUSH1", + "value": "0x1" + }, + "6130": { + "op": "DUP3" + }, + "6131": { + "op": "PUSH1", + "value": "0x3" + }, + "6133": { + "op": "DUP2" + }, + "6134": { + "op": "GT" + }, + "6135": { + "op": "ISZERO" + }, + "6136": { + "op": "PUSH2", + "value": "0x1803" + }, + "6139": { + "op": "JUMPI" + }, + "6140": { + "op": "PUSH2", + "value": "0x1803" + }, + "6143": { + "op": "PUSH2", + "value": "0x28E7" + }, + "6146": { + "jump": "i", + "op": "JUMP" + }, + "6147": { + "op": "JUMPDEST" + }, + "6148": { + "op": "SUB" + }, + "6149": { + "op": "PUSH2", + "value": "0x1821" + }, + "6152": { + "op": "JUMPI" + }, + "6153": { + "op": "PUSH1", + "value": "0x40" + }, + "6155": { + "op": "MLOAD" + }, + "6156": { + "op": "PUSH4", + "value": "0xF645EEDF" + }, + "6161": { + "op": "PUSH1", + "value": "0xE0" + }, + "6163": { + "op": "SHL" + }, + "6164": { + "op": "DUP2" + }, + "6165": { + "op": "MSTORE" + }, + "6166": { + "op": "PUSH1", + "value": "0x4" + }, + "6168": { + "op": "ADD" + }, + "6169": { + "op": "PUSH1", + "value": "0x40" + }, + "6171": { + "op": "MLOAD" + }, + "6172": { + "op": "DUP1" + }, + "6173": { + "op": "SWAP2" + }, + "6174": { + "op": "SUB" + }, + "6175": { + "op": "SWAP1" + }, + "6176": { + "op": "REVERT" + }, + "6177": { + "op": "JUMPDEST" + }, + "6178": { + "op": "PUSH1", + "value": "0x2" + }, + "6180": { + "op": "DUP3" + }, + "6181": { + "op": "PUSH1", + "value": "0x3" + }, + "6183": { + "op": "DUP2" + }, + "6184": { + "op": "GT" + }, + "6185": { + "op": "ISZERO" + }, + "6186": { + "op": "PUSH2", + "value": "0x1835" + }, + "6189": { + "op": "JUMPI" + }, + "6190": { + "op": "PUSH2", + "value": "0x1835" + }, + "6193": { + "op": "PUSH2", + "value": "0x28E7" + }, + "6196": { + "jump": "i", + "op": "JUMP" + }, + "6197": { + "op": "JUMPDEST" + }, + "6198": { + "op": "SUB" + }, + "6199": { + "op": "PUSH2", + "value": "0x1856" + }, + "6202": { + "op": "JUMPI" + }, + "6203": { + "op": "PUSH1", + "value": "0x40" + }, + "6205": { + "op": "MLOAD" + }, + "6206": { + "op": "PUSH4", + "value": "0xFCE698F7" + }, + "6211": { + "op": "PUSH1", + "value": "0xE0" + }, + "6213": { + "op": "SHL" + }, + "6214": { + "op": "DUP2" + }, + "6215": { + "op": "MSTORE" + }, + "6216": { + "op": "PUSH1", + "value": "0x4" + }, + "6218": { + "op": "DUP2" + }, + "6219": { + "op": "ADD" + }, + "6220": { + "op": "DUP3" + }, + "6221": { + "op": "SWAP1" + }, + "6222": { + "op": "MSTORE" + }, + "6223": { + "op": "PUSH1", + "value": "0x24" + }, + "6225": { + "op": "ADD" + }, + "6226": { + "op": "PUSH2", + "value": "0x925" + }, + "6229": { + "op": "JUMP" + }, + "6230": { + "op": "JUMPDEST" + }, + "6231": { + "op": "PUSH1", + "value": "0x3" + }, + "6233": { + "op": "DUP3" + }, + "6234": { + "op": "PUSH1", + "value": "0x3" + }, + "6236": { + "op": "DUP2" + }, + "6237": { + "op": "GT" + }, + "6238": { + "op": "ISZERO" + }, + "6239": { + "op": "PUSH2", + "value": "0x186A" + }, + "6242": { + "op": "JUMPI" + }, + "6243": { + "op": "PUSH2", + "value": "0x186A" + }, + "6246": { + "op": "PUSH2", + "value": "0x28E7" + }, + "6249": { + "jump": "i", + "op": "JUMP" + }, + "6250": { + "op": "JUMPDEST" + }, + "6251": { + "op": "SUB" + }, + "6252": { + "op": "PUSH2", + "value": "0x959" + }, + "6255": { + "op": "JUMPI" + }, + "6256": { + "op": "PUSH1", + "value": "0x40" + }, + "6258": { + "op": "MLOAD" + }, + "6259": { + "op": "PUSH4", + "value": "0x35E2F383" + }, + "6264": { + "op": "PUSH1", + "value": "0xE2" + }, + "6266": { + "op": "SHL" + }, + "6267": { + "op": "DUP2" + }, + "6268": { + "op": "MSTORE" + }, + "6269": { + "op": "PUSH1", + "value": "0x4" + }, + "6271": { + "op": "DUP2" + }, + "6272": { + "op": "ADD" + }, + "6273": { + "op": "DUP3" + }, + "6274": { + "op": "SWAP1" + }, + "6275": { + "op": "MSTORE" + }, + "6276": { + "op": "PUSH1", + "value": "0x24" + }, + "6278": { + "op": "ADD" + }, + "6279": { + "op": "PUSH2", + "value": "0x925" + }, + "6282": { + "op": "JUMP" + }, + "6283": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3600, + 3803 + ], + "op": "JUMPDEST", + "path": "101" + }, + "6284": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3663, + 3673 + ], + "op": "PUSH0", + "path": "101" + }, + "6285": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3703, + 3704 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "6287": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3689, + 3704 + ], + "op": "DUP3", + "path": "101" + }, + "6288": { + "branch": 94, + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3689, + 3704 + ], + "op": "LT", + "path": "101" + }, + "6289": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "ISZERO", + "path": "101" + }, + "6290": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "PUSH2", + "path": "101", + "value": "0x189C" + }, + "6293": { + "branch": 94, + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "JUMPI", + "path": "101" + }, + "6294": { + "op": "POP" + }, + "6295": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3720, + 3721 + ], + "op": "PUSH0", + "path": "101", + "statement": 60 + }, + "6296": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3706, + 3722 + ], + "op": "PUSH2", + "path": "101", + "value": "0x672" + }, + "6299": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3706, + 3722 + ], + "op": "JUMP", + "path": "101" + }, + "6300": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "JUMPDEST", + "path": "101" + }, + "6301": { + "op": "POP" + }, + "6302": { + "op": "POP" + }, + "6303": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3762, + 3787 + ], + "op": "CALLDATALOAD", + "path": "101" + }, + "6304": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3762, + 3787 + ], + "op": "SWAP1", + "path": "101" + }, + "6305": { + "fn": "HyperAccountMinterUpgradable._selector", + "jump": "o", + "offset": [ + 3600, + 3803 + ], + "op": "JUMP", + "path": "101" + }, + "6306": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 525, + 1349 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6307": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "PUSH0", + "path": "96" + }, + "6308": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "DUP1", + "path": "96" + }, + "6309": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "DUP1", + "path": "96" + }, + "6310": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH2", + "path": "96", + "value": "0x18F0" + }, + "6313": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 787, + 797 + ], + "op": "DUP5", + "path": "96" + }, + "6314": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x18B7" + }, + "6317": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x100" + }, + "6320": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "DUP9", + "path": "96" + }, + "6321": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "ADD", + "path": "96" + }, + "6322": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 805 + ], + "op": "DUP9", + "path": "96" + }, + "6323": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x2745" + }, + "6326": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 799, + 815 + ], + "op": "JUMP", + "path": "96" + }, + "6327": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6328": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "6329": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "6330": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x1F" + }, + "6332": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "6333": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "6335": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "6336": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "6337": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DIV", + "path": "96" + }, + "6338": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MUL", + "path": "96" + }, + "6339": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "6341": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "6342": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x40" + }, + "6344": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MLOAD", + "path": "96" + }, + "6345": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "6346": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "6347": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "6348": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x40" + }, + "6350": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "6351": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "6352": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP4", + "path": "96" + }, + "6353": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "6354": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "6355": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "6356": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "6357": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "6358": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "6359": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "6361": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "6362": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP4", + "path": "96" + }, + "6363": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP4", + "path": "96" + }, + "6364": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "6365": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP3", + "path": "96" + }, + "6366": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP5", + "path": "96" + }, + "6367": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "CALLDATACOPY", + "path": "96" + }, + "6368": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH0", + "path": "96" + }, + "6369": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "6370": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "6371": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "6372": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "6373": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "6374": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "6375": { + "op": "POP" + }, + "6376": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 786 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1D00" + }, + "6379": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 786 + ], + "op": "SWAP3", + "path": "96" + }, + "6380": { + "op": "POP" + }, + "6381": { + "op": "POP" + }, + "6382": { + "op": "POP" + }, + "6383": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 770, + 816 + ], + "op": "JUMP", + "path": "96" + }, + "6384": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6385": { + "op": "POP" + }, + "6386": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "6387": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "6388": { + "op": "POP" + }, + "6389": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "6390": { + "op": "POP" + }, + "6391": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 840, + 866 + ], + "op": "PUSH0", + "path": "96" + }, + "6392": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 836 + ], + "op": "DUP2", + "path": "96" + }, + "6393": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH1", + "path": "96", + "value": "0x3" + }, + "6395": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "DUP2", + "path": "96" + }, + "6396": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "GT", + "path": "96" + }, + "6397": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "ISZERO", + "path": "96" + }, + "6398": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1909" + }, + "6401": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "JUMPI", + "path": "96" + }, + "6402": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1909" + }, + "6405": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x28E7" + }, + "6408": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 831, + 866 + ], + "op": "JUMP", + "path": "96" + }, + "6409": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6410": { + "branch": 85, + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "EQ", + "path": "96" + }, + "6411": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "DUP1", + "path": "96" + }, + "6412": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "ISZERO", + "path": "96" + }, + "6413": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "PUSH2", + "path": "96", + "value": "0x191A" + }, + "6416": { + "branch": 85, + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "JUMPI", + "path": "96" + }, + "6417": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "POP", + "path": "96" + }, + "6418": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 897 + ], + "op": "PUSH2", + "path": "96", + "value": "0x191A" + }, + "6421": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 881, + 896 + ], + "op": "DUP3", + "path": "96" + }, + "6422": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 880 + ], + "op": "PUSH2", + "path": "96", + "value": "0x9C9" + }, + "6425": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 870, + 897 + ], + "op": "JUMP", + "path": "96" + }, + "6426": { + "branch": 86, + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 897 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6427": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "ISZERO", + "path": "96" + }, + "6428": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1929" + }, + "6431": { + "branch": 86, + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "JUMPI", + "path": "96" + }, + "6432": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "6433": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "SWAP3", + "path": "96", + "statement": 61 + }, + "6434": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "6435": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "6436": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "6437": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "PUSH2", + "path": "96", + "value": "0x672" + }, + "6440": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "JUMP", + "path": "96" + }, + "6441": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6442": { + "op": "PUSH32", + "value": "0x19457468657265756D205369676E6564204D6573736167653A0A333200000000" + }, + "6475": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1021, + 1033 + ], + "op": "PUSH0", + "path": "96" + }, + "6476": { + "op": "SWAP1" + }, + "6477": { + "op": "DUP2" + }, + "6478": { + "op": "MSTORE" + }, + "6479": { + "op": "PUSH1", + "value": "0x1C" + }, + "6481": { + "op": "DUP6" + }, + "6482": { + "op": "SWAP1" + }, + "6483": { + "op": "MSTORE" + }, + "6484": { + "op": "PUSH1", + "value": "0x3C" + }, + "6486": { + "op": "SWAP1" + }, + "6487": { + "op": "KECCAK256" + }, + "6488": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1125, + 1165 + ], + "op": "PUSH2", + "path": "96", + "statement": 62, + "value": "0x1969" + }, + "6491": { + "op": "DUP2" + }, + "6492": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x18B7" + }, + "6495": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x100" + }, + "6498": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "DUP10", + "path": "96" + }, + "6499": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "ADD", + "path": "96" + }, + "6500": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "DUP10", + "path": "96" + }, + "6501": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x2745" + }, + "6504": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1148, + 1164 + ], + "op": "JUMP", + "path": "96" + }, + "6505": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1125, + 1165 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6506": { + "op": "POP" + }, + "6507": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP1", + "path": "96" + }, + "6508": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP4", + "path": "96" + }, + "6509": { + "op": "POP" + }, + "6510": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP2", + "path": "96" + }, + "6511": { + "op": "POP" + }, + "6512": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1189, + 1215 + ], + "op": "PUSH0", + "path": "96" + }, + "6513": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1185 + ], + "op": "DUP3", + "path": "96" + }, + "6514": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH1", + "path": "96", + "value": "0x3" + }, + "6516": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "DUP2", + "path": "96" + }, + "6517": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "GT", + "path": "96" + }, + "6518": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "ISZERO", + "path": "96" + }, + "6519": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1982" + }, + "6522": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "JUMPI", + "path": "96" + }, + "6523": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1982" + }, + "6526": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x28E7" + }, + "6529": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1180, + 1215 + ], + "op": "JUMP", + "path": "96" + }, + "6530": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6531": { + "branch": 87, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "EQ", + "path": "96" + }, + "6532": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "DUP1", + "path": "96" + }, + "6533": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "ISZERO", + "path": "96" + }, + "6534": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1993" + }, + "6537": { + "branch": 87, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "JUMPI", + "path": "96" + }, + "6538": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "POP", + "path": "96" + }, + "6539": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1246 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1993" + }, + "6542": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1230, + 1245 + ], + "op": "DUP4", + "path": "96" + }, + "6543": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1229 + ], + "op": "PUSH2", + "path": "96", + "value": "0x9C9" + }, + "6546": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1219, + 1246 + ], + "op": "JUMP", + "path": "96" + }, + "6547": { + "branch": 88, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1246 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6548": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "ISZERO", + "path": "96" + }, + "6549": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "PUSH2", + "path": "96", + "value": "0x19A3" + }, + "6552": { + "branch": 88, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "JUMPI", + "path": "96" + }, + "6553": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "6554": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "SWAP4", + "path": "96", + "statement": 63 + }, + "6555": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "6556": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "6557": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "6558": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "6559": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "PUSH2", + "path": "96", + "value": "0x672" + }, + "6562": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "JUMP", + "path": "96" + }, + "6563": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6564": { + "op": "POP" + }, + "6565": { + "offset": [ + 785, + 786 + ], + "op": "PUSH1", + "path": "109", + "value": "0x1" + }, + "6567": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 785, + 786 + ], + "op": "SWAP6", + "path": "109" + }, + "6568": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 525, + 1349 + ], + "op": "SWAP5", + "path": "96" + }, + "6569": { + "op": "POP" + }, + "6570": { + "op": "POP" + }, + "6571": { + "op": "POP" + }, + "6572": { + "op": "POP" + }, + "6573": { + "op": "POP" + }, + "6574": { + "fn": "HyperAccount._validateSignature", + "jump": "o", + "offset": [ + 525, + 1349 + ], + "op": "JUMP", + "path": "96" + }, + "6575": { + "op": "JUMPDEST" + }, + "6576": { + "op": "DUP1" + }, + "6577": { + "op": "MLOAD" + }, + "6578": { + "op": "PUSH1", + "value": "0x20" + }, + "6580": { + "op": "DUP3" + }, + "6581": { + "op": "ADD" + }, + "6582": { + "op": "REVERT" + }, + "6583": { + "op": "JUMPDEST" + }, + "6584": { + "op": "PUSH2", + "value": "0x19C0" + }, + "6587": { + "op": "DUP3" + }, + "6588": { + "op": "PUSH2", + "value": "0x1D49" + }, + "6591": { + "jump": "i", + "op": "JUMP" + }, + "6592": { + "op": "JUMPDEST" + }, + "6593": { + "op": "PUSH1", + "value": "0x40" + }, + "6595": { + "op": "MLOAD" + }, + "6596": { + "op": "PUSH1", + "value": "0x1" + }, + "6598": { + "op": "PUSH1", + "value": "0x1" + }, + "6600": { + "op": "PUSH1", + "value": "0xA0" + }, + "6602": { + "op": "SHL" + }, + "6603": { + "op": "SUB" + }, + "6604": { + "op": "DUP4" + }, + "6605": { + "op": "AND" + }, + "6606": { + "op": "SWAP1" + }, + "6607": { + "op": "PUSH32", + "value": "0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B" + }, + "6640": { + "op": "SWAP1" + }, + "6641": { + "op": "PUSH0" + }, + "6642": { + "op": "SWAP1" + }, + "6643": { + "op": "LOG2" + }, + "6644": { + "op": "DUP1" + }, + "6645": { + "op": "MLOAD" + }, + "6646": { + "op": "ISZERO" + }, + "6647": { + "op": "PUSH2", + "value": "0x1A04" + }, + "6650": { + "op": "JUMPI" + }, + "6651": { + "op": "PUSH2", + "value": "0x1346" + }, + "6654": { + "op": "DUP3" + }, + "6655": { + "op": "DUP3" + }, + "6656": { + "op": "PUSH2", + "value": "0x1DAC" + }, + "6659": { + "jump": "i", + "op": "JUMP" + }, + "6660": { + "op": "JUMPDEST" + }, + "6661": { + "op": "PUSH2", + "value": "0x959" + }, + "6664": { + "op": "PUSH2", + "value": "0x1E1E" + }, + "6667": { + "jump": "i", + "op": "JUMP" + }, + "6668": { + "fn": "Mech._exec", + "offset": [ + 3995, + 4494 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6669": { + "fn": "Mech._exec", + "offset": [ + 4161, + 4173 + ], + "op": "PUSH0", + "path": "111" + }, + "6670": { + "fn": "Mech._exec", + "offset": [ + 4175, + 4198 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "6672": { + "offset": [ + 1240, + 1262 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1A18" + }, + "6675": { + "offset": [ + 1251, + 1261 + ], + "op": "CALLER", + "path": "111" + }, + "6676": { + "offset": [ + 1240, + 1250 + ], + "op": "PUSH2", + "path": "111", + "value": "0x9C9" + }, + "6679": { + "jump": "i", + "offset": [ + 1240, + 1262 + ], + "op": "JUMP", + "path": "111" + }, + "6680": { + "branch": 100, + "fn": "Mech._exec", + "offset": [ + 1240, + 1262 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6681": { + "offset": [ + 1239, + 1262 + ], + "op": "ISZERO", + "path": "111" + }, + "6682": { + "offset": [ + 1239, + 1301 + ], + "op": "DUP1", + "path": "111" + }, + "6683": { + "fn": "Mech._exec", + "offset": [ + 1239, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "6684": { + "fn": "Mech._exec", + "offset": [ + 1239, + 1301 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1A39" + }, + "6687": { + "branch": 100, + "offset": [ + 1239, + 1301 + ], + "op": "JUMPI", + "path": "111" + }, + "6688": { + "op": "POP" + }, + "6689": { + "offset": [ + 1266, + 1276 + ], + "op": "CALLER", + "path": "111" + }, + "6690": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "6711": { + "offset": [ + 1266, + 1301 + ], + "op": "EQ", + "path": "111" + }, + "6712": { + "branch": 101, + "fn": "Mech._exec", + "offset": [ + 1266, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "6713": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6714": { + "offset": [ + 1235, + 1360 + ], + "op": "ISZERO", + "path": "111" + }, + "6715": { + "fn": "Mech._exec", + "offset": [ + 1235, + 1360 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1A57" + }, + "6718": { + "branch": 101, + "offset": [ + 1235, + 1360 + ], + "op": "JUMPI", + "path": "111" + }, + "6719": { + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6721": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "6722": { + "op": "PUSH4", + "value": "0x47802953" + }, + "6727": { + "op": "PUSH1", + "value": "0xE1" + }, + "6729": { + "op": "SHL" + }, + "6730": { + "offset": [ + 1324, + 1349 + ], + "op": "DUP2", + "path": "111" + }, + "6731": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MSTORE", + "path": "111" + }, + "6732": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "6734": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "ADD", + "path": "111" + }, + "6735": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6737": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "6738": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "DUP1", + "path": "111" + }, + "6739": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP2", + "path": "111" + }, + "6740": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SUB", + "path": "111" + }, + "6741": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP1", + "path": "111" + }, + "6742": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "REVERT", + "path": "111" + }, + "6743": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6744": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4227 + ], + "op": "DUP4", + "path": "111" + }, + "6745": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "6747": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "AND", + "path": "111" + }, + "6748": { + "fn": "Mech._exec", + "offset": [ + 4231, + 4232 + ], + "op": "PUSH0", + "path": "111" + }, + "6749": { + "branch": 102, + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "SUB", + "path": "111" + }, + "6750": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1AC8" + }, + "6753": { + "branch": 102, + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMPI", + "path": "111" + }, + "6754": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4274 + ], + "op": "DUP8", + "path": "111", + "statement": 64 + }, + "6755": { + "op": "PUSH1", + "value": "0x1" + }, + "6757": { + "op": "PUSH1", + "value": "0x1" + }, + "6759": { + "op": "PUSH1", + "value": "0xA0" + }, + "6761": { + "op": "SHL" + }, + "6762": { + "op": "SUB" + }, + "6763": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4279 + ], + "op": "AND", + "path": "111" + }, + "6764": { + "fn": "Mech._exec", + "offset": [ + 4285, + 4290 + ], + "op": "DUP4", + "path": "111" + }, + "6765": { + "fn": "Mech._exec", + "offset": [ + 4299, + 4304 + ], + "op": "DUP9", + "path": "111" + }, + "6766": { + "fn": "Mech._exec", + "offset": [ + 4306, + 4310 + ], + "op": "DUP9", + "path": "111" + }, + "6767": { + "fn": "Mech._exec", + "offset": [ + 4306, + 4310 + ], + "op": "DUP9", + "path": "111" + }, + "6768": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6770": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "6771": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1A7D" + }, + "6774": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP3", + "path": "111" + }, + "6775": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "6776": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "6777": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x28FB" + }, + "6780": { + "fn": "Mech._exec", + "jump": "i", + "offset": [ + 4272, + 4311 + ], + "op": "JUMP", + "path": "111" + }, + "6781": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6782": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "6783": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6785": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "6786": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP1", + "path": "111" + }, + "6787": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP4", + "path": "111" + }, + "6788": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SUB", + "path": "111" + }, + "6789": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP2", + "path": "111" + }, + "6790": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP6", + "path": "111" + }, + "6791": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP9", + "path": "111" + }, + "6792": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP9", + "path": "111" + }, + "6793": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "CALL", + "path": "111" + }, + "6794": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP4", + "path": "111" + }, + "6795": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6796": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6797": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6798": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6799": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6800": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP1", + "path": "111" + }, + "6801": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "6802": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP2", + "path": "111" + }, + "6803": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "EQ", + "path": "111" + }, + "6804": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1AB8" + }, + "6807": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPI", + "path": "111" + }, + "6808": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6810": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "6811": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "6812": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6813": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "6815": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "NOT", + "path": "111" + }, + "6816": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x3F" + }, + "6818": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6819": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6820": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "AND", + "path": "111" + }, + "6821": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP3", + "path": "111" + }, + "6822": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6823": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6825": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MSTORE", + "path": "111" + }, + "6826": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6827": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP3", + "path": "111" + }, + "6828": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MSTORE", + "path": "111" + }, + "6829": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6830": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "6831": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "6833": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP5", + "path": "111" + }, + "6834": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6835": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "6836": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1ABD" + }, + "6839": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMP", + "path": "111" + }, + "6840": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6841": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "6843": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "6844": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6845": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6846": { + "op": "POP" + }, + "6847": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "6848": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP3", + "path": "111" + }, + "6849": { + "op": "POP" + }, + "6850": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "6851": { + "op": "POP" + }, + "6852": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1397" + }, + "6855": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMP", + "path": "111" + }, + "6856": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6857": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4341 + ], + "op": "DUP4", + "path": "111" + }, + "6858": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "6860": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "AND", + "path": "111" + }, + "6861": { + "fn": "Mech._exec", + "offset": [ + 4345, + 4346 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1" + }, + "6863": { + "branch": 103, + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "SUB", + "path": "111" + }, + "6864": { + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1B27" + }, + "6867": { + "branch": 103, + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "JUMPI", + "path": "111" + }, + "6868": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4388 + ], + "op": "DUP8", + "path": "111", + "statement": 65 + }, + "6869": { + "op": "PUSH1", + "value": "0x1" + }, + "6871": { + "op": "PUSH1", + "value": "0x1" + }, + "6873": { + "op": "PUSH1", + "value": "0xA0" + }, + "6875": { + "op": "SHL" + }, + "6876": { + "op": "SUB" + }, + "6877": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4401 + ], + "op": "AND", + "path": "111" + }, + "6878": { + "fn": "Mech._exec", + "offset": [ + 4407, + 4412 + ], + "op": "DUP4", + "path": "111" + }, + "6879": { + "fn": "Mech._exec", + "offset": [ + 4414, + 4418 + ], + "op": "DUP8", + "path": "111" + }, + "6880": { + "fn": "Mech._exec", + "offset": [ + 4414, + 4418 + ], + "op": "DUP8", + "path": "111" + }, + "6881": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6883": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6884": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1AEE" + }, + "6887": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP3", + "path": "111" + }, + "6888": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP2", + "path": "111" + }, + "6889": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP1", + "path": "111" + }, + "6890": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x28FB" + }, + "6893": { + "fn": "Mech._exec", + "jump": "i", + "offset": [ + 4386, + 4419 + ], + "op": "JUMP", + "path": "111" + }, + "6894": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6895": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6896": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6898": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6899": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP1", + "path": "111" + }, + "6900": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP4", + "path": "111" + }, + "6901": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SUB", + "path": "111" + }, + "6902": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP2", + "path": "111" + }, + "6903": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP7", + "path": "111" + }, + "6904": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP7", + "path": "111" + }, + "6905": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DELEGATECALL", + "path": "111" + }, + "6906": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP3", + "path": "111" + }, + "6907": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6908": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6909": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6910": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6911": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP1", + "path": "111" + }, + "6912": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6913": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP2", + "path": "111" + }, + "6914": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "EQ", + "path": "111" + }, + "6915": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1AB8" + }, + "6918": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMPI", + "path": "111" + }, + "6919": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6921": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6922": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP2", + "path": "111" + }, + "6923": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6924": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "6926": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "NOT", + "path": "111" + }, + "6927": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x3F" + }, + "6929": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6930": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6931": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "AND", + "path": "111" + }, + "6932": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP3", + "path": "111" + }, + "6933": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6934": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6936": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MSTORE", + "path": "111" + }, + "6937": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6938": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP3", + "path": "111" + }, + "6939": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MSTORE", + "path": "111" + }, + "6940": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6941": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6942": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "6944": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP5", + "path": "111" + }, + "6945": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6946": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "6947": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1ABD" + }, + "6950": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMP", + "path": "111" + }, + "6951": { + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6952": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH1", + "path": "111", + "statement": 66, + "value": "0x40" + }, + "6954": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "MLOAD", + "path": "111" + }, + "6955": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "6959": { + "op": "PUSH1", + "value": "0xE5" + }, + "6961": { + "op": "SHL" + }, + "6962": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "DUP2", + "path": "111" + }, + "6963": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "MSTORE", + "path": "111" + }, + "6964": { + "op": "PUSH1", + "value": "0x20" + }, + "6966": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "6968": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "DUP3", + "path": "111" + }, + "6969": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "ADD", + "path": "111" + }, + "6970": { + "op": "MSTORE" + }, + "6971": { + "op": "PUSH1", + "value": "0x11" + }, + "6973": { + "op": "PUSH1", + "value": "0x24" + }, + "6975": { + "op": "DUP3" + }, + "6976": { + "op": "ADD" + }, + "6977": { + "op": "MSTORE" + }, + "6978": { + "op": "PUSH17", + "value": "0x24B73B30B634B21037B832B930BA34B7B7" + }, + "6996": { + "op": "PUSH1", + "value": "0x79" + }, + "6998": { + "op": "SHL" + }, + "6999": { + "op": "PUSH1", + "value": "0x44" + }, + "7001": { + "op": "DUP3" + }, + "7002": { + "op": "ADD" + }, + "7003": { + "op": "MSTORE" + }, + "7004": { + "op": "PUSH1", + "value": "0x64" + }, + "7006": { + "op": "ADD" + }, + "7007": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH2", + "path": "111", + "value": "0x925" + }, + "7010": { + "op": "JUMP" + }, + "7011": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7084, + 7225 + ], + "op": "JUMPDEST", + "path": "67" + }, + "7012": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 8870, + 8891 + ], + "op": "PUSH32", + "path": "67", + "value": "0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + "7045": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "SLOAD", + "path": "67", + "statement": 67 + }, + "7046": { + "op": "PUSH1", + "value": "0x1" + }, + "7048": { + "op": "PUSH1", + "value": "0x40" + }, + "7050": { + "op": "SHL" + }, + "7051": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "SWAP1", + "path": "67" + }, + "7052": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "DIV", + "path": "67" + }, + "7053": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "PUSH1", + "path": "67", + "value": "0xFF" + }, + "7055": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "AND", + "path": "67" + }, + "7056": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7146, + 7219 + ], + "op": "PUSH2", + "path": "67", + "statement": 68, + "value": "0x101F" + }, + "7059": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7146, + 7219 + ], + "op": "JUMPI", + "path": "67" + }, + "7060": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "7062": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MLOAD", + "path": "67" + }, + "7063": { + "op": "PUSH4", + "value": "0x1AFCD79F" + }, + "7068": { + "op": "PUSH1", + "value": "0xE3" + }, + "7070": { + "op": "SHL" + }, + "7071": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "DUP2", + "path": "67" + }, + "7072": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MSTORE", + "path": "67" + }, + "7073": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x4" + }, + "7075": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "ADD", + "path": "67" + }, + "7076": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "7078": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MLOAD", + "path": "67" + }, + "7079": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "DUP1", + "path": "67" + }, + "7080": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SWAP2", + "path": "67" + }, + "7081": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SUB", + "path": "67" + }, + "7082": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SWAP1", + "path": "67" + }, + "7083": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "REVERT", + "path": "67" + }, + "7084": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3599, + 3929 + ], + "op": "JUMPDEST", + "path": "75" + }, + "7085": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1BB4" + }, + "7088": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1B63" + }, + "7091": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "7092": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 6931, + 6951 + ], + "op": "JUMPDEST", + "path": "67" + }, + "7093": { + "op": "PUSH0" + }, + "7094": { + "op": "MLOAD" + }, + "7095": { + "op": "PUSH1", + "value": "0x20" + }, + "7097": { + "op": "PUSH2", + "value": "0x2A57" + }, + "7100": { + "op": "PUSH0" + }, + "7101": { + "op": "CODECOPY" + }, + "7102": { + "op": "PUSH0" + }, + "7103": { + "op": "MLOAD" + }, + "7104": { + "op": "SWAP1" + }, + "7105": { + "op": "PUSH0" + }, + "7106": { + "op": "MSTORE" + }, + "7107": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3773 + ], + "op": "PUSH32", + "path": "75", + "statement": 69, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102" + }, + "7140": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1BED" + }, + "7143": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3776, + 3780 + ], + "op": "DUP5", + "path": "75" + }, + "7144": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3773 + ], + "op": "DUP3", + "path": "75" + }, + "7145": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "PUSH2", + "path": "75", + "value": "0x294E" + }, + "7148": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "i", + "offset": [ + 3766, + 3780 + ], + "op": "JUMP", + "path": "75" + }, + "7149": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "JUMPDEST", + "path": "75" + }, + "7150": { + "op": "POP" + }, + "7151": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "PUSH1", + "path": "75", + "statement": 70, + "value": "0x3" + }, + "7153": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "DUP2", + "path": "75" + }, + "7154": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "ADD", + "path": "75" + }, + "7155": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1BFC" + }, + "7158": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3803, + 3810 + ], + "op": "DUP4", + "path": "75" + }, + "7159": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "DUP3", + "path": "75" + }, + "7160": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "PUSH2", + "path": "75", + "value": "0x294E" + }, + "7163": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "i", + "offset": [ + 3790, + 3810 + ], + "op": "JUMP", + "path": "75" + }, + "7164": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "JUMPDEST", + "path": "75" + }, + "7165": { + "op": "POP" + }, + "7166": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3891, + 3892 + ], + "op": "PUSH0", + "path": "75", + "statement": 71 + }, + "7167": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "DUP1", + "path": "75" + }, + "7168": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "DUP3", + "path": "75" + }, + "7169": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "SSTORE", + "path": "75" + }, + "7170": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "PUSH1", + "path": "75", + "statement": 72, + "value": "0x1" + }, + "7172": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "SWAP1", + "path": "75" + }, + "7173": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "SWAP2", + "path": "75" + }, + "7174": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "ADD", + "path": "75" + }, + "7175": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3922 + ], + "op": "SSTORE", + "path": "75" + }, + "7176": { + "op": "POP" + }, + "7177": { + "op": "POP" + }, + "7178": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "o", + "offset": [ + 3599, + 3929 + ], + "op": "JUMP", + "path": "75" + }, + "7179": { + "op": "JUMPDEST" + }, + "7180": { + "op": "PUSH1", + "value": "0x40" + }, + "7182": { + "op": "DUP1" + }, + "7183": { + "op": "MLOAD" + }, + "7184": { + "op": "PUSH1", + "value": "0x60" + }, + "7186": { + "op": "DUP1" + }, + "7187": { + "op": "DUP3" + }, + "7188": { + "op": "MSTORE" + }, + "7189": { + "op": "PUSH1", + "value": "0x80" + }, + "7191": { + "op": "DUP3" + }, + "7192": { + "op": "ADD" + }, + "7193": { + "op": "SWAP1" + }, + "7194": { + "op": "SWAP3" + }, + "7195": { + "op": "MSTORE" + }, + "7196": { + "op": "PUSH0" + }, + "7197": { + "op": "SWAP2" + }, + "7198": { + "op": "DUP3" + }, + "7199": { + "op": "SWAP2" + }, + "7200": { + "op": "DUP3" + }, + "7201": { + "op": "SWAP2" + }, + "7202": { + "op": "DUP3" + }, + "7203": { + "op": "SWAP2" + }, + "7204": { + "op": "SWAP1" + }, + "7205": { + "op": "PUSH1", + "value": "0x20" + }, + "7207": { + "op": "DUP3" + }, + "7208": { + "op": "ADD" + }, + "7209": { + "op": "DUP2" + }, + "7210": { + "op": "DUP1" + }, + "7211": { + "op": "CALLDATASIZE" + }, + "7212": { + "op": "DUP4" + }, + "7213": { + "op": "CALLDATACOPY" + }, + "7214": { + "op": "ADD" + }, + "7215": { + "op": "SWAP1" + }, + "7216": { + "op": "POP" + }, + "7217": { + "op": "POP" + }, + "7218": { + "op": "SWAP1" + }, + "7219": { + "op": "POP" + }, + "7220": { + "op": "PUSH1", + "value": "0x60" + }, + "7222": { + "op": "PUSH1", + "value": "0x4D" + }, + "7224": { + "op": "PUSH1", + "value": "0x20" + }, + "7226": { + "op": "DUP4" + }, + "7227": { + "op": "ADD" + }, + "7228": { + "op": "DUP8" + }, + "7229": { + "op": "EXTCODECOPY" + }, + "7230": { + "op": "DUP1" + }, + "7231": { + "op": "DUP1" + }, + "7232": { + "op": "PUSH1", + "value": "0x20" + }, + "7234": { + "op": "ADD" + }, + "7235": { + "op": "SWAP1" + }, + "7236": { + "op": "MLOAD" + }, + "7237": { + "op": "DUP2" + }, + "7238": { + "op": "ADD" + }, + "7239": { + "op": "SWAP1" + }, + "7240": { + "op": "PUSH2", + "value": "0x1C51" + }, + "7243": { + "op": "SWAP2" + }, + "7244": { + "op": "SWAP1" + }, + "7245": { + "op": "PUSH2", + "value": "0x2A08" + }, + "7248": { + "jump": "i", + "op": "JUMP" + }, + "7249": { + "op": "JUMPDEST" + }, + "7250": { + "op": "SWAP4" + }, + "7251": { + "op": "POP" + }, + "7252": { + "op": "SWAP4" + }, + "7253": { + "op": "POP" + }, + "7254": { + "op": "SWAP4" + }, + "7255": { + "op": "POP" + }, + "7256": { + "op": "POP" + }, + "7257": { + "op": "SWAP2" + }, + "7258": { + "op": "SWAP4" + }, + "7259": { + "op": "SWAP1" + }, + "7260": { + "op": "SWAP3" + }, + "7261": { + "op": "POP" + }, + "7262": { + "jump": "o", + "op": "JUMP" + }, + "7263": { + "fn": "Mech.supportsInterface", + "offset": [ + 7049, + 7459 + ], + "op": "JUMPDEST", + "path": "111" + }, + "7264": { + "fn": "Mech.supportsInterface", + "offset": [ + 7125, + 7129 + ], + "op": "PUSH0", + "path": "111" + }, + "7265": { + "op": "PUSH1", + "value": "0x1" + }, + "7267": { + "op": "PUSH1", + "value": "0x1" + }, + "7269": { + "op": "PUSH1", + "value": "0xE0" + }, + "7271": { + "op": "SHL" + }, + "7272": { + "op": "SUB" + }, + "7273": { + "op": "NOT" + }, + "7274": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "DUP3", + "path": "111", + "statement": 73 + }, + "7275": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "AND", + "path": "111" + }, + "7276": { + "op": "PUSH4", + "value": "0x3CE4A3E9" + }, + "7281": { + "op": "PUSH1", + "value": "0xE0" + }, + "7283": { + "op": "SHL" + }, + "7284": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "EQ", + "path": "111" + }, + "7285": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "DUP1", + "path": "111" + }, + "7286": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1C8F" + }, + "7289": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "JUMPI", + "path": "111" + }, + "7290": { + "op": "POP" + }, + "7291": { + "op": "PUSH1", + "value": "0x1" + }, + "7293": { + "op": "PUSH1", + "value": "0x1" + }, + "7295": { + "op": "PUSH1", + "value": "0xE0" + }, + "7297": { + "op": "SHL" + }, + "7298": { + "op": "SUB" + }, + "7299": { + "op": "NOT" + }, + "7300": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "DUP3", + "path": "111" + }, + "7301": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "AND", + "path": "111" + }, + "7302": { + "op": "PUSH4", + "value": "0x1FFC9A7" + }, + "7307": { + "op": "PUSH1", + "value": "0xE0" + }, + "7309": { + "op": "SHL" + }, + "7310": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "EQ", + "path": "111" + }, + "7311": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "JUMPDEST", + "path": "111" + }, + "7312": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "DUP1", + "path": "111" + }, + "7313": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1CAA" + }, + "7316": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "JUMPI", + "path": "111" + }, + "7317": { + "op": "POP" + }, + "7318": { + "op": "PUSH1", + "value": "0x1" + }, + "7320": { + "op": "PUSH1", + "value": "0x1" + }, + "7322": { + "op": "PUSH1", + "value": "0xE0" + }, + "7324": { + "op": "SHL" + }, + "7325": { + "op": "SUB" + }, + "7326": { + "op": "NOT" + }, + "7327": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "DUP3", + "path": "111" + }, + "7328": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "AND", + "path": "111" + }, + "7329": { + "op": "PUSH4", + "value": "0x6608BDF" + }, + "7334": { + "op": "PUSH1", + "value": "0xE2" + }, + "7336": { + "op": "SHL" + }, + "7337": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "EQ", + "path": "111" + }, + "7338": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "JUMPDEST", + "path": "111" + }, + "7339": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "DUP1", + "path": "111" + }, + "7340": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1CC5" + }, + "7343": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "JUMPI", + "path": "111" + }, + "7344": { + "op": "POP" + }, + "7345": { + "op": "PUSH1", + "value": "0x1" + }, + "7347": { + "op": "PUSH1", + "value": "0x1" + }, + "7349": { + "op": "PUSH1", + "value": "0xE0" + }, + "7351": { + "op": "SHL" + }, + "7352": { + "op": "SUB" + }, + "7353": { + "op": "NOT" + }, + "7354": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "DUP3", + "path": "111" + }, + "7355": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "AND", + "path": "111" + }, + "7356": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "7361": { + "op": "PUSH1", + "value": "0xE1" + }, + "7363": { + "op": "SHL" + }, + "7364": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "EQ", + "path": "111" + }, + "7365": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "JUMPDEST", + "path": "111" + }, + "7366": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "DUP1", + "path": "111" + }, + "7367": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1CE0" + }, + "7370": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "JUMPI", + "path": "111" + }, + "7371": { + "op": "POP" + }, + "7372": { + "op": "PUSH1", + "value": "0x1" + }, + "7374": { + "op": "PUSH1", + "value": "0x1" + }, + "7376": { + "op": "PUSH1", + "value": "0xE0" + }, + "7378": { + "op": "SHL" + }, + "7379": { + "op": "SUB" + }, + "7380": { + "op": "NOT" + }, + "7381": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "DUP3", + "path": "111" + }, + "7382": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "AND", + "path": "111" + }, + "7383": { + "op": "PUSH4", + "value": "0x2711897" + }, + "7388": { + "op": "PUSH1", + "value": "0xE5" + }, + "7390": { + "op": "SHL" + }, + "7391": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "EQ", + "path": "111" + }, + "7392": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "JUMPDEST", + "path": "111" + }, + "7393": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "DUP1", + "path": "111" + }, + "7394": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "PUSH2", + "path": "111", + "value": "0x672" + }, + "7397": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "JUMPI", + "path": "111" + }, + "7398": { + "op": "POP" + }, + "7399": { + "op": "PUSH1", + "value": "0x1" + }, + "7401": { + "op": "PUSH1", + "value": "0x1" + }, + "7403": { + "op": "PUSH1", + "value": "0xE0" + }, + "7405": { + "op": "SHL" + }, + "7406": { + "op": "SUB" + }, + "7407": { + "op": "NOT" + }, + "7408": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "DUP3", + "path": "111" + }, + "7409": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "AND", + "path": "111" + }, + "7410": { + "op": "PUSH4", + "value": "0x51945447" + }, + "7415": { + "op": "PUSH1", + "value": "0xE0" + }, + "7417": { + "op": "SHL" + }, + "7418": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "EQ", + "path": "111" + }, + "7419": { + "fn": "Mech.supportsInterface", + "offset": [ + 7141, + 7452 + ], + "op": "SWAP3", + "path": "111" + }, + "7420": { + "fn": "Mech.supportsInterface", + "offset": [ + 7049, + 7459 + ], + "op": "SWAP2", + "path": "111" + }, + "7421": { + "op": "POP" + }, + "7422": { + "op": "POP" + }, + "7423": { + "fn": "Mech.supportsInterface", + "jump": "o", + "offset": [ + 7049, + 7459 + ], + "op": "JUMP", + "path": "111" + }, + "7424": { + "op": "JUMPDEST" + }, + "7425": { + "op": "PUSH0" + }, + "7426": { + "op": "PUSH0" + }, + "7427": { + "op": "PUSH0" + }, + "7428": { + "op": "DUP4" + }, + "7429": { + "op": "MLOAD" + }, + "7430": { + "op": "PUSH1", + "value": "0x41" + }, + "7432": { + "op": "SUB" + }, + "7433": { + "op": "PUSH2", + "value": "0x1D37" + }, + "7436": { + "op": "JUMPI" + }, + "7437": { + "op": "PUSH1", + "value": "0x20" + }, + "7439": { + "op": "DUP5" + }, + "7440": { + "op": "ADD" + }, + "7441": { + "op": "MLOAD" + }, + "7442": { + "op": "PUSH1", + "value": "0x40" + }, + "7444": { + "op": "DUP6" + }, + "7445": { + "op": "ADD" + }, + "7446": { + "op": "MLOAD" + }, + "7447": { + "op": "PUSH1", + "value": "0x60" + }, + "7449": { + "op": "DUP7" + }, + "7450": { + "op": "ADD" + }, + "7451": { + "op": "MLOAD" + }, + "7452": { + "op": "PUSH0" + }, + "7453": { + "op": "BYTE" + }, + "7454": { + "op": "PUSH2", + "value": "0x1D29" + }, + "7457": { + "op": "DUP9" + }, + "7458": { + "op": "DUP3" + }, + "7459": { + "op": "DUP6" + }, + "7460": { + "op": "DUP6" + }, + "7461": { + "op": "PUSH2", + "value": "0x170B" + }, + "7464": { + "jump": "i", + "op": "JUMP" + }, + "7465": { + "op": "JUMPDEST" + }, + "7466": { + "op": "SWAP6" + }, + "7467": { + "op": "POP" + }, + "7468": { + "op": "SWAP6" + }, + "7469": { + "op": "POP" + }, + "7470": { + "op": "SWAP6" + }, + "7471": { + "op": "POP" + }, + "7472": { + "op": "POP" + }, + "7473": { + "op": "POP" + }, + "7474": { + "op": "POP" + }, + "7475": { + "op": "PUSH2", + "value": "0x1D42" + }, + "7478": { + "op": "JUMP" + }, + "7479": { + "op": "JUMPDEST" + }, + "7480": { + "op": "POP" + }, + "7481": { + "op": "POP" + }, + "7482": { + "op": "DUP2" + }, + "7483": { + "op": "MLOAD" + }, + "7484": { + "op": "PUSH0" + }, + "7485": { + "op": "SWAP2" + }, + "7486": { + "op": "POP" + }, + "7487": { + "op": "PUSH1", + "value": "0x2" + }, + "7489": { + "op": "SWAP1" + }, + "7490": { + "op": "JUMPDEST" + }, + "7491": { + "op": "SWAP3" + }, + "7492": { + "op": "POP" + }, + "7493": { + "op": "SWAP3" + }, + "7494": { + "op": "POP" + }, + "7495": { + "op": "SWAP3" + }, + "7496": { + "jump": "o", + "op": "JUMP" + }, + "7497": { + "op": "JUMPDEST" + }, + "7498": { + "op": "DUP1" + }, + "7499": { + "op": "PUSH1", + "value": "0x1" + }, + "7501": { + "op": "PUSH1", + "value": "0x1" + }, + "7503": { + "op": "PUSH1", + "value": "0xA0" + }, + "7505": { + "op": "SHL" + }, + "7506": { + "op": "SUB" + }, + "7507": { + "op": "AND" + }, + "7508": { + "op": "EXTCODESIZE" + }, + "7509": { + "op": "PUSH0" + }, + "7510": { + "op": "SUB" + }, + "7511": { + "op": "PUSH2", + "value": "0x1D7E" + }, + "7514": { + "op": "JUMPI" + }, + "7515": { + "op": "PUSH1", + "value": "0x40" + }, + "7517": { + "op": "MLOAD" + }, + "7518": { + "op": "PUSH4", + "value": "0x4C9C8CE3" + }, + "7523": { + "op": "PUSH1", + "value": "0xE0" + }, + "7525": { + "op": "SHL" + }, + "7526": { + "op": "DUP2" + }, + "7527": { + "op": "MSTORE" + }, + "7528": { + "op": "PUSH1", + "value": "0x1" + }, + "7530": { + "op": "PUSH1", + "value": "0x1" + }, + "7532": { + "op": "PUSH1", + "value": "0xA0" + }, + "7534": { + "op": "SHL" + }, + "7535": { + "op": "SUB" + }, + "7536": { + "op": "DUP3" + }, + "7537": { + "op": "AND" + }, + "7538": { + "op": "PUSH1", + "value": "0x4" + }, + "7540": { + "op": "DUP3" + }, + "7541": { + "op": "ADD" + }, + "7542": { + "op": "MSTORE" + }, + "7543": { + "op": "PUSH1", + "value": "0x24" + }, + "7545": { + "op": "ADD" + }, + "7546": { + "op": "PUSH2", + "value": "0x925" + }, + "7549": { + "op": "JUMP" + }, + "7550": { + "op": "JUMPDEST" + }, + "7551": { + "op": "PUSH0" + }, + "7552": { + "op": "MLOAD" + }, + "7553": { + "op": "PUSH1", + "value": "0x20" + }, + "7555": { + "op": "PUSH2", + "value": "0x2A77" + }, + "7558": { + "op": "PUSH0" + }, + "7559": { + "op": "CODECOPY" + }, + "7560": { + "op": "PUSH0" + }, + "7561": { + "op": "MLOAD" + }, + "7562": { + "op": "SWAP1" + }, + "7563": { + "op": "PUSH0" + }, + "7564": { + "op": "MSTORE" + }, + "7565": { + "op": "DUP1" + }, + "7566": { + "op": "SLOAD" + }, + "7567": { + "op": "PUSH1", + "value": "0x1" + }, + "7569": { + "op": "PUSH1", + "value": "0x1" + }, + "7571": { + "op": "PUSH1", + "value": "0xA0" + }, + "7573": { + "op": "SHL" + }, + "7574": { + "op": "SUB" + }, + "7575": { + "op": "NOT" + }, + "7576": { + "op": "AND" + }, + "7577": { + "op": "PUSH1", + "value": "0x1" + }, + "7579": { + "op": "PUSH1", + "value": "0x1" + }, + "7581": { + "op": "PUSH1", + "value": "0xA0" + }, + "7583": { + "op": "SHL" + }, + "7584": { + "op": "SUB" + }, + "7585": { + "op": "SWAP3" + }, + "7586": { + "op": "SWAP1" + }, + "7587": { + "op": "SWAP3" + }, + "7588": { + "op": "AND" + }, + "7589": { + "op": "SWAP2" + }, + "7590": { + "op": "SWAP1" + }, + "7591": { + "op": "SWAP2" + }, + "7592": { + "op": "OR" + }, + "7593": { + "op": "SWAP1" + }, + "7594": { + "op": "SSTORE" + }, + "7595": { + "jump": "o", + "op": "JUMP" + }, + "7596": { + "op": "JUMPDEST" + }, + "7597": { + "op": "PUSH1", + "value": "0x60" + }, + "7599": { + "op": "PUSH0" + }, + "7600": { + "op": "PUSH0" + }, + "7601": { + "op": "DUP5" + }, + "7602": { + "op": "PUSH1", + "value": "0x1" + }, + "7604": { + "op": "PUSH1", + "value": "0x1" + }, + "7606": { + "op": "PUSH1", + "value": "0xA0" + }, + "7608": { + "op": "SHL" + }, + "7609": { + "op": "SUB" + }, + "7610": { + "op": "AND" + }, + "7611": { + "op": "DUP5" + }, + "7612": { + "op": "PUSH1", + "value": "0x40" + }, + "7614": { + "op": "MLOAD" + }, + "7615": { + "op": "PUSH2", + "value": "0x1DC8" + }, + "7618": { + "op": "SWAP2" + }, + "7619": { + "op": "SWAP1" + }, + "7620": { + "op": "PUSH2", + "value": "0x2A40" + }, + "7623": { + "jump": "i", + "op": "JUMP" + }, + "7624": { + "op": "JUMPDEST" + }, + "7625": { + "op": "PUSH0" + }, + "7626": { + "op": "PUSH1", + "value": "0x40" + }, + "7628": { + "op": "MLOAD" + }, + "7629": { + "op": "DUP1" + }, + "7630": { + "op": "DUP4" + }, + "7631": { + "op": "SUB" + }, + "7632": { + "op": "DUP2" + }, + "7633": { + "op": "DUP6" + }, + "7634": { + "op": "GAS" + }, + "7635": { + "op": "DELEGATECALL" + }, + "7636": { + "op": "SWAP2" + }, + "7637": { + "op": "POP" + }, + "7638": { + "op": "POP" + }, + "7639": { + "op": "RETURNDATASIZE" + }, + "7640": { + "op": "DUP1" + }, + "7641": { + "op": "PUSH0" + }, + "7642": { + "op": "DUP2" + }, + "7643": { + "op": "EQ" + }, + "7644": { + "op": "PUSH2", + "value": "0x1E00" + }, + "7647": { + "op": "JUMPI" + }, + "7648": { + "op": "PUSH1", + "value": "0x40" + }, + "7650": { + "op": "MLOAD" + }, + "7651": { + "op": "SWAP2" + }, + "7652": { + "op": "POP" + }, + "7653": { + "op": "PUSH1", + "value": "0x1F" + }, + "7655": { + "op": "NOT" + }, + "7656": { + "op": "PUSH1", + "value": "0x3F" + }, + "7658": { + "op": "RETURNDATASIZE" + }, + "7659": { + "op": "ADD" + }, + "7660": { + "op": "AND" + }, + "7661": { + "op": "DUP3" + }, + "7662": { + "op": "ADD" + }, + "7663": { + "op": "PUSH1", + "value": "0x40" + }, + "7665": { + "op": "MSTORE" + }, + "7666": { + "op": "RETURNDATASIZE" + }, + "7667": { + "op": "DUP3" + }, + "7668": { + "op": "MSTORE" + }, + "7669": { + "op": "RETURNDATASIZE" + }, + "7670": { + "op": "PUSH0" + }, + "7671": { + "op": "PUSH1", + "value": "0x20" + }, + "7673": { + "op": "DUP5" + }, + "7674": { + "op": "ADD" + }, + "7675": { + "op": "RETURNDATACOPY" + }, + "7676": { + "op": "PUSH2", + "value": "0x1E05" + }, + "7679": { + "op": "JUMP" + }, + "7680": { + "op": "JUMPDEST" + }, + "7681": { + "op": "PUSH1", + "value": "0x60" + }, + "7683": { + "op": "SWAP2" + }, + "7684": { + "op": "POP" + }, + "7685": { + "op": "JUMPDEST" + }, + "7686": { + "op": "POP" + }, + "7687": { + "op": "SWAP2" + }, + "7688": { + "op": "POP" + }, + "7689": { + "op": "SWAP2" + }, + "7690": { + "op": "POP" + }, + "7691": { + "op": "PUSH2", + "value": "0x1E15" + }, + "7694": { + "op": "DUP6" + }, + "7695": { + "op": "DUP4" + }, + "7696": { + "op": "DUP4" + }, + "7697": { + "op": "PUSH2", + "value": "0x1E3D" + }, + "7700": { + "jump": "i", + "op": "JUMP" + }, + "7701": { + "op": "JUMPDEST" + }, + "7702": { + "op": "SWAP6" + }, + "7703": { + "op": "SWAP5" + }, + "7704": { + "op": "POP" + }, + "7705": { + "op": "POP" + }, + "7706": { + "op": "POP" + }, + "7707": { + "op": "POP" + }, + "7708": { + "op": "POP" + }, + "7709": { + "jump": "o", + "op": "JUMP" + }, + "7710": { + "op": "JUMPDEST" + }, + "7711": { + "op": "CALLVALUE" + }, + "7712": { + "op": "ISZERO" + }, + "7713": { + "op": "PUSH2", + "value": "0x101F" + }, + "7716": { + "op": "JUMPI" + }, + "7717": { + "op": "PUSH1", + "value": "0x40" + }, + "7719": { + "op": "MLOAD" + }, + "7720": { + "op": "PUSH4", + "value": "0xB398979F" + }, + "7725": { + "op": "PUSH1", + "value": "0xE0" + }, + "7727": { + "op": "SHL" + }, + "7728": { + "op": "DUP2" + }, + "7729": { + "op": "MSTORE" + }, + "7730": { + "op": "PUSH1", + "value": "0x4" + }, + "7732": { + "op": "ADD" + }, + "7733": { + "op": "PUSH1", + "value": "0x40" + }, + "7735": { + "op": "MLOAD" + }, + "7736": { + "op": "DUP1" + }, + "7737": { + "op": "SWAP2" + }, + "7738": { + "op": "SUB" + }, + "7739": { + "op": "SWAP1" + }, + "7740": { + "op": "REVERT" + }, + "7741": { + "op": "JUMPDEST" + }, + "7742": { + "op": "PUSH1", + "value": "0x60" + }, + "7744": { + "op": "DUP3" + }, + "7745": { + "op": "PUSH2", + "value": "0x1E52" + }, + "7748": { + "op": "JUMPI" + }, + "7749": { + "op": "PUSH2", + "value": "0x1E4D" + }, + "7752": { + "op": "DUP3" + }, + "7753": { + "op": "PUSH2", + "value": "0x1E99" + }, + "7756": { + "jump": "i", + "op": "JUMP" + }, + "7757": { + "op": "JUMPDEST" + }, + "7758": { + "op": "PUSH2", + "value": "0x83C" + }, + "7761": { + "op": "JUMP" + }, + "7762": { + "op": "JUMPDEST" + }, + "7763": { + "op": "DUP2" + }, + "7764": { + "op": "MLOAD" + }, + "7765": { + "op": "ISZERO" + }, + "7766": { + "op": "DUP1" + }, + "7767": { + "op": "ISZERO" + }, + "7768": { + "op": "PUSH2", + "value": "0x1E69" + }, + "7771": { + "op": "JUMPI" + }, + "7772": { + "op": "POP" + }, + "7773": { + "op": "PUSH1", + "value": "0x1" + }, + "7775": { + "op": "PUSH1", + "value": "0x1" + }, + "7777": { + "op": "PUSH1", + "value": "0xA0" + }, + "7779": { + "op": "SHL" + }, + "7780": { + "op": "SUB" + }, + "7781": { + "op": "DUP5" + }, + "7782": { + "op": "AND" + }, + "7783": { + "op": "EXTCODESIZE" + }, + "7784": { + "op": "ISZERO" + }, + "7785": { + "op": "JUMPDEST" + }, + "7786": { + "op": "ISZERO" + }, + "7787": { + "op": "PUSH2", + "value": "0x1E92" + }, + "7790": { + "op": "JUMPI" + }, + "7791": { + "op": "PUSH1", + "value": "0x40" + }, + "7793": { + "op": "MLOAD" + }, + "7794": { + "op": "PUSH4", + "value": "0x9996B315" + }, + "7799": { + "op": "PUSH1", + "value": "0xE0" + }, + "7801": { + "op": "SHL" + }, + "7802": { + "op": "DUP2" + }, + "7803": { + "op": "MSTORE" + }, + "7804": { + "op": "PUSH1", + "value": "0x1" + }, + "7806": { + "op": "PUSH1", + "value": "0x1" + }, + "7808": { + "op": "PUSH1", + "value": "0xA0" + }, + "7810": { + "op": "SHL" + }, + "7811": { + "op": "SUB" + }, + "7812": { + "op": "DUP6" + }, + "7813": { + "op": "AND" + }, + "7814": { + "op": "PUSH1", + "value": "0x4" + }, + "7816": { + "op": "DUP3" + }, + "7817": { + "op": "ADD" + }, + "7818": { + "op": "MSTORE" + }, + "7819": { + "op": "PUSH1", + "value": "0x24" + }, + "7821": { + "op": "ADD" + }, + "7822": { + "op": "PUSH2", + "value": "0x925" + }, + "7825": { + "op": "JUMP" + }, + "7826": { + "op": "JUMPDEST" + }, + "7827": { + "op": "POP" + }, + "7828": { + "op": "DUP1" + }, + "7829": { + "op": "PUSH2", + "value": "0x83C" + }, + "7832": { + "op": "JUMP" + }, + "7833": { + "op": "JUMPDEST" + }, + "7834": { + "op": "DUP1" + }, + "7835": { + "op": "MLOAD" + }, + "7836": { + "op": "ISZERO" + }, + "7837": { + "op": "PUSH2", + "value": "0x1EA9" + }, + "7840": { + "op": "JUMPI" + }, + "7841": { + "op": "DUP1" + }, + "7842": { + "op": "MLOAD" + }, + "7843": { + "op": "DUP1" + }, + "7844": { + "op": "DUP3" + }, + "7845": { + "op": "PUSH1", + "value": "0x20" + }, + "7847": { + "op": "ADD" + }, + "7848": { + "op": "REVERT" + }, + "7849": { + "op": "JUMPDEST" + }, + "7850": { + "op": "PUSH1", + "value": "0x40" + }, + "7852": { + "op": "MLOAD" + }, + "7853": { + "op": "PUSH4", + "value": "0xD6BDA275" + }, + "7858": { + "op": "PUSH1", + "value": "0xE0" + }, + "7860": { + "op": "SHL" + }, + "7861": { + "op": "DUP2" + }, + "7862": { + "op": "MSTORE" + }, + "7863": { + "op": "PUSH1", + "value": "0x4" + }, + "7865": { + "op": "ADD" + }, + "7866": { + "op": "PUSH1", + "value": "0x40" + }, + "7868": { + "op": "MLOAD" + }, + "7869": { + "op": "DUP1" + }, + "7870": { + "op": "SWAP2" + }, + "7871": { + "op": "SUB" + }, + "7872": { + "op": "SWAP1" + }, + "7873": { + "op": "REVERT" + }, + "7874": { + "op": "JUMPDEST" + }, + "7875": { + "op": "PUSH1", + "value": "0x1" + }, + "7877": { + "op": "PUSH1", + "value": "0x1" + }, + "7879": { + "op": "PUSH1", + "value": "0xA0" + }, + "7881": { + "op": "SHL" + }, + "7882": { + "op": "SUB" + }, + "7883": { + "op": "DUP2" + }, + "7884": { + "op": "AND" + }, + "7885": { + "op": "DUP2" + }, + "7886": { + "op": "EQ" + }, + "7887": { + "op": "PUSH2", + "value": "0x10C4" + }, + "7890": { + "op": "JUMPI" + }, + "7891": { + "op": "PUSH0" + }, + "7892": { + "op": "PUSH0" + }, + "7893": { + "op": "REVERT" + }, + "7894": { + "op": "JUMPDEST" + }, + "7895": { + "op": "PUSH0" + }, + "7896": { + "op": "PUSH0" + }, + "7897": { + "op": "DUP4" + }, + "7898": { + "op": "PUSH1", + "value": "0x1F" + }, + "7900": { + "op": "DUP5" + }, + "7901": { + "op": "ADD" + }, + "7902": { + "op": "SLT" + }, + "7903": { + "op": "PUSH2", + "value": "0x1EE6" + }, + "7906": { + "op": "JUMPI" + }, + "7907": { + "op": "PUSH0" + }, + "7908": { + "op": "PUSH0" + }, + "7909": { + "op": "REVERT" + }, + "7910": { + "op": "JUMPDEST" + }, + "7911": { + "op": "POP" + }, + "7912": { + "op": "DUP2" + }, + "7913": { + "op": "CALLDATALOAD" + }, + "7914": { + "op": "PUSH1", + "value": "0x1" + }, + "7916": { + "op": "PUSH1", + "value": "0x1" + }, + "7918": { + "op": "PUSH1", + "value": "0x40" + }, + "7920": { + "op": "SHL" + }, + "7921": { + "op": "SUB" + }, + "7922": { + "op": "DUP2" + }, + "7923": { + "op": "GT" + }, + "7924": { + "op": "ISZERO" + }, + "7925": { + "op": "PUSH2", + "value": "0x1EFC" + }, + "7928": { + "op": "JUMPI" + }, + "7929": { + "op": "PUSH0" + }, + "7930": { + "op": "PUSH0" + }, + "7931": { + "op": "REVERT" + }, + "7932": { + "op": "JUMPDEST" + }, + "7933": { + "op": "PUSH1", + "value": "0x20" + }, + "7935": { + "op": "DUP4" + }, + "7936": { + "op": "ADD" + }, + "7937": { + "op": "SWAP2" + }, + "7938": { + "op": "POP" + }, + "7939": { + "op": "DUP4" + }, + "7940": { + "op": "PUSH1", + "value": "0x20" + }, + "7942": { + "op": "DUP3" + }, + "7943": { + "op": "DUP6" + }, + "7944": { + "op": "ADD" + }, + "7945": { + "op": "ADD" + }, + "7946": { + "op": "GT" + }, + "7947": { + "op": "ISZERO" + }, + "7948": { + "op": "PUSH2", + "value": "0x1F13" + }, + "7951": { + "op": "JUMPI" + }, + "7952": { + "op": "PUSH0" + }, + "7953": { + "op": "PUSH0" + }, + "7954": { + "op": "REVERT" + }, + "7955": { + "op": "JUMPDEST" + }, + "7956": { + "op": "SWAP3" + }, + "7957": { + "op": "POP" + }, + "7958": { + "op": "SWAP3" + }, + "7959": { + "op": "SWAP1" + }, + "7960": { + "op": "POP" + }, + "7961": { + "jump": "o", + "op": "JUMP" + }, + "7962": { + "op": "JUMPDEST" + }, + "7963": { + "op": "PUSH0" + }, + "7964": { + "op": "PUSH0" + }, + "7965": { + "op": "PUSH0" + }, + "7966": { + "op": "PUSH0" + }, + "7967": { + "op": "PUSH0" + }, + "7968": { + "op": "PUSH0" + }, + "7969": { + "op": "PUSH0" + }, + "7970": { + "op": "PUSH0" + }, + "7971": { + "op": "PUSH1", + "value": "0xC0" + }, + "7973": { + "op": "DUP10" + }, + "7974": { + "op": "DUP12" + }, + "7975": { + "op": "SUB" + }, + "7976": { + "op": "SLT" + }, + "7977": { + "op": "ISZERO" + }, + "7978": { + "op": "PUSH2", + "value": "0x1F31" + }, + "7981": { + "op": "JUMPI" + }, + "7982": { + "op": "PUSH0" + }, + "7983": { + "op": "PUSH0" + }, + "7984": { + "op": "REVERT" + }, + "7985": { + "op": "JUMPDEST" + }, + "7986": { + "op": "DUP9" + }, + "7987": { + "op": "CALLDATALOAD" + }, + "7988": { + "op": "PUSH2", + "value": "0x1F3C" + }, + "7991": { + "op": "DUP2" + }, + "7992": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "7995": { + "jump": "i", + "op": "JUMP" + }, + "7996": { + "op": "JUMPDEST" + }, + "7997": { + "op": "SWAP8" + }, + "7998": { + "op": "POP" + }, + "7999": { + "op": "PUSH1", + "value": "0x20" + }, + "8001": { + "op": "DUP10" + }, + "8002": { + "op": "ADD" + }, + "8003": { + "op": "CALLDATALOAD" + }, + "8004": { + "op": "PUSH2", + "value": "0x1F4C" + }, + "8007": { + "op": "DUP2" + }, + "8008": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "8011": { + "jump": "i", + "op": "JUMP" + }, + "8012": { + "op": "JUMPDEST" + }, + "8013": { + "op": "SWAP7" + }, + "8014": { + "op": "POP" + }, + "8015": { + "op": "PUSH1", + "value": "0x40" + }, + "8017": { + "op": "DUP10" + }, + "8018": { + "op": "ADD" + }, + "8019": { + "op": "CALLDATALOAD" + }, + "8020": { + "op": "PUSH2", + "value": "0x1F5C" + }, + "8023": { + "op": "DUP2" + }, + "8024": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "8027": { + "jump": "i", + "op": "JUMP" + }, + "8028": { + "op": "JUMPDEST" + }, + "8029": { + "op": "SWAP6" + }, + "8030": { + "op": "POP" + }, + "8031": { + "op": "PUSH1", + "value": "0x60" + }, + "8033": { + "op": "DUP10" + }, + "8034": { + "op": "ADD" + }, + "8035": { + "op": "CALLDATALOAD" + }, + "8036": { + "op": "SWAP5" + }, + "8037": { + "op": "POP" + }, + "8038": { + "op": "PUSH1", + "value": "0x80" + }, + "8040": { + "op": "DUP10" + }, + "8041": { + "op": "ADD" + }, + "8042": { + "op": "CALLDATALOAD" + }, + "8043": { + "op": "PUSH1", + "value": "0x1" + }, + "8045": { + "op": "PUSH1", + "value": "0x1" + }, + "8047": { + "op": "PUSH1", + "value": "0x40" + }, + "8049": { + "op": "SHL" + }, + "8050": { + "op": "SUB" + }, + "8051": { + "op": "DUP2" + }, + "8052": { + "op": "GT" + }, + "8053": { + "op": "ISZERO" + }, + "8054": { + "op": "PUSH2", + "value": "0x1F7D" + }, + "8057": { + "op": "JUMPI" + }, + "8058": { + "op": "PUSH0" + }, + "8059": { + "op": "PUSH0" + }, + "8060": { + "op": "REVERT" + }, + "8061": { + "op": "JUMPDEST" + }, + "8062": { + "op": "PUSH2", + "value": "0x1F89" + }, + "8065": { + "op": "DUP12" + }, + "8066": { + "op": "DUP3" + }, + "8067": { + "op": "DUP13" + }, + "8068": { + "op": "ADD" + }, + "8069": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "8072": { + "jump": "i", + "op": "JUMP" + }, + "8073": { + "op": "JUMPDEST" + }, + "8074": { + "op": "SWAP1" + }, + "8075": { + "op": "SWAP6" + }, + "8076": { + "op": "POP" + }, + "8077": { + "op": "SWAP4" + }, + "8078": { + "op": "POP" + }, + "8079": { + "op": "POP" + }, + "8080": { + "op": "PUSH1", + "value": "0xA0" + }, + "8082": { + "op": "DUP10" + }, + "8083": { + "op": "ADD" + }, + "8084": { + "op": "CALLDATALOAD" + }, + "8085": { + "op": "PUSH1", + "value": "0x1" + }, + "8087": { + "op": "PUSH1", + "value": "0x1" + }, + "8089": { + "op": "PUSH1", + "value": "0x40" + }, + "8091": { + "op": "SHL" + }, + "8092": { + "op": "SUB" + }, + "8093": { + "op": "DUP2" + }, + "8094": { + "op": "GT" + }, + "8095": { + "op": "ISZERO" + }, + "8096": { + "op": "PUSH2", + "value": "0x1FA7" + }, + "8099": { + "op": "JUMPI" + }, + "8100": { + "op": "PUSH0" + }, + "8101": { + "op": "PUSH0" + }, + "8102": { + "op": "REVERT" + }, + "8103": { + "op": "JUMPDEST" + }, + "8104": { + "op": "PUSH2", + "value": "0x1FB3" + }, + "8107": { + "op": "DUP12" + }, + "8108": { + "op": "DUP3" + }, + "8109": { + "op": "DUP13" + }, + "8110": { + "op": "ADD" + }, + "8111": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "8114": { + "jump": "i", + "op": "JUMP" + }, + "8115": { + "op": "JUMPDEST" + }, + "8116": { + "op": "SWAP10" + }, + "8117": { + "op": "SWAP13" + }, + "8118": { + "op": "SWAP9" + }, + "8119": { + "op": "SWAP12" + }, + "8120": { + "op": "POP" + }, + "8121": { + "op": "SWAP7" + }, + "8122": { + "op": "SWAP10" + }, + "8123": { + "op": "POP" + }, + "8124": { + "op": "SWAP5" + }, + "8125": { + "op": "SWAP8" + }, + "8126": { + "op": "SWAP4" + }, + "8127": { + "op": "SWAP7" + }, + "8128": { + "op": "SWAP3" + }, + "8129": { + "op": "SWAP6" + }, + "8130": { + "op": "SWAP5" + }, + "8131": { + "op": "POP" + }, + "8132": { + "op": "POP" + }, + "8133": { + "op": "POP" + }, + "8134": { + "jump": "o", + "op": "JUMP" + }, + "8135": { + "op": "JUMPDEST" + }, + "8136": { + "op": "PUSH1", + "value": "0x1" + }, + "8138": { + "op": "PUSH1", + "value": "0x1" + }, + "8140": { + "op": "PUSH1", + "value": "0xE0" + }, + "8142": { + "op": "SHL" + }, + "8143": { + "op": "SUB" + }, + "8144": { + "op": "NOT" + }, + "8145": { + "op": "DUP2" + }, + "8146": { + "op": "AND" + }, + "8147": { + "op": "DUP2" + }, + "8148": { + "op": "EQ" + }, + "8149": { + "op": "PUSH2", + "value": "0x10C4" + }, + "8152": { + "op": "JUMPI" + }, + "8153": { + "op": "PUSH0" + }, + "8154": { + "op": "PUSH0" + }, + "8155": { + "op": "REVERT" + }, + "8156": { + "op": "JUMPDEST" + }, + "8157": { + "op": "PUSH0" + }, + "8158": { + "op": "PUSH1", + "value": "0x20" + }, + "8160": { + "op": "DUP3" + }, + "8161": { + "op": "DUP5" + }, + "8162": { + "op": "SUB" + }, + "8163": { + "op": "SLT" + }, + "8164": { + "op": "ISZERO" + }, + "8165": { + "op": "PUSH2", + "value": "0x1FEC" + }, + "8168": { + "op": "JUMPI" + }, + "8169": { + "op": "PUSH0" + }, + "8170": { + "op": "PUSH0" + }, + "8171": { + "op": "REVERT" + }, + "8172": { + "op": "JUMPDEST" + }, + "8173": { + "op": "DUP2" + }, + "8174": { + "op": "CALLDATALOAD" + }, + "8175": { + "op": "PUSH2", + "value": "0x83C" + }, + "8178": { + "op": "DUP2" + }, + "8179": { + "op": "PUSH2", + "value": "0x1FC7" + }, + "8182": { + "jump": "i", + "op": "JUMP" + }, + "8183": { + "op": "JUMPDEST" + }, + "8184": { + "op": "PUSH0" + }, + "8185": { + "op": "PUSH0" + }, + "8186": { + "op": "PUSH0" + }, + "8187": { + "op": "PUSH0" + }, + "8188": { + "op": "PUSH0" + }, + "8189": { + "op": "PUSH0" + }, + "8190": { + "op": "PUSH1", + "value": "0x80" + }, + "8192": { + "op": "DUP8" + }, + "8193": { + "op": "DUP10" + }, + "8194": { + "op": "SUB" + }, + "8195": { + "op": "SLT" + }, + "8196": { + "op": "ISZERO" + }, + "8197": { + "op": "PUSH2", + "value": "0x200C" + }, + "8200": { + "op": "JUMPI" + }, + "8201": { + "op": "PUSH0" + }, + "8202": { + "op": "PUSH0" + }, + "8203": { + "op": "REVERT" + }, + "8204": { + "op": "JUMPDEST" + }, + "8205": { + "op": "DUP7" + }, + "8206": { + "op": "CALLDATALOAD" + }, + "8207": { + "op": "PUSH2", + "value": "0x2017" + }, + "8210": { + "op": "DUP2" + }, + "8211": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "8214": { + "jump": "i", + "op": "JUMP" + }, + "8215": { + "op": "JUMPDEST" + }, + "8216": { + "op": "SWAP6" + }, + "8217": { + "op": "POP" + }, + "8218": { + "op": "PUSH1", + "value": "0x20" + }, + "8220": { + "op": "DUP8" + }, + "8221": { + "op": "ADD" + }, + "8222": { + "op": "CALLDATALOAD" + }, + "8223": { + "op": "PUSH1", + "value": "0x1" + }, + "8225": { + "op": "PUSH1", + "value": "0x1" + }, + "8227": { + "op": "PUSH1", + "value": "0x40" + }, + "8229": { + "op": "SHL" + }, + "8230": { + "op": "SUB" + }, + "8231": { + "op": "DUP2" + }, + "8232": { + "op": "GT" + }, + "8233": { + "op": "ISZERO" + }, + "8234": { + "op": "PUSH2", + "value": "0x2031" + }, + "8237": { + "op": "JUMPI" + }, + "8238": { + "op": "PUSH0" + }, + "8239": { + "op": "PUSH0" + }, + "8240": { + "op": "REVERT" + }, + "8241": { + "op": "JUMPDEST" + }, + "8242": { + "op": "PUSH2", + "value": "0x203D" + }, + "8245": { + "op": "DUP10" + }, + "8246": { + "op": "DUP3" + }, + "8247": { + "op": "DUP11" + }, + "8248": { + "op": "ADD" + }, + "8249": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "8252": { + "jump": "i", + "op": "JUMP" + }, + "8253": { + "op": "JUMPDEST" + }, + "8254": { + "op": "SWAP1" + }, + "8255": { + "op": "SWAP7" + }, + "8256": { + "op": "POP" + }, + "8257": { + "op": "SWAP5" + }, + "8258": { + "op": "POP" + }, + "8259": { + "op": "POP" + }, + "8260": { + "op": "PUSH1", + "value": "0x40" + }, + "8262": { + "op": "DUP8" + }, + "8263": { + "op": "ADD" + }, + "8264": { + "op": "CALLDATALOAD" + }, + "8265": { + "op": "PUSH1", + "value": "0x1" + }, + "8267": { + "op": "PUSH1", + "value": "0x1" + }, + "8269": { + "op": "PUSH1", + "value": "0x40" + }, + "8271": { + "op": "SHL" + }, + "8272": { + "op": "SUB" + }, + "8273": { + "op": "DUP2" + }, + "8274": { + "op": "GT" + }, + "8275": { + "op": "ISZERO" + }, + "8276": { + "op": "PUSH2", + "value": "0x205B" + }, + "8279": { + "op": "JUMPI" + }, + "8280": { + "op": "PUSH0" + }, + "8281": { + "op": "PUSH0" + }, + "8282": { + "op": "REVERT" + }, + "8283": { + "op": "JUMPDEST" + }, + "8284": { + "op": "PUSH2", + "value": "0x2067" + }, + "8287": { + "op": "DUP10" + }, + "8288": { + "op": "DUP3" + }, + "8289": { + "op": "DUP11" + }, + "8290": { + "op": "ADD" + }, + "8291": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "8294": { + "jump": "i", + "op": "JUMP" + }, + "8295": { + "op": "JUMPDEST" + }, + "8296": { + "op": "SWAP1" + }, + "8297": { + "op": "SWAP5" + }, + "8298": { + "op": "POP" + }, + "8299": { + "op": "SWAP3" + }, + "8300": { + "op": "POP" + }, + "8301": { + "op": "POP" + }, + "8302": { + "op": "PUSH1", + "value": "0x60" + }, + "8304": { + "op": "DUP8" + }, + "8305": { + "op": "ADD" + }, + "8306": { + "op": "CALLDATALOAD" + }, + "8307": { + "op": "PUSH2", + "value": "0x207B" + }, + "8310": { + "op": "DUP2" + }, + "8311": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "8314": { + "jump": "i", + "op": "JUMP" + }, + "8315": { + "op": "JUMPDEST" + }, + "8316": { + "op": "DUP1" + }, + "8317": { + "op": "SWAP2" + }, + "8318": { + "op": "POP" + }, + "8319": { + "op": "POP" + }, + "8320": { + "op": "SWAP3" + }, + "8321": { + "op": "SWAP6" + }, + "8322": { + "op": "POP" + }, + "8323": { + "op": "SWAP3" + }, + "8324": { + "op": "SWAP6" + }, + "8325": { + "op": "POP" + }, + "8326": { + "op": "SWAP3" + }, + "8327": { + "op": "SWAP6" + }, + "8328": { + "jump": "o", + "op": "JUMP" + }, + "8329": { + "op": "JUMPDEST" + }, + "8330": { + "op": "PUSH0" + }, + "8331": { + "op": "PUSH0" + }, + "8332": { + "op": "PUSH0" + }, + "8333": { + "op": "PUSH0" + }, + "8334": { + "op": "PUSH0" + }, + "8335": { + "op": "PUSH1", + "value": "0x80" + }, + "8337": { + "op": "DUP7" + }, + "8338": { + "op": "DUP9" + }, + "8339": { + "op": "SUB" + }, + "8340": { + "op": "SLT" + }, + "8341": { + "op": "ISZERO" + }, + "8342": { + "op": "PUSH2", + "value": "0x209D" + }, + "8345": { + "op": "JUMPI" + }, + "8346": { + "op": "PUSH0" + }, + "8347": { + "op": "PUSH0" + }, + "8348": { + "op": "REVERT" + }, + "8349": { + "op": "JUMPDEST" + }, + "8350": { + "op": "DUP6" + }, + "8351": { + "op": "CALLDATALOAD" + }, + "8352": { + "op": "PUSH2", + "value": "0x20A8" + }, + "8355": { + "op": "DUP2" + }, + "8356": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "8359": { + "jump": "i", + "op": "JUMP" + }, + "8360": { + "op": "JUMPDEST" + }, + "8361": { + "op": "SWAP5" + }, + "8362": { + "op": "POP" + }, + "8363": { + "op": "PUSH1", + "value": "0x20" + }, + "8365": { + "op": "DUP7" + }, + "8366": { + "op": "ADD" + }, + "8367": { + "op": "CALLDATALOAD" + }, + "8368": { + "op": "PUSH2", + "value": "0x20B8" + }, + "8371": { + "op": "DUP2" + }, + "8372": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "8375": { + "jump": "i", + "op": "JUMP" + }, + "8376": { + "op": "JUMPDEST" + }, + "8377": { + "op": "SWAP4" + }, + "8378": { + "op": "POP" + }, + "8379": { + "op": "PUSH1", + "value": "0x40" + }, + "8381": { + "op": "DUP7" + }, + "8382": { + "op": "ADD" + }, + "8383": { + "op": "CALLDATALOAD" + }, + "8384": { + "op": "SWAP3" + }, + "8385": { + "op": "POP" + }, + "8386": { + "op": "PUSH1", + "value": "0x60" + }, + "8388": { + "op": "DUP7" + }, + "8389": { + "op": "ADD" + }, + "8390": { + "op": "CALLDATALOAD" + }, + "8391": { + "op": "PUSH1", + "value": "0x1" + }, + "8393": { + "op": "PUSH1", + "value": "0x1" + }, + "8395": { + "op": "PUSH1", + "value": "0x40" + }, + "8397": { + "op": "SHL" + }, + "8398": { + "op": "SUB" + }, + "8399": { + "op": "DUP2" + }, + "8400": { + "op": "GT" + }, + "8401": { + "op": "ISZERO" + }, + "8402": { + "op": "PUSH2", + "value": "0x20D9" + }, + "8405": { + "op": "JUMPI" + }, + "8406": { + "op": "PUSH0" + }, + "8407": { + "op": "PUSH0" + }, + "8408": { + "op": "REVERT" + }, + "8409": { + "op": "JUMPDEST" + }, + "8410": { + "op": "PUSH2", + "value": "0x20E5" + }, + "8413": { + "op": "DUP9" + }, + "8414": { + "op": "DUP3" + }, + "8415": { + "op": "DUP10" + }, + "8416": { + "op": "ADD" + }, + "8417": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "8420": { + "jump": "i", + "op": "JUMP" + }, + "8421": { + "op": "JUMPDEST" + }, + "8422": { + "op": "SWAP7" + }, + "8423": { + "op": "SWAP10" + }, + "8424": { + "op": "SWAP6" + }, + "8425": { + "op": "SWAP9" + }, + "8426": { + "op": "POP" + }, + "8427": { + "op": "SWAP4" + }, + "8428": { + "op": "SWAP7" + }, + "8429": { + "op": "POP" + }, + "8430": { + "op": "SWAP3" + }, + "8431": { + "op": "SWAP5" + }, + "8432": { + "op": "SWAP4" + }, + "8433": { + "op": "SWAP3" + }, + "8434": { + "op": "POP" + }, + "8435": { + "op": "POP" + }, + "8436": { + "op": "POP" + }, + "8437": { + "jump": "o", + "op": "JUMP" + }, + "8438": { + "op": "JUMPDEST" + }, + "8439": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "8444": { + "op": "PUSH1", + "value": "0xE0" + }, + "8446": { + "op": "SHL" + }, + "8447": { + "op": "PUSH0" + }, + "8448": { + "op": "MSTORE" + }, + "8449": { + "op": "PUSH1", + "value": "0x41" + }, + "8451": { + "op": "PUSH1", + "value": "0x4" + }, + "8453": { + "op": "MSTORE" + }, + "8454": { + "op": "PUSH1", + "value": "0x24" + }, + "8456": { + "op": "PUSH0" + }, + "8457": { + "op": "REVERT" + }, + "8458": { + "op": "JUMPDEST" + }, + "8459": { + "op": "PUSH0" + }, + "8460": { + "op": "DUP3" + }, + "8461": { + "op": "PUSH1", + "value": "0x1F" + }, + "8463": { + "op": "DUP4" + }, + "8464": { + "op": "ADD" + }, + "8465": { + "op": "SLT" + }, + "8466": { + "op": "PUSH2", + "value": "0x2119" + }, + "8469": { + "op": "JUMPI" + }, + "8470": { + "op": "PUSH0" + }, + "8471": { + "op": "PUSH0" + }, + "8472": { + "op": "REVERT" + }, + "8473": { + "op": "JUMPDEST" + }, + "8474": { + "op": "DUP2" + }, + "8475": { + "op": "CALLDATALOAD" + }, + "8476": { + "op": "PUSH1", + "value": "0x1" + }, + "8478": { + "op": "PUSH1", + "value": "0x1" + }, + "8480": { + "op": "PUSH1", + "value": "0x40" + }, + "8482": { + "op": "SHL" + }, + "8483": { + "op": "SUB" + }, + "8484": { + "op": "DUP2" + }, + "8485": { + "op": "GT" + }, + "8486": { + "op": "ISZERO" + }, + "8487": { + "op": "PUSH2", + "value": "0x2132" + }, + "8490": { + "op": "JUMPI" + }, + "8491": { + "op": "PUSH2", + "value": "0x2132" + }, + "8494": { + "op": "PUSH2", + "value": "0x20F6" + }, + "8497": { + "jump": "i", + "op": "JUMP" + }, + "8498": { + "op": "JUMPDEST" + }, + "8499": { + "op": "PUSH1", + "value": "0x40" + }, + "8501": { + "op": "MLOAD" + }, + "8502": { + "op": "PUSH1", + "value": "0x1F" + }, + "8504": { + "op": "DUP3" + }, + "8505": { + "op": "ADD" + }, + "8506": { + "op": "PUSH1", + "value": "0x1F" + }, + "8508": { + "op": "NOT" + }, + "8509": { + "op": "SWAP1" + }, + "8510": { + "op": "DUP2" + }, + "8511": { + "op": "AND" + }, + "8512": { + "op": "PUSH1", + "value": "0x3F" + }, + "8514": { + "op": "ADD" + }, + "8515": { + "op": "AND" + }, + "8516": { + "op": "DUP2" + }, + "8517": { + "op": "ADD" + }, + "8518": { + "op": "PUSH1", + "value": "0x1" + }, + "8520": { + "op": "PUSH1", + "value": "0x1" + }, + "8522": { + "op": "PUSH1", + "value": "0x40" + }, + "8524": { + "op": "SHL" + }, + "8525": { + "op": "SUB" + }, + "8526": { + "op": "DUP2" + }, + "8527": { + "op": "GT" + }, + "8528": { + "op": "DUP3" + }, + "8529": { + "op": "DUP3" + }, + "8530": { + "op": "LT" + }, + "8531": { + "op": "OR" + }, + "8532": { + "op": "ISZERO" + }, + "8533": { + "op": "PUSH2", + "value": "0x2160" + }, + "8536": { + "op": "JUMPI" + }, + "8537": { + "op": "PUSH2", + "value": "0x2160" + }, + "8540": { + "op": "PUSH2", + "value": "0x20F6" + }, + "8543": { + "jump": "i", + "op": "JUMP" + }, + "8544": { + "op": "JUMPDEST" + }, + "8545": { + "op": "PUSH1", + "value": "0x40" + }, + "8547": { + "op": "MSTORE" + }, + "8548": { + "op": "DUP2" + }, + "8549": { + "op": "DUP2" + }, + "8550": { + "op": "MSTORE" + }, + "8551": { + "op": "DUP4" + }, + "8552": { + "op": "DUP3" + }, + "8553": { + "op": "ADD" + }, + "8554": { + "op": "PUSH1", + "value": "0x20" + }, + "8556": { + "op": "ADD" + }, + "8557": { + "op": "DUP6" + }, + "8558": { + "op": "LT" + }, + "8559": { + "op": "ISZERO" + }, + "8560": { + "op": "PUSH2", + "value": "0x2177" + }, + "8563": { + "op": "JUMPI" + }, + "8564": { + "op": "PUSH0" + }, + "8565": { + "op": "PUSH0" + }, + "8566": { + "op": "REVERT" + }, + "8567": { + "op": "JUMPDEST" + }, + "8568": { + "op": "DUP2" + }, + "8569": { + "op": "PUSH1", + "value": "0x20" + }, + "8571": { + "op": "DUP6" + }, + "8572": { + "op": "ADD" + }, + "8573": { + "op": "PUSH1", + "value": "0x20" + }, + "8575": { + "op": "DUP4" + }, + "8576": { + "op": "ADD" + }, + "8577": { + "op": "CALLDATACOPY" + }, + "8578": { + "op": "PUSH0" + }, + "8579": { + "op": "SWAP2" + }, + "8580": { + "op": "DUP2" + }, + "8581": { + "op": "ADD" + }, + "8582": { + "op": "PUSH1", + "value": "0x20" + }, + "8584": { + "op": "ADD" + }, + "8585": { + "op": "SWAP2" + }, + "8586": { + "op": "SWAP1" + }, + "8587": { + "op": "SWAP2" + }, + "8588": { + "op": "MSTORE" + }, + "8589": { + "op": "SWAP4" + }, + "8590": { + "op": "SWAP3" + }, + "8591": { + "op": "POP" + }, + "8592": { + "op": "POP" + }, + "8593": { + "op": "POP" + }, + "8594": { + "jump": "o", + "op": "JUMP" + }, + "8595": { + "op": "JUMPDEST" + }, + "8596": { + "op": "PUSH0" + }, + "8597": { + "op": "PUSH0" + }, + "8598": { + "op": "PUSH1", + "value": "0x40" + }, + "8600": { + "op": "DUP4" + }, + "8601": { + "op": "DUP6" + }, + "8602": { + "op": "SUB" + }, + "8603": { + "op": "SLT" + }, + "8604": { + "op": "ISZERO" + }, + "8605": { + "op": "PUSH2", + "value": "0x21A4" + }, + "8608": { + "op": "JUMPI" + }, + "8609": { + "op": "PUSH0" + }, + "8610": { + "op": "PUSH0" + }, + "8611": { + "op": "REVERT" + }, + "8612": { + "op": "JUMPDEST" + }, + "8613": { + "op": "DUP3" + }, + "8614": { + "op": "CALLDATALOAD" + }, + "8615": { + "op": "SWAP2" + }, + "8616": { + "op": "POP" + }, + "8617": { + "op": "PUSH1", + "value": "0x20" + }, + "8619": { + "op": "DUP4" + }, + "8620": { + "op": "ADD" + }, + "8621": { + "op": "CALLDATALOAD" + }, + "8622": { + "op": "PUSH1", + "value": "0x1" + }, + "8624": { + "op": "PUSH1", + "value": "0x1" + }, + "8626": { + "op": "PUSH1", + "value": "0x40" + }, + "8628": { + "op": "SHL" + }, + "8629": { + "op": "SUB" + }, + "8630": { + "op": "DUP2" + }, + "8631": { + "op": "GT" + }, + "8632": { + "op": "ISZERO" + }, + "8633": { + "op": "PUSH2", + "value": "0x21C0" + }, + "8636": { + "op": "JUMPI" + }, + "8637": { + "op": "PUSH0" + }, + "8638": { + "op": "PUSH0" + }, + "8639": { + "op": "REVERT" + }, + "8640": { + "op": "JUMPDEST" + }, + "8641": { + "op": "PUSH2", + "value": "0x21CC" + }, + "8644": { + "op": "DUP6" + }, + "8645": { + "op": "DUP3" + }, + "8646": { + "op": "DUP7" + }, + "8647": { + "op": "ADD" + }, + "8648": { + "op": "PUSH2", + "value": "0x210A" + }, + "8651": { + "jump": "i", + "op": "JUMP" + }, + "8652": { + "op": "JUMPDEST" + }, + "8653": { + "op": "SWAP2" + }, + "8654": { + "op": "POP" + }, + "8655": { + "op": "POP" + }, + "8656": { + "op": "SWAP3" + }, + "8657": { + "op": "POP" + }, + "8658": { + "op": "SWAP3" + }, + "8659": { + "op": "SWAP1" + }, + "8660": { + "op": "POP" + }, + "8661": { + "jump": "o", + "op": "JUMP" + }, + "8662": { + "op": "JUMPDEST" + }, + "8663": { + "op": "PUSH0" + }, + "8664": { + "op": "PUSH0" + }, + "8665": { + "op": "PUSH0" + }, + "8666": { + "op": "PUSH1", + "value": "0x60" + }, + "8668": { + "op": "DUP5" + }, + "8669": { + "op": "DUP7" + }, + "8670": { + "op": "SUB" + }, + "8671": { + "op": "SLT" + }, + "8672": { + "op": "ISZERO" + }, + "8673": { + "op": "PUSH2", + "value": "0x21E8" + }, + "8676": { + "op": "JUMPI" + }, + "8677": { + "op": "PUSH0" + }, + "8678": { + "op": "PUSH0" + }, + "8679": { + "op": "REVERT" + }, + "8680": { + "op": "JUMPDEST" + }, + "8681": { + "op": "DUP4" + }, + "8682": { + "op": "CALLDATALOAD" + }, + "8683": { + "op": "PUSH1", + "value": "0x1" + }, + "8685": { + "op": "PUSH1", + "value": "0x1" + }, + "8687": { + "op": "PUSH1", + "value": "0x40" + }, + "8689": { + "op": "SHL" + }, + "8690": { + "op": "SUB" + }, + "8691": { + "op": "DUP2" + }, + "8692": { + "op": "GT" + }, + "8693": { + "op": "ISZERO" + }, + "8694": { + "op": "PUSH2", + "value": "0x21FD" + }, + "8697": { + "op": "JUMPI" + }, + "8698": { + "op": "PUSH0" + }, + "8699": { + "op": "PUSH0" + }, + "8700": { + "op": "REVERT" + }, + "8701": { + "op": "JUMPDEST" + }, + "8702": { + "op": "DUP5" + }, + "8703": { + "op": "ADD" + }, + "8704": { + "op": "PUSH2", + "value": "0x120" + }, + "8707": { + "op": "DUP2" + }, + "8708": { + "op": "DUP8" + }, + "8709": { + "op": "SUB" + }, + "8710": { + "op": "SLT" + }, + "8711": { + "op": "ISZERO" + }, + "8712": { + "op": "PUSH2", + "value": "0x220F" + }, + "8715": { + "op": "JUMPI" + }, + "8716": { + "op": "PUSH0" + }, + "8717": { + "op": "PUSH0" + }, + "8718": { + "op": "REVERT" + }, + "8719": { + "op": "JUMPDEST" + }, + "8720": { + "op": "SWAP6" + }, + "8721": { + "op": "PUSH1", + "value": "0x20" + }, + "8723": { + "op": "DUP6" + }, + "8724": { + "op": "ADD" + }, + "8725": { + "op": "CALLDATALOAD" + }, + "8726": { + "op": "SWAP6" + }, + "8727": { + "op": "POP" + }, + "8728": { + "op": "PUSH1", + "value": "0x40" + }, + "8730": { + "op": "SWAP1" + }, + "8731": { + "op": "SWAP5" + }, + "8732": { + "op": "ADD" + }, + "8733": { + "op": "CALLDATALOAD" + }, + "8734": { + "op": "SWAP4" + }, + "8735": { + "op": "SWAP3" + }, + "8736": { + "op": "POP" + }, + "8737": { + "op": "POP" + }, + "8738": { + "op": "POP" + }, + "8739": { + "jump": "o", + "op": "JUMP" + }, + "8740": { + "op": "JUMPDEST" + }, + "8741": { + "op": "PUSH0" + }, + "8742": { + "op": "PUSH0" + }, + "8743": { + "op": "PUSH1", + "value": "0x40" + }, + "8745": { + "op": "DUP4" + }, + "8746": { + "op": "DUP6" + }, + "8747": { + "op": "SUB" + }, + "8748": { + "op": "SLT" + }, + "8749": { + "op": "ISZERO" + }, + "8750": { + "op": "PUSH2", + "value": "0x2235" + }, + "8753": { + "op": "JUMPI" + }, + "8754": { + "op": "PUSH0" + }, + "8755": { + "op": "PUSH0" + }, + "8756": { + "op": "REVERT" + }, + "8757": { + "op": "JUMPDEST" + }, + "8758": { + "op": "DUP3" + }, + "8759": { + "op": "CALLDATALOAD" + }, + "8760": { + "op": "PUSH1", + "value": "0x1" + }, + "8762": { + "op": "PUSH1", + "value": "0x1" + }, + "8764": { + "op": "PUSH1", + "value": "0x40" + }, + "8766": { + "op": "SHL" + }, + "8767": { + "op": "SUB" + }, + "8768": { + "op": "DUP2" + }, + "8769": { + "op": "GT" + }, + "8770": { + "op": "ISZERO" + }, + "8771": { + "op": "PUSH2", + "value": "0x224A" + }, + "8774": { + "op": "JUMPI" + }, + "8775": { + "op": "PUSH0" + }, + "8776": { + "op": "PUSH0" + }, + "8777": { + "op": "REVERT" + }, + "8778": { + "op": "JUMPDEST" + }, + "8779": { + "op": "PUSH2", + "value": "0x2256" + }, + "8782": { + "op": "DUP6" + }, + "8783": { + "op": "DUP3" + }, + "8784": { + "op": "DUP7" + }, + "8785": { + "op": "ADD" + }, + "8786": { + "op": "PUSH2", + "value": "0x210A" + }, + "8789": { + "jump": "i", + "op": "JUMP" + }, + "8790": { + "op": "JUMPDEST" + }, + "8791": { + "op": "SWAP3" + }, + "8792": { + "op": "POP" + }, + "8793": { + "op": "POP" + }, + "8794": { + "op": "PUSH1", + "value": "0x20" + }, + "8796": { + "op": "DUP4" + }, + "8797": { + "op": "ADD" + }, + "8798": { + "op": "CALLDATALOAD" + }, + "8799": { + "op": "PUSH2", + "value": "0x2267" + }, + "8802": { + "op": "DUP2" + }, + "8803": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "8806": { + "jump": "i", + "op": "JUMP" + }, + "8807": { + "op": "JUMPDEST" + }, + "8808": { + "op": "DUP1" + }, + "8809": { + "op": "SWAP2" + }, + "8810": { + "op": "POP" + }, + "8811": { + "op": "POP" + }, + "8812": { + "op": "SWAP3" + }, + "8813": { + "op": "POP" + }, + "8814": { + "op": "SWAP3" + }, + "8815": { + "op": "SWAP1" + }, + "8816": { + "op": "POP" + }, + "8817": { + "jump": "o", + "op": "JUMP" + }, + "8818": { + "op": "JUMPDEST" + }, + "8819": { + "op": "PUSH0" + }, + "8820": { + "op": "PUSH0" + }, + "8821": { + "op": "DUP4" + }, + "8822": { + "op": "PUSH1", + "value": "0x1F" + }, + "8824": { + "op": "DUP5" + }, + "8825": { + "op": "ADD" + }, + "8826": { + "op": "SLT" + }, + "8827": { + "op": "PUSH2", + "value": "0x2282" + }, + "8830": { + "op": "JUMPI" + }, + "8831": { + "op": "PUSH0" + }, + "8832": { + "op": "PUSH0" + }, + "8833": { + "op": "REVERT" + }, + "8834": { + "op": "JUMPDEST" + }, + "8835": { + "op": "POP" + }, + "8836": { + "op": "DUP2" + }, + "8837": { + "op": "CALLDATALOAD" + }, + "8838": { + "op": "PUSH1", + "value": "0x1" + }, + "8840": { + "op": "PUSH1", + "value": "0x1" + }, + "8842": { + "op": "PUSH1", + "value": "0x40" + }, + "8844": { + "op": "SHL" + }, + "8845": { + "op": "SUB" + }, + "8846": { + "op": "DUP2" + }, + "8847": { + "op": "GT" + }, + "8848": { + "op": "ISZERO" + }, + "8849": { + "op": "PUSH2", + "value": "0x2298" + }, + "8852": { + "op": "JUMPI" + }, + "8853": { + "op": "PUSH0" + }, + "8854": { + "op": "PUSH0" + }, + "8855": { + "op": "REVERT" + }, + "8856": { + "op": "JUMPDEST" + }, + "8857": { + "op": "PUSH1", + "value": "0x20" + }, + "8859": { + "op": "DUP4" + }, + "8860": { + "op": "ADD" + }, + "8861": { + "op": "SWAP2" + }, + "8862": { + "op": "POP" + }, + "8863": { + "op": "DUP4" + }, + "8864": { + "op": "PUSH1", + "value": "0x20" + }, + "8866": { + "op": "DUP3" + }, + "8867": { + "op": "PUSH1", + "value": "0x5" + }, + "8869": { + "op": "SHL" + }, + "8870": { + "op": "DUP6" + }, + "8871": { + "op": "ADD" + }, + "8872": { + "op": "ADD" + }, + "8873": { + "op": "GT" + }, + "8874": { + "op": "ISZERO" + }, + "8875": { + "op": "PUSH2", + "value": "0x1F13" + }, + "8878": { + "op": "JUMPI" + }, + "8879": { + "op": "PUSH0" + }, + "8880": { + "op": "PUSH0" + }, + "8881": { + "op": "REVERT" + }, + "8882": { + "op": "JUMPDEST" + }, + "8883": { + "op": "PUSH0" + }, + "8884": { + "op": "PUSH0" + }, + "8885": { + "op": "PUSH1", + "value": "0x20" + }, + "8887": { + "op": "DUP4" + }, + "8888": { + "op": "DUP6" + }, + "8889": { + "op": "SUB" + }, + "8890": { + "op": "SLT" + }, + "8891": { + "op": "ISZERO" + }, + "8892": { + "op": "PUSH2", + "value": "0x22C3" + }, + "8895": { + "op": "JUMPI" + }, + "8896": { + "op": "PUSH0" + }, + "8897": { + "op": "PUSH0" + }, + "8898": { + "op": "REVERT" + }, + "8899": { + "op": "JUMPDEST" + }, + "8900": { + "op": "DUP3" + }, + "8901": { + "op": "CALLDATALOAD" + }, + "8902": { + "op": "PUSH1", + "value": "0x1" + }, + "8904": { + "op": "PUSH1", + "value": "0x1" + }, + "8906": { + "op": "PUSH1", + "value": "0x40" + }, + "8908": { + "op": "SHL" + }, + "8909": { + "op": "SUB" + }, + "8910": { + "op": "DUP2" + }, + "8911": { + "op": "GT" + }, + "8912": { + "op": "ISZERO" + }, + "8913": { + "op": "PUSH2", + "value": "0x22D8" + }, + "8916": { + "op": "JUMPI" + }, + "8917": { + "op": "PUSH0" + }, + "8918": { + "op": "PUSH0" + }, + "8919": { + "op": "REVERT" + }, + "8920": { + "op": "JUMPDEST" + }, + "8921": { + "op": "PUSH2", + "value": "0x22E4" + }, + "8924": { + "op": "DUP6" + }, + "8925": { + "op": "DUP3" + }, + "8926": { + "op": "DUP7" + }, + "8927": { + "op": "ADD" + }, + "8928": { + "op": "PUSH2", + "value": "0x2272" + }, + "8931": { + "jump": "i", + "op": "JUMP" + }, + "8932": { + "op": "JUMPDEST" + }, + "8933": { + "op": "SWAP1" + }, + "8934": { + "op": "SWAP7" + }, + "8935": { + "op": "SWAP1" + }, + "8936": { + "op": "SWAP6" + }, + "8937": { + "op": "POP" + }, + "8938": { + "op": "SWAP4" + }, + "8939": { + "op": "POP" + }, + "8940": { + "op": "POP" + }, + "8941": { + "op": "POP" + }, + "8942": { + "op": "POP" + }, + "8943": { + "jump": "o", + "op": "JUMP" + }, + "8944": { + "op": "JUMPDEST" + }, + "8945": { + "op": "PUSH0" + }, + "8946": { + "op": "PUSH0" + }, + "8947": { + "op": "PUSH1", + "value": "0x40" + }, + "8949": { + "op": "DUP4" + }, + "8950": { + "op": "DUP6" + }, + "8951": { + "op": "SUB" + }, + "8952": { + "op": "SLT" + }, + "8953": { + "op": "ISZERO" + }, + "8954": { + "op": "PUSH2", + "value": "0x2301" + }, + "8957": { + "op": "JUMPI" + }, + "8958": { + "op": "PUSH0" + }, + "8959": { + "op": "PUSH0" + }, + "8960": { + "op": "REVERT" + }, + "8961": { + "op": "JUMPDEST" + }, + "8962": { + "op": "DUP3" + }, + "8963": { + "op": "CALLDATALOAD" + }, + "8964": { + "op": "PUSH2", + "value": "0x230C" + }, + "8967": { + "op": "DUP2" + }, + "8968": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "8971": { + "jump": "i", + "op": "JUMP" + }, + "8972": { + "op": "JUMPDEST" + }, + "8973": { + "op": "SWAP2" + }, + "8974": { + "op": "POP" + }, + "8975": { + "op": "PUSH1", + "value": "0x20" + }, + "8977": { + "op": "DUP4" + }, + "8978": { + "op": "ADD" + }, + "8979": { + "op": "CALLDATALOAD" + }, + "8980": { + "op": "PUSH1", + "value": "0x1" + }, + "8982": { + "op": "PUSH1", + "value": "0x1" + }, + "8984": { + "op": "PUSH1", + "value": "0x40" + }, + "8986": { + "op": "SHL" + }, + "8987": { + "op": "SUB" + }, + "8988": { + "op": "DUP2" + }, + "8989": { + "op": "GT" + }, + "8990": { + "op": "ISZERO" + }, + "8991": { + "op": "PUSH2", + "value": "0x21C0" + }, + "8994": { + "op": "JUMPI" + }, + "8995": { + "op": "PUSH0" + }, + "8996": { + "op": "PUSH0" + }, + "8997": { + "op": "REVERT" + }, + "8998": { + "op": "JUMPDEST" + }, + "8999": { + "op": "DUP1" + }, + "9000": { + "op": "CALLDATALOAD" + }, + "9001": { + "op": "PUSH1", + "value": "0xFF" + }, + "9003": { + "op": "DUP2" + }, + "9004": { + "op": "AND" + }, + "9005": { + "op": "DUP2" + }, + "9006": { + "op": "EQ" + }, + "9007": { + "op": "PUSH2", + "value": "0x2336" + }, + "9010": { + "op": "JUMPI" + }, + "9011": { + "op": "PUSH0" + }, + "9012": { + "op": "PUSH0" + }, + "9013": { + "op": "REVERT" + }, + "9014": { + "op": "JUMPDEST" + }, + "9015": { + "op": "SWAP2" + }, + "9016": { + "op": "SWAP1" + }, + "9017": { + "op": "POP" + }, + "9018": { + "jump": "o", + "op": "JUMP" + }, + "9019": { + "op": "JUMPDEST" + }, + "9020": { + "op": "PUSH0" + }, + "9021": { + "op": "PUSH0" + }, + "9022": { + "op": "PUSH0" + }, + "9023": { + "op": "PUSH0" + }, + "9024": { + "op": "PUSH0" + }, + "9025": { + "op": "PUSH1", + "value": "0x80" + }, + "9027": { + "op": "DUP7" + }, + "9028": { + "op": "DUP9" + }, + "9029": { + "op": "SUB" + }, + "9030": { + "op": "SLT" + }, + "9031": { + "op": "ISZERO" + }, + "9032": { + "op": "PUSH2", + "value": "0x234F" + }, + "9035": { + "op": "JUMPI" + }, + "9036": { + "op": "PUSH0" + }, + "9037": { + "op": "PUSH0" + }, + "9038": { + "op": "REVERT" + }, + "9039": { + "op": "JUMPDEST" + }, + "9040": { + "op": "DUP6" + }, + "9041": { + "op": "CALLDATALOAD" + }, + "9042": { + "op": "PUSH2", + "value": "0x235A" + }, + "9045": { + "op": "DUP2" + }, + "9046": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9049": { + "jump": "i", + "op": "JUMP" + }, + "9050": { + "op": "JUMPDEST" + }, + "9051": { + "op": "SWAP5" + }, + "9052": { + "op": "POP" + }, + "9053": { + "op": "PUSH1", + "value": "0x20" + }, + "9055": { + "op": "DUP7" + }, + "9056": { + "op": "ADD" + }, + "9057": { + "op": "CALLDATALOAD" + }, + "9058": { + "op": "SWAP4" + }, + "9059": { + "op": "POP" + }, + "9060": { + "op": "PUSH1", + "value": "0x40" + }, + "9062": { + "op": "DUP7" + }, + "9063": { + "op": "ADD" + }, + "9064": { + "op": "CALLDATALOAD" + }, + "9065": { + "op": "PUSH1", + "value": "0x1" + }, + "9067": { + "op": "PUSH1", + "value": "0x1" + }, + "9069": { + "op": "PUSH1", + "value": "0x40" + }, + "9071": { + "op": "SHL" + }, + "9072": { + "op": "SUB" + }, + "9073": { + "op": "DUP2" + }, + "9074": { + "op": "GT" + }, + "9075": { + "op": "ISZERO" + }, + "9076": { + "op": "PUSH2", + "value": "0x237B" + }, + "9079": { + "op": "JUMPI" + }, + "9080": { + "op": "PUSH0" + }, + "9081": { + "op": "PUSH0" + }, + "9082": { + "op": "REVERT" + }, + "9083": { + "op": "JUMPDEST" + }, + "9084": { + "op": "PUSH2", + "value": "0x2387" + }, + "9087": { + "op": "DUP9" + }, + "9088": { + "op": "DUP3" + }, + "9089": { + "op": "DUP10" + }, + "9090": { + "op": "ADD" + }, + "9091": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "9094": { + "jump": "i", + "op": "JUMP" + }, + "9095": { + "op": "JUMPDEST" + }, + "9096": { + "op": "SWAP1" + }, + "9097": { + "op": "SWAP5" + }, + "9098": { + "op": "POP" + }, + "9099": { + "op": "SWAP3" + }, + "9100": { + "op": "POP" + }, + "9101": { + "op": "PUSH2", + "value": "0x239A" + }, + "9104": { + "op": "SWAP1" + }, + "9105": { + "op": "POP" + }, + "9106": { + "op": "PUSH1", + "value": "0x60" + }, + "9108": { + "op": "DUP8" + }, + "9109": { + "op": "ADD" + }, + "9110": { + "op": "PUSH2", + "value": "0x2326" + }, + "9113": { + "jump": "i", + "op": "JUMP" + }, + "9114": { + "op": "JUMPDEST" + }, + "9115": { + "op": "SWAP1" + }, + "9116": { + "op": "POP" + }, + "9117": { + "op": "SWAP3" + }, + "9118": { + "op": "SWAP6" + }, + "9119": { + "op": "POP" + }, + "9120": { + "op": "SWAP3" + }, + "9121": { + "op": "SWAP6" + }, + "9122": { + "op": "SWAP1" + }, + "9123": { + "op": "SWAP4" + }, + "9124": { + "op": "POP" + }, + "9125": { + "jump": "o", + "op": "JUMP" + }, + "9126": { + "op": "JUMPDEST" + }, + "9127": { + "op": "PUSH0" + }, + "9128": { + "op": "DUP2" + }, + "9129": { + "op": "MLOAD" + }, + "9130": { + "op": "DUP1" + }, + "9131": { + "op": "DUP5" + }, + "9132": { + "op": "MSTORE" + }, + "9133": { + "op": "DUP1" + }, + "9134": { + "op": "PUSH1", + "value": "0x20" + }, + "9136": { + "op": "DUP5" + }, + "9137": { + "op": "ADD" + }, + "9138": { + "op": "PUSH1", + "value": "0x20" + }, + "9140": { + "op": "DUP7" + }, + "9141": { + "op": "ADD" + }, + "9142": { + "op": "MCOPY" + }, + "9143": { + "op": "PUSH0" + }, + "9144": { + "op": "PUSH1", + "value": "0x20" + }, + "9146": { + "op": "DUP3" + }, + "9147": { + "op": "DUP7" + }, + "9148": { + "op": "ADD" + }, + "9149": { + "op": "ADD" + }, + "9150": { + "op": "MSTORE" + }, + "9151": { + "op": "PUSH1", + "value": "0x20" + }, + "9153": { + "op": "PUSH1", + "value": "0x1F" + }, + "9155": { + "op": "NOT" + }, + "9156": { + "op": "PUSH1", + "value": "0x1F" + }, + "9158": { + "op": "DUP4" + }, + "9159": { + "op": "ADD" + }, + "9160": { + "op": "AND" + }, + "9161": { + "op": "DUP6" + }, + "9162": { + "op": "ADD" + }, + "9163": { + "op": "ADD" + }, + "9164": { + "op": "SWAP2" + }, + "9165": { + "op": "POP" + }, + "9166": { + "op": "POP" + }, + "9167": { + "op": "SWAP3" + }, + "9168": { + "op": "SWAP2" + }, + "9169": { + "op": "POP" + }, + "9170": { + "op": "POP" + }, + "9171": { + "jump": "o", + "op": "JUMP" + }, + "9172": { + "op": "JUMPDEST" + }, + "9173": { + "op": "PUSH1", + "value": "0x20" + }, + "9175": { + "op": "DUP2" + }, + "9176": { + "op": "MSTORE" + }, + "9177": { + "op": "PUSH0" + }, + "9178": { + "op": "PUSH2", + "value": "0x83C" + }, + "9181": { + "op": "PUSH1", + "value": "0x20" + }, + "9183": { + "op": "DUP4" + }, + "9184": { + "op": "ADD" + }, + "9185": { + "op": "DUP5" + }, + "9186": { + "op": "PUSH2", + "value": "0x23A6" + }, + "9189": { + "jump": "i", + "op": "JUMP" + }, + "9190": { + "op": "JUMPDEST" + }, + "9191": { + "op": "PUSH0" + }, + "9192": { + "op": "PUSH0" + }, + "9193": { + "op": "PUSH0" + }, + "9194": { + "op": "PUSH1", + "value": "0x40" + }, + "9196": { + "op": "DUP5" + }, + "9197": { + "op": "DUP7" + }, + "9198": { + "op": "SUB" + }, + "9199": { + "op": "SLT" + }, + "9200": { + "op": "ISZERO" + }, + "9201": { + "op": "PUSH2", + "value": "0x23F8" + }, + "9204": { + "op": "JUMPI" + }, + "9205": { + "op": "PUSH0" + }, + "9206": { + "op": "PUSH0" + }, + "9207": { + "op": "REVERT" + }, + "9208": { + "op": "JUMPDEST" + }, + "9209": { + "op": "DUP4" + }, + "9210": { + "op": "CALLDATALOAD" + }, + "9211": { + "op": "PUSH2", + "value": "0x2403" + }, + "9214": { + "op": "DUP2" + }, + "9215": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9218": { + "jump": "i", + "op": "JUMP" + }, + "9219": { + "op": "JUMPDEST" + }, + "9220": { + "op": "SWAP3" + }, + "9221": { + "op": "POP" + }, + "9222": { + "op": "PUSH1", + "value": "0x20" + }, + "9224": { + "op": "DUP5" + }, + "9225": { + "op": "ADD" + }, + "9226": { + "op": "CALLDATALOAD" + }, + "9227": { + "op": "PUSH1", + "value": "0x1" + }, + "9229": { + "op": "PUSH1", + "value": "0x1" + }, + "9231": { + "op": "PUSH1", + "value": "0x40" + }, + "9233": { + "op": "SHL" + }, + "9234": { + "op": "SUB" + }, + "9235": { + "op": "DUP2" + }, + "9236": { + "op": "GT" + }, + "9237": { + "op": "ISZERO" + }, + "9238": { + "op": "PUSH2", + "value": "0x241D" + }, + "9241": { + "op": "JUMPI" + }, + "9242": { + "op": "PUSH0" + }, + "9243": { + "op": "PUSH0" + }, + "9244": { + "op": "REVERT" + }, + "9245": { + "op": "JUMPDEST" + }, + "9246": { + "op": "PUSH2", + "value": "0x2429" + }, + "9249": { + "op": "DUP7" + }, + "9250": { + "op": "DUP3" + }, + "9251": { + "op": "DUP8" + }, + "9252": { + "op": "ADD" + }, + "9253": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "9256": { + "jump": "i", + "op": "JUMP" + }, + "9257": { + "op": "JUMPDEST" + }, + "9258": { + "op": "SWAP5" + }, + "9259": { + "op": "SWAP8" + }, + "9260": { + "op": "SWAP1" + }, + "9261": { + "op": "SWAP7" + }, + "9262": { + "op": "POP" + }, + "9263": { + "op": "SWAP4" + }, + "9264": { + "op": "SWAP5" + }, + "9265": { + "op": "POP" + }, + "9266": { + "op": "POP" + }, + "9267": { + "op": "POP" + }, + "9268": { + "op": "POP" + }, + "9269": { + "jump": "o", + "op": "JUMP" + }, + "9270": { + "op": "JUMPDEST" + }, + "9271": { + "op": "PUSH0" + }, + "9272": { + "op": "PUSH1", + "value": "0x20" + }, + "9274": { + "op": "DUP3" + }, + "9275": { + "op": "DUP5" + }, + "9276": { + "op": "SUB" + }, + "9277": { + "op": "SLT" + }, + "9278": { + "op": "ISZERO" + }, + "9279": { + "op": "PUSH2", + "value": "0x2446" + }, + "9282": { + "op": "JUMPI" + }, + "9283": { + "op": "PUSH0" + }, + "9284": { + "op": "PUSH0" + }, + "9285": { + "op": "REVERT" + }, + "9286": { + "op": "JUMPDEST" + }, + "9287": { + "op": "DUP2" + }, + "9288": { + "op": "CALLDATALOAD" + }, + "9289": { + "op": "PUSH2", + "value": "0x83C" + }, + "9292": { + "op": "DUP2" + }, + "9293": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9296": { + "jump": "i", + "op": "JUMP" + }, + "9297": { + "op": "JUMPDEST" + }, + "9298": { + "op": "PUSH1", + "value": "0xFF" + }, + "9300": { + "op": "PUSH1", + "value": "0xF8" + }, + "9302": { + "op": "SHL" + }, + "9303": { + "op": "DUP9" + }, + "9304": { + "op": "AND" + }, + "9305": { + "op": "DUP2" + }, + "9306": { + "op": "MSTORE" + }, + "9307": { + "op": "PUSH1", + "value": "0xE0" + }, + "9309": { + "op": "PUSH1", + "value": "0x20" + }, + "9311": { + "op": "DUP3" + }, + "9312": { + "op": "ADD" + }, + "9313": { + "op": "MSTORE" + }, + "9314": { + "op": "PUSH0" + }, + "9315": { + "op": "PUSH2", + "value": "0x246F" + }, + "9318": { + "op": "PUSH1", + "value": "0xE0" + }, + "9320": { + "op": "DUP4" + }, + "9321": { + "op": "ADD" + }, + "9322": { + "op": "DUP10" + }, + "9323": { + "op": "PUSH2", + "value": "0x23A6" + }, + "9326": { + "jump": "i", + "op": "JUMP" + }, + "9327": { + "op": "JUMPDEST" + }, + "9328": { + "op": "DUP3" + }, + "9329": { + "op": "DUP2" + }, + "9330": { + "op": "SUB" + }, + "9331": { + "op": "PUSH1", + "value": "0x40" + }, + "9333": { + "op": "DUP5" + }, + "9334": { + "op": "ADD" + }, + "9335": { + "op": "MSTORE" + }, + "9336": { + "op": "PUSH2", + "value": "0x2481" + }, + "9339": { + "op": "DUP2" + }, + "9340": { + "op": "DUP10" + }, + "9341": { + "op": "PUSH2", + "value": "0x23A6" + }, + "9344": { + "jump": "i", + "op": "JUMP" + }, + "9345": { + "op": "JUMPDEST" + }, + "9346": { + "op": "PUSH1", + "value": "0x60" + }, + "9348": { + "op": "DUP5" + }, + "9349": { + "op": "ADD" + }, + "9350": { + "op": "DUP9" + }, + "9351": { + "op": "SWAP1" + }, + "9352": { + "op": "MSTORE" + }, + "9353": { + "op": "PUSH1", + "value": "0x1" + }, + "9355": { + "op": "PUSH1", + "value": "0x1" + }, + "9357": { + "op": "PUSH1", + "value": "0xA0" + }, + "9359": { + "op": "SHL" + }, + "9360": { + "op": "SUB" + }, + "9361": { + "op": "DUP8" + }, + "9362": { + "op": "AND" + }, + "9363": { + "op": "PUSH1", + "value": "0x80" + }, + "9365": { + "op": "DUP6" + }, + "9366": { + "op": "ADD" + }, + "9367": { + "op": "MSTORE" + }, + "9368": { + "op": "PUSH1", + "value": "0xA0" + }, + "9370": { + "op": "DUP5" + }, + "9371": { + "op": "ADD" + }, + "9372": { + "op": "DUP7" + }, + "9373": { + "op": "SWAP1" + }, + "9374": { + "op": "MSTORE" + }, + "9375": { + "op": "DUP4" + }, + "9376": { + "op": "DUP2" + }, + "9377": { + "op": "SUB" + }, + "9378": { + "op": "PUSH1", + "value": "0xC0" + }, + "9380": { + "op": "DUP6" + }, + "9381": { + "op": "ADD" + }, + "9382": { + "op": "MSTORE" + }, + "9383": { + "op": "DUP5" + }, + "9384": { + "op": "MLOAD" + }, + "9385": { + "op": "DUP1" + }, + "9386": { + "op": "DUP3" + }, + "9387": { + "op": "MSTORE" + }, + "9388": { + "op": "PUSH1", + "value": "0x20" + }, + "9390": { + "op": "DUP1" + }, + "9391": { + "op": "DUP8" + }, + "9392": { + "op": "ADD" + }, + "9393": { + "op": "SWAP4" + }, + "9394": { + "op": "POP" + }, + "9395": { + "op": "SWAP1" + }, + "9396": { + "op": "SWAP2" + }, + "9397": { + "op": "ADD" + }, + "9398": { + "op": "SWAP1" + }, + "9399": { + "op": "PUSH0" + }, + "9400": { + "op": "JUMPDEST" + }, + "9401": { + "op": "DUP2" + }, + "9402": { + "op": "DUP2" + }, + "9403": { + "op": "LT" + }, + "9404": { + "op": "ISZERO" + }, + "9405": { + "op": "PUSH2", + "value": "0x24D6" + }, + "9408": { + "op": "JUMPI" + }, + "9409": { + "op": "DUP4" + }, + "9410": { + "op": "MLOAD" + }, + "9411": { + "op": "DUP4" + }, + "9412": { + "op": "MSTORE" + }, + "9413": { + "op": "PUSH1", + "value": "0x20" + }, + "9415": { + "op": "SWAP4" + }, + "9416": { + "op": "DUP5" + }, + "9417": { + "op": "ADD" + }, + "9418": { + "op": "SWAP4" + }, + "9419": { + "op": "SWAP1" + }, + "9420": { + "op": "SWAP3" + }, + "9421": { + "op": "ADD" + }, + "9422": { + "op": "SWAP2" + }, + "9423": { + "op": "PUSH1", + "value": "0x1" + }, + "9425": { + "op": "ADD" + }, + "9426": { + "op": "PUSH2", + "value": "0x24B8" + }, + "9429": { + "op": "JUMP" + }, + "9430": { + "op": "JUMPDEST" + }, + "9431": { + "op": "POP" + }, + "9432": { + "op": "SWAP1" + }, + "9433": { + "op": "SWAP12" + }, + "9434": { + "op": "SWAP11" + }, + "9435": { + "op": "POP" + }, + "9436": { + "op": "POP" + }, + "9437": { + "op": "POP" + }, + "9438": { + "op": "POP" + }, + "9439": { + "op": "POP" + }, + "9440": { + "op": "POP" + }, + "9441": { + "op": "POP" + }, + "9442": { + "op": "POP" + }, + "9443": { + "op": "POP" + }, + "9444": { + "op": "POP" + }, + "9445": { + "op": "POP" + }, + "9446": { + "jump": "o", + "op": "JUMP" + }, + "9447": { + "op": "JUMPDEST" + }, + "9448": { + "op": "PUSH0" + }, + "9449": { + "op": "PUSH1", + "value": "0x20" + }, + "9451": { + "op": "DUP3" + }, + "9452": { + "op": "DUP5" + }, + "9453": { + "op": "SUB" + }, + "9454": { + "op": "SLT" + }, + "9455": { + "op": "ISZERO" + }, + "9456": { + "op": "PUSH2", + "value": "0x24F7" + }, + "9459": { + "op": "JUMPI" + }, + "9460": { + "op": "PUSH0" + }, + "9461": { + "op": "PUSH0" + }, + "9462": { + "op": "REVERT" + }, + "9463": { + "op": "JUMPDEST" + }, + "9464": { + "op": "POP" + }, + "9465": { + "op": "CALLDATALOAD" + }, + "9466": { + "op": "SWAP2" + }, + "9467": { + "op": "SWAP1" + }, + "9468": { + "op": "POP" + }, + "9469": { + "jump": "o", + "op": "JUMP" + }, + "9470": { + "op": "JUMPDEST" + }, + "9471": { + "op": "PUSH0" + }, + "9472": { + "op": "PUSH0" + }, + "9473": { + "op": "PUSH0" + }, + "9474": { + "op": "PUSH0" + }, + "9475": { + "op": "PUSH1", + "value": "0x60" + }, + "9477": { + "op": "DUP6" + }, + "9478": { + "op": "DUP8" + }, + "9479": { + "op": "SUB" + }, + "9480": { + "op": "SLT" + }, + "9481": { + "op": "ISZERO" + }, + "9482": { + "op": "PUSH2", + "value": "0x2511" + }, + "9485": { + "op": "JUMPI" + }, + "9486": { + "op": "PUSH0" + }, + "9487": { + "op": "PUSH0" + }, + "9488": { + "op": "REVERT" + }, + "9489": { + "op": "JUMPDEST" + }, + "9490": { + "op": "DUP5" + }, + "9491": { + "op": "CALLDATALOAD" + }, + "9492": { + "op": "PUSH2", + "value": "0x251C" + }, + "9495": { + "op": "DUP2" + }, + "9496": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9499": { + "jump": "i", + "op": "JUMP" + }, + "9500": { + "op": "JUMPDEST" + }, + "9501": { + "op": "SWAP4" + }, + "9502": { + "op": "POP" + }, + "9503": { + "op": "PUSH1", + "value": "0x20" + }, + "9505": { + "op": "DUP6" + }, + "9506": { + "op": "ADD" + }, + "9507": { + "op": "CALLDATALOAD" + }, + "9508": { + "op": "SWAP3" + }, + "9509": { + "op": "POP" + }, + "9510": { + "op": "PUSH1", + "value": "0x40" + }, + "9512": { + "op": "DUP6" + }, + "9513": { + "op": "ADD" + }, + "9514": { + "op": "CALLDATALOAD" + }, + "9515": { + "op": "PUSH1", + "value": "0x1" + }, + "9517": { + "op": "PUSH1", + "value": "0x1" + }, + "9519": { + "op": "PUSH1", + "value": "0x40" + }, + "9521": { + "op": "SHL" + }, + "9522": { + "op": "SUB" + }, + "9523": { + "op": "DUP2" + }, + "9524": { + "op": "GT" + }, + "9525": { + "op": "ISZERO" + }, + "9526": { + "op": "PUSH2", + "value": "0x253D" + }, + "9529": { + "op": "JUMPI" + }, + "9530": { + "op": "PUSH0" + }, + "9531": { + "op": "PUSH0" + }, + "9532": { + "op": "REVERT" + }, + "9533": { + "op": "JUMPDEST" + }, + "9534": { + "op": "PUSH2", + "value": "0x2549" + }, + "9537": { + "op": "DUP8" + }, + "9538": { + "op": "DUP3" + }, + "9539": { + "op": "DUP9" + }, + "9540": { + "op": "ADD" + }, + "9541": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "9544": { + "jump": "i", + "op": "JUMP" + }, + "9545": { + "op": "JUMPDEST" + }, + "9546": { + "op": "SWAP6" + }, + "9547": { + "op": "SWAP9" + }, + "9548": { + "op": "SWAP5" + }, + "9549": { + "op": "SWAP8" + }, + "9550": { + "op": "POP" + }, + "9551": { + "op": "SWAP6" + }, + "9552": { + "op": "POP" + }, + "9553": { + "op": "POP" + }, + "9554": { + "op": "POP" + }, + "9555": { + "op": "POP" + }, + "9556": { + "jump": "o", + "op": "JUMP" + }, + "9557": { + "op": "JUMPDEST" + }, + "9558": { + "op": "PUSH0" + }, + "9559": { + "op": "PUSH0" + }, + "9560": { + "op": "PUSH0" + }, + "9561": { + "op": "PUSH0" + }, + "9562": { + "op": "PUSH0" + }, + "9563": { + "op": "PUSH0" + }, + "9564": { + "op": "PUSH0" + }, + "9565": { + "op": "PUSH0" + }, + "9566": { + "op": "PUSH1", + "value": "0xA0" + }, + "9568": { + "op": "DUP10" + }, + "9569": { + "op": "DUP12" + }, + "9570": { + "op": "SUB" + }, + "9571": { + "op": "SLT" + }, + "9572": { + "op": "ISZERO" + }, + "9573": { + "op": "PUSH2", + "value": "0x256C" + }, + "9576": { + "op": "JUMPI" + }, + "9577": { + "op": "PUSH0" + }, + "9578": { + "op": "PUSH0" + }, + "9579": { + "op": "REVERT" + }, + "9580": { + "op": "JUMPDEST" + }, + "9581": { + "op": "DUP9" + }, + "9582": { + "op": "CALLDATALOAD" + }, + "9583": { + "op": "PUSH2", + "value": "0x2577" + }, + "9586": { + "op": "DUP2" + }, + "9587": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9590": { + "jump": "i", + "op": "JUMP" + }, + "9591": { + "op": "JUMPDEST" + }, + "9592": { + "op": "SWAP8" + }, + "9593": { + "op": "POP" + }, + "9594": { + "op": "PUSH1", + "value": "0x20" + }, + "9596": { + "op": "DUP10" + }, + "9597": { + "op": "ADD" + }, + "9598": { + "op": "CALLDATALOAD" + }, + "9599": { + "op": "PUSH2", + "value": "0x2587" + }, + "9602": { + "op": "DUP2" + }, + "9603": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9606": { + "jump": "i", + "op": "JUMP" + }, + "9607": { + "op": "JUMPDEST" + }, + "9608": { + "op": "SWAP7" + }, + "9609": { + "op": "POP" + }, + "9610": { + "op": "PUSH1", + "value": "0x40" + }, + "9612": { + "op": "DUP10" + }, + "9613": { + "op": "ADD" + }, + "9614": { + "op": "CALLDATALOAD" + }, + "9615": { + "op": "PUSH1", + "value": "0x1" + }, + "9617": { + "op": "PUSH1", + "value": "0x1" + }, + "9619": { + "op": "PUSH1", + "value": "0x40" + }, + "9621": { + "op": "SHL" + }, + "9622": { + "op": "SUB" + }, + "9623": { + "op": "DUP2" + }, + "9624": { + "op": "GT" + }, + "9625": { + "op": "ISZERO" + }, + "9626": { + "op": "PUSH2", + "value": "0x25A1" + }, + "9629": { + "op": "JUMPI" + }, + "9630": { + "op": "PUSH0" + }, + "9631": { + "op": "PUSH0" + }, + "9632": { + "op": "REVERT" + }, + "9633": { + "op": "JUMPDEST" + }, + "9634": { + "op": "PUSH2", + "value": "0x25AD" + }, + "9637": { + "op": "DUP12" + }, + "9638": { + "op": "DUP3" + }, + "9639": { + "op": "DUP13" + }, + "9640": { + "op": "ADD" + }, + "9641": { + "op": "PUSH2", + "value": "0x2272" + }, + "9644": { + "jump": "i", + "op": "JUMP" + }, + "9645": { + "op": "JUMPDEST" + }, + "9646": { + "op": "SWAP1" + }, + "9647": { + "op": "SWAP8" + }, + "9648": { + "op": "POP" + }, + "9649": { + "op": "SWAP6" + }, + "9650": { + "op": "POP" + }, + "9651": { + "op": "POP" + }, + "9652": { + "op": "PUSH1", + "value": "0x60" + }, + "9654": { + "op": "DUP10" + }, + "9655": { + "op": "ADD" + }, + "9656": { + "op": "CALLDATALOAD" + }, + "9657": { + "op": "PUSH1", + "value": "0x1" + }, + "9659": { + "op": "PUSH1", + "value": "0x1" + }, + "9661": { + "op": "PUSH1", + "value": "0x40" + }, + "9663": { + "op": "SHL" + }, + "9664": { + "op": "SUB" + }, + "9665": { + "op": "DUP2" + }, + "9666": { + "op": "GT" + }, + "9667": { + "op": "ISZERO" + }, + "9668": { + "op": "PUSH2", + "value": "0x25CB" + }, + "9671": { + "op": "JUMPI" + }, + "9672": { + "op": "PUSH0" + }, + "9673": { + "op": "PUSH0" + }, + "9674": { + "op": "REVERT" + }, + "9675": { + "op": "JUMPDEST" + }, + "9676": { + "op": "PUSH2", + "value": "0x25D7" + }, + "9679": { + "op": "DUP12" + }, + "9680": { + "op": "DUP3" + }, + "9681": { + "op": "DUP13" + }, + "9682": { + "op": "ADD" + }, + "9683": { + "op": "PUSH2", + "value": "0x2272" + }, + "9686": { + "jump": "i", + "op": "JUMP" + }, + "9687": { + "op": "JUMPDEST" + }, + "9688": { + "op": "SWAP1" + }, + "9689": { + "op": "SWAP6" + }, + "9690": { + "op": "POP" + }, + "9691": { + "op": "SWAP4" + }, + "9692": { + "op": "POP" + }, + "9693": { + "op": "POP" + }, + "9694": { + "op": "PUSH1", + "value": "0x80" + }, + "9696": { + "op": "DUP10" + }, + "9697": { + "op": "ADD" + }, + "9698": { + "op": "CALLDATALOAD" + }, + "9699": { + "op": "PUSH1", + "value": "0x1" + }, + "9701": { + "op": "PUSH1", + "value": "0x1" + }, + "9703": { + "op": "PUSH1", + "value": "0x40" + }, + "9705": { + "op": "SHL" + }, + "9706": { + "op": "SUB" + }, + "9707": { + "op": "DUP2" + }, + "9708": { + "op": "GT" + }, + "9709": { + "op": "ISZERO" + }, + "9710": { + "op": "PUSH2", + "value": "0x1FA7" + }, + "9713": { + "op": "JUMPI" + }, + "9714": { + "op": "PUSH0" + }, + "9715": { + "op": "PUSH0" + }, + "9716": { + "op": "REVERT" + }, + "9717": { + "op": "JUMPDEST" + }, + "9718": { + "op": "PUSH0" + }, + "9719": { + "op": "PUSH0" + }, + "9720": { + "op": "PUSH0" + }, + "9721": { + "op": "PUSH0" + }, + "9722": { + "op": "PUSH0" + }, + "9723": { + "op": "PUSH0" + }, + "9724": { + "op": "PUSH1", + "value": "0xA0" + }, + "9726": { + "op": "DUP8" + }, + "9727": { + "op": "DUP10" + }, + "9728": { + "op": "SUB" + }, + "9729": { + "op": "SLT" + }, + "9730": { + "op": "ISZERO" + }, + "9731": { + "op": "PUSH2", + "value": "0x260A" + }, + "9734": { + "op": "JUMPI" + }, + "9735": { + "op": "PUSH0" + }, + "9736": { + "op": "PUSH0" + }, + "9737": { + "op": "REVERT" + }, + "9738": { + "op": "JUMPDEST" + }, + "9739": { + "op": "DUP7" + }, + "9740": { + "op": "CALLDATALOAD" + }, + "9741": { + "op": "PUSH2", + "value": "0x2615" + }, + "9744": { + "op": "DUP2" + }, + "9745": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9748": { + "jump": "i", + "op": "JUMP" + }, + "9749": { + "op": "JUMPDEST" + }, + "9750": { + "op": "SWAP6" + }, + "9751": { + "op": "POP" + }, + "9752": { + "op": "PUSH1", + "value": "0x20" + }, + "9754": { + "op": "DUP8" + }, + "9755": { + "op": "ADD" + }, + "9756": { + "op": "CALLDATALOAD" + }, + "9757": { + "op": "SWAP5" + }, + "9758": { + "op": "POP" + }, + "9759": { + "op": "PUSH1", + "value": "0x40" + }, + "9761": { + "op": "DUP8" + }, + "9762": { + "op": "ADD" + }, + "9763": { + "op": "CALLDATALOAD" + }, + "9764": { + "op": "PUSH1", + "value": "0x1" + }, + "9766": { + "op": "PUSH1", + "value": "0x1" + }, + "9768": { + "op": "PUSH1", + "value": "0x40" + }, + "9770": { + "op": "SHL" + }, + "9771": { + "op": "SUB" + }, + "9772": { + "op": "DUP2" + }, + "9773": { + "op": "GT" + }, + "9774": { + "op": "ISZERO" + }, + "9775": { + "op": "PUSH2", + "value": "0x2636" + }, + "9778": { + "op": "JUMPI" + }, + "9779": { + "op": "PUSH0" + }, + "9780": { + "op": "PUSH0" + }, + "9781": { + "op": "REVERT" + }, + "9782": { + "op": "JUMPDEST" + }, + "9783": { + "op": "PUSH2", + "value": "0x2642" + }, + "9786": { + "op": "DUP10" + }, + "9787": { + "op": "DUP3" + }, + "9788": { + "op": "DUP11" + }, + "9789": { + "op": "ADD" + }, + "9790": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "9793": { + "jump": "i", + "op": "JUMP" + }, + "9794": { + "op": "JUMPDEST" + }, + "9795": { + "op": "SWAP1" + }, + "9796": { + "op": "SWAP6" + }, + "9797": { + "op": "POP" + }, + "9798": { + "op": "SWAP4" + }, + "9799": { + "op": "POP" + }, + "9800": { + "op": "PUSH2", + "value": "0x2655" + }, + "9803": { + "op": "SWAP1" + }, + "9804": { + "op": "POP" + }, + "9805": { + "op": "PUSH1", + "value": "0x60" + }, + "9807": { + "op": "DUP9" + }, + "9808": { + "op": "ADD" + }, + "9809": { + "op": "PUSH2", + "value": "0x2326" + }, + "9812": { + "jump": "i", + "op": "JUMP" + }, + "9813": { + "op": "JUMPDEST" + }, + "9814": { + "op": "SWAP6" + }, + "9815": { + "op": "SWAP9" + }, + "9816": { + "op": "SWAP5" + }, + "9817": { + "op": "SWAP8" + }, + "9818": { + "op": "POP" + }, + "9819": { + "op": "SWAP3" + }, + "9820": { + "op": "SWAP6" + }, + "9821": { + "op": "SWAP2" + }, + "9822": { + "op": "SWAP5" + }, + "9823": { + "op": "SWAP4" + }, + "9824": { + "op": "PUSH1", + "value": "0x80" + }, + "9826": { + "op": "SWAP1" + }, + "9827": { + "op": "SWAP3" + }, + "9828": { + "op": "ADD" + }, + "9829": { + "op": "CALLDATALOAD" + }, + "9830": { + "op": "SWAP3" + }, + "9831": { + "op": "POP" + }, + "9832": { + "op": "POP" + }, + "9833": { + "jump": "o", + "op": "JUMP" + }, + "9834": { + "op": "JUMPDEST" + }, + "9835": { + "op": "PUSH0" + }, + "9836": { + "op": "PUSH0" + }, + "9837": { + "op": "PUSH0" + }, + "9838": { + "op": "PUSH0" + }, + "9839": { + "op": "PUSH0" + }, + "9840": { + "op": "PUSH0" + }, + "9841": { + "op": "PUSH1", + "value": "0xA0" + }, + "9843": { + "op": "DUP8" + }, + "9844": { + "op": "DUP10" + }, + "9845": { + "op": "SUB" + }, + "9846": { + "op": "SLT" + }, + "9847": { + "op": "ISZERO" + }, + "9848": { + "op": "PUSH2", + "value": "0x267F" + }, + "9851": { + "op": "JUMPI" + }, + "9852": { + "op": "PUSH0" + }, + "9853": { + "op": "PUSH0" + }, + "9854": { + "op": "REVERT" + }, + "9855": { + "op": "JUMPDEST" + }, + "9856": { + "op": "DUP7" + }, + "9857": { + "op": "CALLDATALOAD" + }, + "9858": { + "op": "PUSH2", + "value": "0x268A" + }, + "9861": { + "op": "DUP2" + }, + "9862": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9865": { + "jump": "i", + "op": "JUMP" + }, + "9866": { + "op": "JUMPDEST" + }, + "9867": { + "op": "SWAP6" + }, + "9868": { + "op": "POP" + }, + "9869": { + "op": "PUSH1", + "value": "0x20" + }, + "9871": { + "op": "DUP8" + }, + "9872": { + "op": "ADD" + }, + "9873": { + "op": "CALLDATALOAD" + }, + "9874": { + "op": "PUSH2", + "value": "0x269A" + }, + "9877": { + "op": "DUP2" + }, + "9878": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "9881": { + "jump": "i", + "op": "JUMP" + }, + "9882": { + "op": "JUMPDEST" + }, + "9883": { + "op": "SWAP5" + }, + "9884": { + "op": "POP" + }, + "9885": { + "op": "PUSH1", + "value": "0x40" + }, + "9887": { + "op": "DUP8" + }, + "9888": { + "op": "ADD" + }, + "9889": { + "op": "CALLDATALOAD" + }, + "9890": { + "op": "SWAP4" + }, + "9891": { + "op": "POP" + }, + "9892": { + "op": "PUSH1", + "value": "0x60" + }, + "9894": { + "op": "DUP8" + }, + "9895": { + "op": "ADD" + }, + "9896": { + "op": "CALLDATALOAD" + }, + "9897": { + "op": "SWAP3" + }, + "9898": { + "op": "POP" + }, + "9899": { + "op": "PUSH1", + "value": "0x80" + }, + "9901": { + "op": "DUP8" + }, + "9902": { + "op": "ADD" + }, + "9903": { + "op": "CALLDATALOAD" + }, + "9904": { + "op": "PUSH1", + "value": "0x1" + }, + "9906": { + "op": "PUSH1", + "value": "0x1" + }, + "9908": { + "op": "PUSH1", + "value": "0x40" + }, + "9910": { + "op": "SHL" + }, + "9911": { + "op": "SUB" + }, + "9912": { + "op": "DUP2" + }, + "9913": { + "op": "GT" + }, + "9914": { + "op": "ISZERO" + }, + "9915": { + "op": "PUSH2", + "value": "0x26C2" + }, + "9918": { + "op": "JUMPI" + }, + "9919": { + "op": "PUSH0" + }, + "9920": { + "op": "PUSH0" + }, + "9921": { + "op": "REVERT" + }, + "9922": { + "op": "JUMPDEST" + }, + "9923": { + "op": "PUSH2", + "value": "0x26CE" + }, + "9926": { + "op": "DUP10" + }, + "9927": { + "op": "DUP3" + }, + "9928": { + "op": "DUP11" + }, + "9929": { + "op": "ADD" + }, + "9930": { + "op": "PUSH2", + "value": "0x1ED6" + }, + "9933": { + "jump": "i", + "op": "JUMP" + }, + "9934": { + "op": "JUMPDEST" + }, + "9935": { + "op": "SWAP8" + }, + "9936": { + "op": "SWAP11" + }, + "9937": { + "op": "SWAP7" + }, + "9938": { + "op": "SWAP10" + }, + "9939": { + "op": "POP" + }, + "9940": { + "op": "SWAP5" + }, + "9941": { + "op": "SWAP8" + }, + "9942": { + "op": "POP" + }, + "9943": { + "op": "SWAP3" + }, + "9944": { + "op": "SWAP6" + }, + "9945": { + "op": "SWAP4" + }, + "9946": { + "op": "SWAP5" + }, + "9947": { + "op": "SWAP3" + }, + "9948": { + "op": "POP" + }, + "9949": { + "op": "POP" + }, + "9950": { + "op": "POP" + }, + "9951": { + "jump": "o", + "op": "JUMP" + }, + "9952": { + "op": "JUMPDEST" + }, + "9953": { + "op": "DUP3" + }, + "9954": { + "op": "DUP2" + }, + "9955": { + "op": "MSTORE" + }, + "9956": { + "op": "PUSH1", + "value": "0x40" + }, + "9958": { + "op": "PUSH1", + "value": "0x20" + }, + "9960": { + "op": "DUP3" + }, + "9961": { + "op": "ADD" + }, + "9962": { + "op": "MSTORE" + }, + "9963": { + "op": "PUSH0" + }, + "9964": { + "op": "PUSH2", + "value": "0x9A6" + }, + "9967": { + "op": "PUSH1", + "value": "0x40" + }, + "9969": { + "op": "DUP4" + }, + "9970": { + "op": "ADD" + }, + "9971": { + "op": "DUP5" + }, + "9972": { + "op": "PUSH2", + "value": "0x23A6" + }, + "9975": { + "jump": "i", + "op": "JUMP" + }, + "9976": { + "op": "JUMPDEST" + }, + "9977": { + "op": "PUSH0" + }, + "9978": { + "op": "PUSH1", + "value": "0x20" + }, + "9980": { + "op": "DUP3" + }, + "9981": { + "op": "DUP5" + }, + "9982": { + "op": "SUB" + }, + "9983": { + "op": "SLT" + }, + "9984": { + "op": "ISZERO" + }, + "9985": { + "op": "PUSH2", + "value": "0x2708" + }, + "9988": { + "op": "JUMPI" + }, + "9989": { + "op": "PUSH0" + }, + "9990": { + "op": "PUSH0" + }, + "9991": { + "op": "REVERT" + }, + "9992": { + "op": "JUMPDEST" + }, + "9993": { + "op": "DUP2" + }, + "9994": { + "op": "MLOAD" + }, + "9995": { + "op": "PUSH2", + "value": "0x83C" + }, + "9998": { + "op": "DUP2" + }, + "9999": { + "op": "PUSH2", + "value": "0x1FC7" + }, + "10002": { + "jump": "i", + "op": "JUMP" + }, + "10003": { + "op": "JUMPDEST" + }, + "10004": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "10009": { + "op": "PUSH1", + "value": "0xE0" + }, + "10011": { + "op": "SHL" + }, + "10012": { + "op": "PUSH0" + }, + "10013": { + "op": "MSTORE" + }, + "10014": { + "op": "PUSH1", + "value": "0x32" + }, + "10016": { + "op": "PUSH1", + "value": "0x4" + }, + "10018": { + "op": "MSTORE" + }, + "10019": { + "op": "PUSH1", + "value": "0x24" + }, + "10021": { + "op": "PUSH0" + }, + "10022": { + "op": "REVERT" + }, + "10023": { + "op": "JUMPDEST" + }, + "10024": { + "op": "PUSH0" + }, + "10025": { + "op": "DUP3" + }, + "10026": { + "op": "CALLDATALOAD" + }, + "10027": { + "op": "PUSH1", + "value": "0x5E" + }, + "10029": { + "op": "NOT" + }, + "10030": { + "op": "DUP4" + }, + "10031": { + "op": "CALLDATASIZE" + }, + "10032": { + "op": "SUB" + }, + "10033": { + "op": "ADD" + }, + "10034": { + "op": "DUP2" + }, + "10035": { + "op": "SLT" + }, + "10036": { + "op": "PUSH2", + "value": "0x273B" + }, + "10039": { + "op": "JUMPI" + }, + "10040": { + "op": "PUSH0" + }, + "10041": { + "op": "PUSH0" + }, + "10042": { + "op": "REVERT" + }, + "10043": { + "op": "JUMPDEST" + }, + "10044": { + "op": "SWAP2" + }, + "10045": { + "op": "SWAP1" + }, + "10046": { + "op": "SWAP2" + }, + "10047": { + "op": "ADD" + }, + "10048": { + "op": "SWAP3" + }, + "10049": { + "op": "SWAP2" + }, + "10050": { + "op": "POP" + }, + "10051": { + "op": "POP" + }, + "10052": { + "jump": "o", + "op": "JUMP" + }, + "10053": { + "op": "JUMPDEST" + }, + "10054": { + "op": "PUSH0" + }, + "10055": { + "op": "PUSH0" + }, + "10056": { + "op": "DUP4" + }, + "10057": { + "op": "CALLDATALOAD" + }, + "10058": { + "op": "PUSH1", + "value": "0x1E" + }, + "10060": { + "op": "NOT" + }, + "10061": { + "op": "DUP5" + }, + "10062": { + "op": "CALLDATASIZE" + }, + "10063": { + "op": "SUB" + }, + "10064": { + "op": "ADD" + }, + "10065": { + "op": "DUP2" + }, + "10066": { + "op": "SLT" + }, + "10067": { + "op": "PUSH2", + "value": "0x275A" + }, + "10070": { + "op": "JUMPI" + }, + "10071": { + "op": "PUSH0" + }, + "10072": { + "op": "PUSH0" + }, + "10073": { + "op": "REVERT" + }, + "10074": { + "op": "JUMPDEST" + }, + "10075": { + "op": "DUP4" + }, + "10076": { + "op": "ADD" + }, + "10077": { + "op": "DUP1" + }, + "10078": { + "op": "CALLDATALOAD" + }, + "10079": { + "op": "SWAP2" + }, + "10080": { + "op": "POP" + }, + "10081": { + "op": "PUSH1", + "value": "0x1" + }, + "10083": { + "op": "PUSH1", + "value": "0x1" + }, + "10085": { + "op": "PUSH1", + "value": "0x40" + }, + "10087": { + "op": "SHL" + }, + "10088": { + "op": "SUB" + }, + "10089": { + "op": "DUP3" + }, + "10090": { + "op": "GT" + }, + "10091": { + "op": "ISZERO" + }, + "10092": { + "op": "PUSH2", + "value": "0x2773" + }, + "10095": { + "op": "JUMPI" + }, + "10096": { + "op": "PUSH0" + }, + "10097": { + "op": "PUSH0" + }, + "10098": { + "op": "REVERT" + }, + "10099": { + "op": "JUMPDEST" + }, + "10100": { + "op": "PUSH1", + "value": "0x20" + }, + "10102": { + "op": "ADD" + }, + "10103": { + "op": "SWAP2" + }, + "10104": { + "op": "POP" + }, + "10105": { + "op": "CALLDATASIZE" + }, + "10106": { + "op": "DUP2" + }, + "10107": { + "op": "SWAP1" + }, + "10108": { + "op": "SUB" + }, + "10109": { + "op": "DUP3" + }, + "10110": { + "op": "SGT" + }, + "10111": { + "op": "ISZERO" + }, + "10112": { + "op": "PUSH2", + "value": "0x1F13" + }, + "10115": { + "op": "JUMPI" + }, + "10116": { + "op": "PUSH0" + }, + "10117": { + "op": "PUSH0" + }, + "10118": { + "op": "REVERT" + }, + "10119": { + "op": "JUMPDEST" + }, + "10120": { + "op": "PUSH0" + }, + "10121": { + "op": "PUSH1", + "value": "0x20" + }, + "10123": { + "op": "DUP3" + }, + "10124": { + "op": "DUP5" + }, + "10125": { + "op": "SUB" + }, + "10126": { + "op": "SLT" + }, + "10127": { + "op": "ISZERO" + }, + "10128": { + "op": "PUSH2", + "value": "0x2797" + }, + "10131": { + "op": "JUMPI" + }, + "10132": { + "op": "PUSH0" + }, + "10133": { + "op": "PUSH0" + }, + "10134": { + "op": "REVERT" + }, + "10135": { + "op": "JUMPDEST" + }, + "10136": { + "op": "DUP2" + }, + "10137": { + "op": "MLOAD" + }, + "10138": { + "op": "PUSH2", + "value": "0x83C" + }, + "10141": { + "op": "DUP2" + }, + "10142": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "10145": { + "jump": "i", + "op": "JUMP" + }, + "10146": { + "op": "JUMPDEST" + }, + "10147": { + "op": "PUSH0" + }, + "10148": { + "op": "PUSH1", + "value": "0x20" + }, + "10150": { + "op": "DUP3" + }, + "10151": { + "op": "DUP5" + }, + "10152": { + "op": "SUB" + }, + "10153": { + "op": "SLT" + }, + "10154": { + "op": "ISZERO" + }, + "10155": { + "op": "PUSH2", + "value": "0x27B2" + }, + "10158": { + "op": "JUMPI" + }, + "10159": { + "op": "PUSH0" + }, + "10160": { + "op": "PUSH0" + }, + "10161": { + "op": "REVERT" + }, + "10162": { + "op": "JUMPDEST" + }, + "10163": { + "op": "POP" + }, + "10164": { + "op": "MLOAD" + }, + "10165": { + "op": "SWAP2" + }, + "10166": { + "op": "SWAP1" + }, + "10167": { + "op": "POP" + }, + "10168": { + "jump": "o", + "op": "JUMP" + }, + "10169": { + "op": "JUMPDEST" + }, + "10170": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "10175": { + "op": "PUSH1", + "value": "0xE0" + }, + "10177": { + "op": "SHL" + }, + "10178": { + "op": "PUSH0" + }, + "10179": { + "op": "MSTORE" + }, + "10180": { + "op": "PUSH1", + "value": "0x11" + }, + "10182": { + "op": "PUSH1", + "value": "0x4" + }, + "10184": { + "op": "MSTORE" + }, + "10185": { + "op": "PUSH1", + "value": "0x24" + }, + "10187": { + "op": "PUSH0" + }, + "10188": { + "op": "REVERT" + }, + "10189": { + "op": "JUMPDEST" + }, + "10190": { + "op": "DUP1" + }, + "10191": { + "op": "DUP3" + }, + "10192": { + "op": "ADD" + }, + "10193": { + "op": "DUP1" + }, + "10194": { + "op": "DUP3" + }, + "10195": { + "op": "GT" + }, + "10196": { + "op": "ISZERO" + }, + "10197": { + "op": "PUSH2", + "value": "0x672" + }, + "10200": { + "op": "JUMPI" + }, + "10201": { + "op": "PUSH2", + "value": "0x672" + }, + "10204": { + "op": "PUSH2", + "value": "0x27B9" + }, + "10207": { + "jump": "i", + "op": "JUMP" + }, + "10208": { + "op": "JUMPDEST" + }, + "10209": { + "op": "PUSH1", + "value": "0x40" + }, + "10211": { + "op": "DUP2" + }, + "10212": { + "op": "MSTORE" + }, + "10213": { + "op": "PUSH0" + }, + "10214": { + "op": "PUSH2", + "value": "0x27F2" + }, + "10217": { + "op": "PUSH1", + "value": "0x40" + }, + "10219": { + "op": "DUP4" + }, + "10220": { + "op": "ADD" + }, + "10221": { + "op": "DUP6" + }, + "10222": { + "op": "PUSH2", + "value": "0x23A6" + }, + "10225": { + "jump": "i", + "op": "JUMP" + }, + "10226": { + "op": "JUMPDEST" + }, + "10227": { + "op": "SWAP1" + }, + "10228": { + "op": "POP" + }, + "10229": { + "op": "PUSH1", + "value": "0x1" + }, + "10231": { + "op": "DUP1" + }, + "10232": { + "op": "PUSH1", + "value": "0xA0" + }, + "10234": { + "op": "SHL" + }, + "10235": { + "op": "SUB" + }, + "10236": { + "op": "DUP4" + }, + "10237": { + "op": "AND" + }, + "10238": { + "op": "PUSH1", + "value": "0x20" + }, + "10240": { + "op": "DUP4" + }, + "10241": { + "op": "ADD" + }, + "10242": { + "op": "MSTORE" + }, + "10243": { + "op": "SWAP4" + }, + "10244": { + "op": "SWAP3" + }, + "10245": { + "op": "POP" + }, + "10246": { + "op": "POP" + }, + "10247": { + "op": "POP" + }, + "10248": { + "jump": "o", + "op": "JUMP" + }, + "10249": { + "op": "JUMPDEST" + }, + "10250": { + "op": "PUSH0" + }, + "10251": { + "op": "PUSH1", + "value": "0x1" + }, + "10253": { + "op": "DUP3" + }, + "10254": { + "op": "ADD" + }, + "10255": { + "op": "PUSH2", + "value": "0x281A" + }, + "10258": { + "op": "JUMPI" + }, + "10259": { + "op": "PUSH2", + "value": "0x281A" + }, + "10262": { + "op": "PUSH2", + "value": "0x27B9" + }, + "10265": { + "jump": "i", + "op": "JUMP" + }, + "10266": { + "op": "JUMPDEST" + }, + "10267": { + "op": "POP" + }, + "10268": { + "op": "PUSH1", + "value": "0x1" + }, + "10270": { + "op": "ADD" + }, + "10271": { + "op": "SWAP1" + }, + "10272": { + "jump": "o", + "op": "JUMP" + }, + "10273": { + "op": "JUMPDEST" + }, + "10274": { + "op": "PUSH1", + "value": "0x1" + }, + "10276": { + "op": "DUP2" + }, + "10277": { + "op": "DUP2" + }, + "10278": { + "op": "SHR" + }, + "10279": { + "op": "SWAP1" + }, + "10280": { + "op": "DUP3" + }, + "10281": { + "op": "AND" + }, + "10282": { + "op": "DUP1" + }, + "10283": { + "op": "PUSH2", + "value": "0x2835" + }, + "10286": { + "op": "JUMPI" + }, + "10287": { + "op": "PUSH1", + "value": "0x7F" + }, + "10289": { + "op": "DUP3" + }, + "10290": { + "op": "AND" + }, + "10291": { + "op": "SWAP2" + }, + "10292": { + "op": "POP" + }, + "10293": { + "op": "JUMPDEST" + }, + "10294": { + "op": "PUSH1", + "value": "0x20" + }, + "10296": { + "op": "DUP3" + }, + "10297": { + "op": "LT" + }, + "10298": { + "op": "DUP2" + }, + "10299": { + "op": "SUB" + }, + "10300": { + "op": "PUSH2", + "value": "0x2853" + }, + "10303": { + "op": "JUMPI" + }, + "10304": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "10309": { + "op": "PUSH1", + "value": "0xE0" + }, + "10311": { + "op": "SHL" + }, + "10312": { + "op": "PUSH0" + }, + "10313": { + "op": "MSTORE" + }, + "10314": { + "op": "PUSH1", + "value": "0x22" + }, + "10316": { + "op": "PUSH1", + "value": "0x4" + }, + "10318": { + "op": "MSTORE" + }, + "10319": { + "op": "PUSH1", + "value": "0x24" + }, + "10321": { + "op": "PUSH0" + }, + "10322": { + "op": "REVERT" + }, + "10323": { + "op": "JUMPDEST" + }, + "10324": { + "op": "POP" + }, + "10325": { + "op": "SWAP2" + }, + "10326": { + "op": "SWAP1" + }, + "10327": { + "op": "POP" + }, + "10328": { + "jump": "o", + "op": "JUMP" + }, + "10329": { + "op": "JUMPDEST" + }, + "10330": { + "op": "DUP2" + }, + "10331": { + "op": "DUP2" + }, + "10332": { + "op": "SUB" + }, + "10333": { + "op": "DUP2" + }, + "10334": { + "op": "DUP2" + }, + "10335": { + "op": "GT" + }, + "10336": { + "op": "ISZERO" + }, + "10337": { + "op": "PUSH2", + "value": "0x672" + }, + "10340": { + "op": "JUMPI" + }, + "10341": { + "op": "PUSH2", + "value": "0x672" + }, + "10344": { + "op": "PUSH2", + "value": "0x27B9" + }, + "10347": { + "jump": "i", + "op": "JUMP" + }, + "10348": { + "op": "JUMPDEST" + }, + "10349": { + "op": "DUP2" + }, + "10350": { + "op": "DUP4" + }, + "10351": { + "op": "MSTORE" + }, + "10352": { + "op": "DUP2" + }, + "10353": { + "op": "DUP2" + }, + "10354": { + "op": "PUSH1", + "value": "0x20" + }, + "10356": { + "op": "DUP6" + }, + "10357": { + "op": "ADD" + }, + "10358": { + "op": "CALLDATACOPY" + }, + "10359": { + "op": "POP" + }, + "10360": { + "op": "PUSH0" + }, + "10361": { + "op": "DUP3" + }, + "10362": { + "op": "DUP3" + }, + "10363": { + "op": "ADD" + }, + "10364": { + "op": "PUSH1", + "value": "0x20" + }, + "10366": { + "op": "SWAP1" + }, + "10367": { + "op": "DUP2" + }, + "10368": { + "op": "ADD" + }, + "10369": { + "op": "SWAP2" + }, + "10370": { + "op": "SWAP1" + }, + "10371": { + "op": "SWAP2" + }, + "10372": { + "op": "MSTORE" + }, + "10373": { + "op": "PUSH1", + "value": "0x1F" + }, + "10375": { + "op": "SWAP1" + }, + "10376": { + "op": "SWAP2" + }, + "10377": { + "op": "ADD" + }, + "10378": { + "op": "PUSH1", + "value": "0x1F" + }, + "10380": { + "op": "NOT" + }, + "10381": { + "op": "AND" + }, + "10382": { + "op": "SWAP1" + }, + "10383": { + "op": "SWAP2" + }, + "10384": { + "op": "ADD" + }, + "10385": { + "op": "ADD" + }, + "10386": { + "op": "SWAP1" + }, + "10387": { + "jump": "o", + "op": "JUMP" + }, + "10388": { + "op": "JUMPDEST" + }, + "10389": { + "op": "PUSH1", + "value": "0x1" + }, + "10391": { + "op": "PUSH1", + "value": "0x1" + }, + "10393": { + "op": "PUSH1", + "value": "0xA0" + }, + "10395": { + "op": "SHL" + }, + "10396": { + "op": "SUB" + }, + "10397": { + "op": "DUP8" + }, + "10398": { + "op": "AND" + }, + "10399": { + "op": "DUP2" + }, + "10400": { + "op": "MSTORE" + }, + "10401": { + "op": "PUSH1", + "value": "0x80" + }, + "10403": { + "op": "PUSH1", + "value": "0x20" + }, + "10405": { + "op": "DUP3" + }, + "10406": { + "op": "ADD" + }, + "10407": { + "op": "DUP2" + }, + "10408": { + "op": "SWAP1" + }, + "10409": { + "op": "MSTORE" + }, + "10410": { + "op": "PUSH0" + }, + "10411": { + "op": "SWAP1" + }, + "10412": { + "op": "PUSH2", + "value": "0x28B8" + }, + "10415": { + "op": "SWAP1" + }, + "10416": { + "op": "DUP4" + }, + "10417": { + "op": "ADD" + }, + "10418": { + "op": "DUP8" + }, + "10419": { + "op": "DUP10" + }, + "10420": { + "op": "PUSH2", + "value": "0x286C" + }, + "10423": { + "jump": "i", + "op": "JUMP" + }, + "10424": { + "op": "JUMPDEST" + }, + "10425": { + "op": "DUP3" + }, + "10426": { + "op": "DUP2" + }, + "10427": { + "op": "SUB" + }, + "10428": { + "op": "PUSH1", + "value": "0x40" + }, + "10430": { + "op": "DUP5" + }, + "10431": { + "op": "ADD" + }, + "10432": { + "op": "MSTORE" + }, + "10433": { + "op": "PUSH2", + "value": "0x28CB" + }, + "10436": { + "op": "DUP2" + }, + "10437": { + "op": "DUP7" + }, + "10438": { + "op": "DUP9" + }, + "10439": { + "op": "PUSH2", + "value": "0x286C" + }, + "10442": { + "jump": "i", + "op": "JUMP" + }, + "10443": { + "op": "JUMPDEST" + }, + "10444": { + "op": "SWAP2" + }, + "10445": { + "op": "POP" + }, + "10446": { + "op": "POP" + }, + "10447": { + "op": "PUSH1", + "value": "0x1" + }, + "10449": { + "op": "DUP1" + }, + "10450": { + "op": "PUSH1", + "value": "0xA0" + }, + "10452": { + "op": "SHL" + }, + "10453": { + "op": "SUB" + }, + "10454": { + "op": "DUP4" + }, + "10455": { + "op": "AND" + }, + "10456": { + "op": "PUSH1", + "value": "0x60" + }, + "10458": { + "op": "DUP4" + }, + "10459": { + "op": "ADD" + }, + "10460": { + "op": "MSTORE" + }, + "10461": { + "op": "SWAP8" + }, + "10462": { + "op": "SWAP7" + }, + "10463": { + "op": "POP" + }, + "10464": { + "op": "POP" + }, + "10465": { + "op": "POP" + }, + "10466": { + "op": "POP" + }, + "10467": { + "op": "POP" + }, + "10468": { + "op": "POP" + }, + "10469": { + "op": "POP" + }, + "10470": { + "jump": "o", + "op": "JUMP" + }, + "10471": { + "op": "JUMPDEST" + }, + "10472": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "10477": { + "op": "PUSH1", + "value": "0xE0" + }, + "10479": { + "op": "SHL" + }, + "10480": { + "op": "PUSH0" + }, + "10481": { + "op": "MSTORE" + }, + "10482": { + "op": "PUSH1", + "value": "0x21" + }, + "10484": { + "op": "PUSH1", + "value": "0x4" + }, + "10486": { + "op": "MSTORE" + }, + "10487": { + "op": "PUSH1", + "value": "0x24" + }, + "10489": { + "op": "PUSH0" + }, + "10490": { + "op": "REVERT" + }, + "10491": { + "op": "JUMPDEST" + }, + "10492": { + "op": "DUP2" + }, + "10493": { + "op": "DUP4" + }, + "10494": { + "op": "DUP3" + }, + "10495": { + "op": "CALLDATACOPY" + }, + "10496": { + "op": "PUSH0" + }, + "10497": { + "op": "SWAP2" + }, + "10498": { + "op": "ADD" + }, + "10499": { + "op": "SWAP1" + }, + "10500": { + "op": "DUP2" + }, + "10501": { + "op": "MSTORE" + }, + "10502": { + "op": "SWAP2" + }, + "10503": { + "op": "SWAP1" + }, + "10504": { + "op": "POP" + }, + "10505": { + "jump": "o", + "op": "JUMP" + }, + "10506": { + "op": "JUMPDEST" + }, + "10507": { + "op": "PUSH1", + "value": "0x1F" + }, + "10509": { + "op": "DUP3" + }, + "10510": { + "op": "GT" + }, + "10511": { + "op": "ISZERO" + }, + "10512": { + "op": "PUSH2", + "value": "0x1346" + }, + "10515": { + "op": "JUMPI" + }, + "10516": { + "op": "DUP1" + }, + "10517": { + "op": "PUSH0" + }, + "10518": { + "op": "MSTORE" + }, + "10519": { + "op": "PUSH1", + "value": "0x20" + }, + "10521": { + "op": "PUSH0" + }, + "10522": { + "op": "KECCAK256" + }, + "10523": { + "op": "PUSH1", + "value": "0x1F" + }, + "10525": { + "op": "DUP5" + }, + "10526": { + "op": "ADD" + }, + "10527": { + "op": "PUSH1", + "value": "0x5" + }, + "10529": { + "op": "SHR" + }, + "10530": { + "op": "DUP2" + }, + "10531": { + "op": "ADD" + }, + "10532": { + "op": "PUSH1", + "value": "0x20" + }, + "10534": { + "op": "DUP6" + }, + "10535": { + "op": "LT" + }, + "10536": { + "op": "ISZERO" + }, + "10537": { + "op": "PUSH2", + "value": "0x292F" + }, + "10540": { + "op": "JUMPI" + }, + "10541": { + "op": "POP" + }, + "10542": { + "op": "DUP1" + }, + "10543": { + "op": "JUMPDEST" + }, + "10544": { + "op": "PUSH1", + "value": "0x1F" + }, + "10546": { + "op": "DUP5" + }, + "10547": { + "op": "ADD" + }, + "10548": { + "op": "PUSH1", + "value": "0x5" + }, + "10550": { + "op": "SHR" + }, + "10551": { + "op": "DUP3" + }, + "10552": { + "op": "ADD" + }, + "10553": { + "op": "SWAP2" + }, + "10554": { + "op": "POP" + }, + "10555": { + "op": "JUMPDEST" + }, + "10556": { + "op": "DUP2" + }, + "10557": { + "op": "DUP2" + }, + "10558": { + "op": "LT" + }, + "10559": { + "op": "ISZERO" + }, + "10560": { + "op": "PUSH2", + "value": "0xBC2" + }, + "10563": { + "op": "JUMPI" + }, + "10564": { + "op": "PUSH0" + }, + "10565": { + "op": "DUP2" + }, + "10566": { + "op": "SSTORE" + }, + "10567": { + "op": "PUSH1", + "value": "0x1" + }, + "10569": { + "op": "ADD" + }, + "10570": { + "op": "PUSH2", + "value": "0x293B" + }, + "10573": { + "op": "JUMP" + }, + "10574": { + "op": "JUMPDEST" + }, + "10575": { + "op": "DUP2" + }, + "10576": { + "op": "MLOAD" + }, + "10577": { + "op": "PUSH1", + "value": "0x1" + }, + "10579": { + "op": "PUSH1", + "value": "0x1" + }, + "10581": { + "op": "PUSH1", + "value": "0x40" + }, + "10583": { + "op": "SHL" + }, + "10584": { + "op": "SUB" + }, + "10585": { + "op": "DUP2" + }, + "10586": { + "op": "GT" + }, + "10587": { + "op": "ISZERO" + }, + "10588": { + "op": "PUSH2", + "value": "0x2967" + }, + "10591": { + "op": "JUMPI" + }, + "10592": { + "op": "PUSH2", + "value": "0x2967" + }, + "10595": { + "op": "PUSH2", + "value": "0x20F6" + }, + "10598": { + "jump": "i", + "op": "JUMP" + }, + "10599": { + "op": "JUMPDEST" + }, + "10600": { + "op": "PUSH2", + "value": "0x297B" + }, + "10603": { + "op": "DUP2" + }, + "10604": { + "op": "PUSH2", + "value": "0x2975" + }, + "10607": { + "op": "DUP5" + }, + "10608": { + "op": "SLOAD" + }, + "10609": { + "op": "PUSH2", + "value": "0x2821" + }, + "10612": { + "jump": "i", + "op": "JUMP" + }, + "10613": { + "op": "JUMPDEST" + }, + "10614": { + "op": "DUP5" + }, + "10615": { + "op": "PUSH2", + "value": "0x290A" + }, + "10618": { + "jump": "i", + "op": "JUMP" + }, + "10619": { + "op": "JUMPDEST" + }, + "10620": { + "op": "PUSH1", + "value": "0x20" + }, + "10622": { + "op": "PUSH1", + "value": "0x1F" + }, + "10624": { + "op": "DUP3" + }, + "10625": { + "op": "GT" + }, + "10626": { + "op": "PUSH1", + "value": "0x1" + }, + "10628": { + "op": "DUP2" + }, + "10629": { + "op": "EQ" + }, + "10630": { + "op": "PUSH2", + "value": "0x29AD" + }, + "10633": { + "op": "JUMPI" + }, + "10634": { + "op": "PUSH0" + }, + "10635": { + "op": "DUP4" + }, + "10636": { + "op": "ISZERO" + }, + "10637": { + "op": "PUSH2", + "value": "0x2996" + }, + "10640": { + "op": "JUMPI" + }, + "10641": { + "op": "POP" + }, + "10642": { + "op": "DUP5" + }, + "10643": { + "op": "DUP3" + }, + "10644": { + "op": "ADD" + }, + "10645": { + "op": "MLOAD" + }, + "10646": { + "op": "JUMPDEST" + }, + "10647": { + "op": "PUSH0" + }, + "10648": { + "op": "NOT" + }, + "10649": { + "op": "PUSH1", + "value": "0x3" + }, + "10651": { + "op": "DUP6" + }, + "10652": { + "op": "SWAP1" + }, + "10653": { + "op": "SHL" + }, + "10654": { + "op": "SHR" + }, + "10655": { + "op": "NOT" + }, + "10656": { + "op": "AND" + }, + "10657": { + "op": "PUSH1", + "value": "0x1" + }, + "10659": { + "op": "DUP5" + }, + "10660": { + "op": "SWAP1" + }, + "10661": { + "op": "SHL" + }, + "10662": { + "op": "OR" + }, + "10663": { + "op": "DUP5" + }, + "10664": { + "op": "SSTORE" + }, + "10665": { + "op": "PUSH2", + "value": "0xBC2" + }, + "10668": { + "op": "JUMP" + }, + "10669": { + "op": "JUMPDEST" + }, + "10670": { + "op": "PUSH0" + }, + "10671": { + "op": "DUP5" + }, + "10672": { + "op": "DUP2" + }, + "10673": { + "op": "MSTORE" + }, + "10674": { + "op": "PUSH1", + "value": "0x20" + }, + "10676": { + "op": "DUP2" + }, + "10677": { + "op": "KECCAK256" + }, + "10678": { + "op": "PUSH1", + "value": "0x1F" + }, + "10680": { + "op": "NOT" + }, + "10681": { + "op": "DUP6" + }, + "10682": { + "op": "AND" + }, + "10683": { + "op": "SWAP2" + }, + "10684": { + "op": "JUMPDEST" + }, + "10685": { + "op": "DUP3" + }, + "10686": { + "op": "DUP2" + }, + "10687": { + "op": "LT" + }, + "10688": { + "op": "ISZERO" + }, + "10689": { + "op": "PUSH2", + "value": "0x29DC" + }, + "10692": { + "op": "JUMPI" + }, + "10693": { + "op": "DUP8" + }, + "10694": { + "op": "DUP6" + }, + "10695": { + "op": "ADD" + }, + "10696": { + "op": "MLOAD" + }, + "10697": { + "op": "DUP3" + }, + "10698": { + "op": "SSTORE" + }, + "10699": { + "op": "PUSH1", + "value": "0x20" + }, + "10701": { + "op": "SWAP5" + }, + "10702": { + "op": "DUP6" + }, + "10703": { + "op": "ADD" + }, + "10704": { + "op": "SWAP5" + }, + "10705": { + "op": "PUSH1", + "value": "0x1" + }, + "10707": { + "op": "SWAP1" + }, + "10708": { + "op": "SWAP3" + }, + "10709": { + "op": "ADD" + }, + "10710": { + "op": "SWAP2" + }, + "10711": { + "op": "ADD" + }, + "10712": { + "op": "PUSH2", + "value": "0x29BC" + }, + "10715": { + "op": "JUMP" + }, + "10716": { + "op": "JUMPDEST" + }, + "10717": { + "op": "POP" + }, + "10718": { + "op": "DUP5" + }, + "10719": { + "op": "DUP3" + }, + "10720": { + "op": "LT" + }, + "10721": { + "op": "ISZERO" + }, + "10722": { + "op": "PUSH2", + "value": "0x29F9" + }, + "10725": { + "op": "JUMPI" + }, + "10726": { + "op": "DUP7" + }, + "10727": { + "op": "DUP5" + }, + "10728": { + "op": "ADD" + }, + "10729": { + "op": "MLOAD" + }, + "10730": { + "op": "PUSH0" + }, + "10731": { + "op": "NOT" + }, + "10732": { + "op": "PUSH1", + "value": "0x3" + }, + "10734": { + "op": "DUP8" + }, + "10735": { + "op": "SWAP1" + }, + "10736": { + "op": "SHL" + }, + "10737": { + "op": "PUSH1", + "value": "0xF8" + }, + "10739": { + "op": "AND" + }, + "10740": { + "op": "SHR" + }, + "10741": { + "op": "NOT" + }, + "10742": { + "op": "AND" + }, + "10743": { + "op": "DUP2" + }, + "10744": { + "op": "SSTORE" + }, + "10745": { + "op": "JUMPDEST" + }, + "10746": { + "op": "POP" + }, + "10747": { + "op": "POP" + }, + "10748": { + "op": "POP" + }, + "10749": { + "op": "POP" + }, + "10750": { + "op": "PUSH1", + "value": "0x1" + }, + "10752": { + "op": "SWAP1" + }, + "10753": { + "op": "DUP2" + }, + "10754": { + "op": "SHL" + }, + "10755": { + "op": "ADD" + }, + "10756": { + "op": "SWAP1" + }, + "10757": { + "op": "SSTORE" + }, + "10758": { + "op": "POP" + }, + "10759": { + "jump": "o", + "op": "JUMP" + }, + "10760": { + "op": "JUMPDEST" + }, + "10761": { + "op": "PUSH0" + }, + "10762": { + "op": "PUSH0" + }, + "10763": { + "op": "PUSH0" + }, + "10764": { + "op": "PUSH1", + "value": "0x60" + }, + "10766": { + "op": "DUP5" + }, + "10767": { + "op": "DUP7" + }, + "10768": { + "op": "SUB" + }, + "10769": { + "op": "SLT" + }, + "10770": { + "op": "ISZERO" + }, + "10771": { + "op": "PUSH2", + "value": "0x2A1A" + }, + "10774": { + "op": "JUMPI" + }, + "10775": { + "op": "PUSH0" + }, + "10776": { + "op": "PUSH0" + }, + "10777": { + "op": "REVERT" + }, + "10778": { + "op": "JUMPDEST" + }, + "10779": { + "op": "DUP4" + }, + "10780": { + "op": "MLOAD" + }, + "10781": { + "op": "PUSH1", + "value": "0x20" + }, + "10783": { + "op": "DUP6" + }, + "10784": { + "op": "ADD" + }, + "10785": { + "op": "MLOAD" + }, + "10786": { + "op": "SWAP1" + }, + "10787": { + "op": "SWAP4" + }, + "10788": { + "op": "POP" + }, + "10789": { + "op": "PUSH2", + "value": "0x2A2D" + }, + "10792": { + "op": "DUP2" + }, + "10793": { + "op": "PUSH2", + "value": "0x1EC2" + }, + "10796": { + "jump": "i", + "op": "JUMP" + }, + "10797": { + "op": "JUMPDEST" + }, + "10798": { + "op": "PUSH1", + "value": "0x40" + }, + "10800": { + "op": "SWAP5" + }, + "10801": { + "op": "SWAP1" + }, + "10802": { + "op": "SWAP5" + }, + "10803": { + "op": "ADD" + }, + "10804": { + "op": "MLOAD" + }, + "10805": { + "op": "SWAP3" + }, + "10806": { + "op": "SWAP6" + }, + "10807": { + "op": "SWAP4" + }, + "10808": { + "op": "SWAP5" + }, + "10809": { + "op": "POP" + }, + "10810": { + "op": "SWAP2" + }, + "10811": { + "op": "SWAP3" + }, + "10812": { + "op": "SWAP2" + }, + "10813": { + "op": "POP" + }, + "10814": { + "op": "POP" + }, + "10815": { + "jump": "o", + "op": "JUMP" + }, + "10816": { + "op": "JUMPDEST" + }, + "10817": { + "op": "PUSH0" + }, + "10818": { + "op": "DUP3" + }, + "10819": { + "op": "MLOAD" + }, + "10820": { + "op": "DUP1" + }, + "10821": { + "op": "PUSH1", + "value": "0x20" + }, + "10823": { + "op": "DUP6" + }, + "10824": { + "op": "ADD" + }, + "10825": { + "op": "DUP5" + }, + "10826": { + "op": "MCOPY" + }, + "10827": { + "op": "PUSH0" + }, + "10828": { + "op": "SWAP3" + }, + "10829": { + "op": "ADD" + }, + "10830": { + "op": "SWAP2" + }, + "10831": { + "op": "DUP3" + }, + "10832": { + "op": "MSTORE" + }, + "10833": { + "op": "POP" + }, + "10834": { + "op": "SWAP2" + }, + "10835": { + "op": "SWAP1" + }, + "10836": { + "op": "POP" + }, + "10837": { + "jump": "o", + "op": "JUMP" + } + }, + "sha1": "ae3b9d77647da6d23be3c66af6c1c4eee7378199", + "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport {HyperAccountCommitMinter} from \"./HyperAccountCommitMinter.sol\";\n\ncontract HyperAccount9CharCommitMinter is HyperAccountCommitMinter {\n constructor(address _hypermap, uint256 _minCommitAge, uint256 _maxCommitAge)\n HyperAccountCommitMinter(_hypermap, _minCommitAge, _maxCommitAge)\n {}\n\n function initialize() public override initializer {\n __UUPSUpgradeable_init();\n __EIP712_init(\"HyperAccount9CharCommitMinter\", \"1\");\n }\n\n function _mint(address to, bytes calldata name, bytes calldata initialization, address implementation)\n internal\n override\n returns (address tba)\n {\n if (name.length < 9) revert(\"Label too short\");\n return super._mint(to, name, initialization, implementation);\n }\n}\n", + "sourceMap": "139:700:97:-:0;;;1171:4:68;1128:48;;212:157:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;322:9;333:13;348;322:9;1967:22:101;:20;:22::i;:::-;-1:-1:-1;;;;;2000:32:101;;;1275:29:99;;::::1;1271:122;;;1327:55;::::0;-1:-1:-1;;;1327:55:99;;::::1;::::0;::::1;709:25:149::0;;;750:18;;;743:34;;;682:18;;1327:55:99::1;;;;;;;;1271:122;1438:9;1406:29;1422:13:::0;1406;:29:::1;:::i;:::-;:41;1402:145;;;1470:66;::::0;-1:-1:-1;;;1470:66:99;;::::1;::::0;::::1;1229:25:149::0;;;1270:18;;;1263:34;;;1526:9:99::1;1313:18:149::0;;;1306:34;1202:18;;1470:66:99::1;1018:328:149::0;1402:145:99::1;1557:28;::::0;;;;1595::::1;::::0;-1:-1:-1;139:700:97;;-1:-1:-1;;;139:700:97;7711:422:67;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:67;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:67;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:67;-1:-1:-1;;;;;8035:33:67;;;;;8087:29;;1495:50:149;;;8087:29:67;;1483:2:149;1468:18;8087:29:67;;;;;;;7981:146;7760:373;7711:422::o;14:516:149:-;102:6;110;118;171:2;159:9;150:7;146:23;142:32;139:52;;;187:1;184;177:12;139:52;213:16;;-1:-1:-1;;;;;258:31:149;;248:42;;238:70;;304:1;301;294:12;238:70;398:2;383:18;;377:25;494:2;479:18;;;473:25;327:5;;377:25;;-1:-1:-1;473:25:149;14:516;-1:-1:-1;;;14:516:149:o;788:225::-;855:9;;;876:11;;;873:134;;;929:10;924:3;920:20;917:1;910:31;964:4;961:1;954:15;992:4;989:1;982:15;873:134;788:225;;;;:::o;1351:200::-;139:700:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "sourcePath": "src/account/HyperAccount9CharCommitMinter.sol", + "type": "contract" +} \ No newline at end of file diff --git a/contracts/HyperAccountMinter.json b/contracts/HyperAccountMinter.json new file mode 100644 index 00000000..aa5affc5 --- /dev/null +++ b/contracts/HyperAccountMinter.json @@ -0,0 +1,40919 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_hypermap", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "error", + "type": "bytes" + } + ], + "name": "ExecuteError", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "actual", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + } + ], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "NotOperatorOrEntryPoint", + "type": "error" + }, + { + "inputs": [], + "name": "OwnershipCycle", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "EIP712DomainChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "SIG_VALIDATION_FAILED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SIG_VALIDATION_SUCCEEDED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "entryPoint", + "outputs": [ + { + "internalType": "contract IEntryPoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint8", + "name": "operation", + "type": "uint8" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint8", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "txGas", + "type": "uint256" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct BaseAccount.Call[]", + "name": "calls", + "type": "tuple[]" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hypermap", + "outputs": [ + { + "internalType": "contract IHypermap", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "isOperator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "isValidSigner", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "initialization", + "type": "bytes" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "address", + "name": "tba", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "receivedTokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "allSourcePaths": { + "10": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC5267.sol", + "100": "src/account/HyperAccountMinter.sol", + "101": "src/account/HyperAccountMinterUpgradable.sol", + "109": "src/account/mech/Account.sol", + "110": "src/account/mech/ERC721TokenBoundMech.sol", + "111": "src/account/mech/Mech.sol", + "112": "src/account/mech/Receiver.sol", + "113": "src/account/mech/TokenBoundMech.sol", + "126": "src/interfaces/IHyperAccountMinter.sol", + "13": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol", + "134": "src/interfaces/IMech.sol", + "5": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1271.sol", + "67": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol", + "68": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol", + "75": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/cryptography/EIP712Upgradeable.sol", + "77": "./dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Account.sol", + "78": "./dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Executable.sol", + "82": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC1155TokenReceiver.sol", + "83": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC721TokenReceiver.sol", + "84": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC777TokensRecipient.sol", + "85": "dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/BaseAccount.sol", + "88": "dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAccount.sol", + "96": "src/account/HyperAccount.sol" + }, + "ast": { + "absolutePath": "src/account/HyperAccountMinter.sol", + "exportedSymbols": { + "HyperAccountMinter": [ + 698 + ], + "HyperAccountMinterUpgradable": [ + 914 + ] + }, + "id": 699, + "license": "Apache-2.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 670, + "literals": [ + "solidity", + "^", + "0.8", + ".27" + ], + "nodeType": "PragmaDirective", + "src": "39:24:100" + }, + { + "absolutePath": "src/account/HyperAccountMinterUpgradable.sol", + "file": "./HyperAccountMinterUpgradable.sol", + "id": 672, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 699, + "sourceUnit": 915, + "src": "65:80:100", + "symbolAliases": [ + { + "foreign": { + "id": 671, + "name": "HyperAccountMinterUpgradable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "73:28:100", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 673, + "name": "HyperAccountMinterUpgradable", + "nameLocations": [ + "178:28:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 914, + "src": "178:28:100" + }, + "id": 674, + "nodeType": "InheritanceSpecifier", + "src": "178:28:100" + } + ], + "canonicalName": "HyperAccountMinter", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 698, + "linearizedBaseContracts": [ + 698, + 914, + 15626, + 28628, + 15282, + 28603, + 15100, + 85, + 3694, + 4328, + 17446, + 4052, + 4152, + 17392, + 17412, + 17374, + 3613, + 17278, + 8539, + 25136, + 15976, + 17337, + 7929 + ], + "name": "HyperAccountMinter", + "nameLocation": "156:18:100", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 682, + "nodeType": "Block", + "src": "284:2:100", + "statements": [] + }, + "id": 683, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 679, + "name": "_hypermap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 676, + "src": "273:9:100", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 680, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 678, + "name": "HyperAccountMinterUpgradable", + "nameLocations": [ + "244:28:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 914, + "src": "244:28:100" + }, + "nodeType": "ModifierInvocation", + "src": "244:39:100" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 676, + "mutability": "mutable", + "name": "_hypermap", + "nameLocation": "233:9:100", + "nodeType": "VariableDeclaration", + "scope": 683, + "src": "225:17:100", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 675, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "225:7:100", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "224:19:100" + }, + "returnParameters": { + "id": 681, + "nodeType": "ParameterList", + "parameters": [], + "src": "284:0:100" + }, + "scope": 698, + "src": "213:73:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 7909 + ], + "body": { + "id": 696, + "nodeType": "Block", + "src": "333:91:100", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 688, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15154, + "src": "343:22:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "343:24:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 690, + "nodeType": "ExpressionStatement", + "src": "343:24:100" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "48797065724163636f756e744d696e746572", + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "391:20:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_387258d54f6a607b6a211f7778427d1295c19d9ba29f59f489d237367c3dde40", + "typeString": "literal_string \"HyperAccountMinter\"" + }, + "value": "HyperAccountMinter" + }, + { + "hexValue": "31", + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "413:3:100", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_387258d54f6a607b6a211f7778427d1295c19d9ba29f59f489d237367c3dde40", + "typeString": "literal_string \"HyperAccountMinter\"" + }, + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 691, + "name": "__EIP712_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15339, + "src": "377:13:100", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "377:40:100", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 695, + "nodeType": "ExpressionStatement", + "src": "377:40:100" + } + ] + }, + "functionSelector": "8129fc1c", + "id": 697, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 686, + "kind": "modifierInvocation", + "modifierName": { + "id": 685, + "name": "initializer", + "nameLocations": [ + "321:11:100" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14954, + "src": "321:11:100" + }, + "nodeType": "ModifierInvocation", + "src": "321:11:100" + } + ], + "name": "initialize", + "nameLocation": "301:10:100", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 684, + "nodeType": "ParameterList", + "parameters": [], + "src": "311:2:100" + }, + "returnParameters": { + "id": 687, + "nodeType": "ParameterList", + "parameters": [], + "src": "333:0:100" + }, + "scope": 698, + "src": "292:132:100", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 699, + "src": "147:279:100", + "usedErrors": [ + 4168, + 7897, + 8516, + 14296, + 14301, + 14306, + 14863, + 14866, + 15127, + 15132, + 16694, + 16707, + 17042, + 29057, + 36773 + ], + "usedEvents": [ + 14871, + 28608, + 29024 + ] + } + ], + "src": "39:388:100" + }, + "bytecode": "60c060405230608052348015610013575f5ffd5b506040516127a63803806127a6833981016040819052610032916100ff565b8061003b61004d565b6001600160a01b031660a0525061012c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561009d5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100fc5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f6020828403121561010f575f5ffd5b81516001600160a01b0381168114610125575f5ffd5b9392505050565b60805160a0516126446101625f395f81816103fb0152610d7301525f8181610fd90152818161100201526111dd01526126445ff3fe60806040526004361061017d575f3560e01c806384b0196e116100cd578063b61d27f611610087578063ca3b98bb11610062578063ca3b98bb14610480578063d087d28814610493578063f23a6e61146104a7578063fc0c546a146104d3575f5ffd5b8063b61d27f61461041f578063bc197c811461043e578063c19d93fb1461046c575f5ffd5b806384b0196e146103495780638f41ec5a146103705780639cdf379c14610384578063ad3cb1cc14610397578063b0d691fe146103c7578063b479d600146103ed575f5ffd5b806334fcd5be11610138578063523e326011610113578063523e3260146102e357806352d1902d146103025780636d70f7ae146103165780638129fc1c14610335575f5ffd5b806334fcd5be146102915780634f1ef286146102b057806351945447146102c3575f5ffd5b806223de291461018857806301ffc9a7146101ae578063094cefed146101e2578063150b7a021461020d5780631626ba7e1461024557806319822f7c14610264575f5ffd5b3661018457005b5f5ffd5b348015610193575f5ffd5b506101ac6101a2366004611b4e565b5050505050505050565b005b3480156101b9575f5ffd5b506101cd6101c8366004611c10565b61050a565b60405190151581526020015b60405180910390f35b6101f56101f0366004611c2b565b610535565b6040516001600160a01b0390911681526020016101d9565b348015610218575f5ffd5b5061022c610227366004611cbd565b61054f565b6040516001600160e01b031990911681526020016101d9565b348015610250575f5ffd5b5061022c61025f366004611dc7565b6105a9565b34801561026f575f5ffd5b5061028361027e366004611e0a565b6106ce565b6040519081526020016101d9565b34801561029c575f5ffd5b506101ac6102ab366004611e98565b610700565b6101ac6102be366004611ed6565b6107f0565b6102d66102d1366004611f21565b61080f565b6040516101d99190611fba565b3480156102ee575f5ffd5b5061022c6102fd366004611fcc565b61083b565b34801561030d575f5ffd5b50610283610860565b348015610321575f5ffd5b506101cd61033036600461201c565b61087b565b348015610340575f5ffd5b506101ac610919565b348015610354575f5ffd5b5061035d610a70565b6040516101d99796959493929190612037565b34801561037b575f5ffd5b50610283600181565b34801561038f575f5ffd5b506102835f81565b3480156103a2575f5ffd5b506102d6604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156103d2575f5ffd5b50734337084d9e255ff0702461cf8895ce9e3b5ff1086101f5565b3480156103f8575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006101f5565b34801561042a575f5ffd5b506101ac6104393660046120cd565b610b19565b348015610449575f5ffd5b5061022c610458366004612124565b63bc197c8160e01b98975050505050505050565b348015610477575f5ffd5b50610283610b71565b6102d661048e3660046121c4565b610c58565b34801561049e575f5ffd5b50610283610c91565b3480156104b2575f5ffd5b5061022c6104c1366004612239565b63f23a6e6160e01b9695505050505050565b3480156104de575f5ffd5b506104e7610d1a565b604080519384526001600160a01b039092166020840152908201526060016101d9565b5f61051482610d30565b8061052f57506001600160e01b03198216633c1cc5f160e01b145b92915050565b5f610544878787878787610d5a565b979650505050505050565b5f5f5f61055a610d1a565b909350915050336001600160a01b03831614801561057757508086145b156105955760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f6105c985602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f0361069457828583016020016105ea8261087b565b15801561060057506001600160a01b0382163014155b1561061b57506001600160e01b0319945061052f9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610649908b9085906004016122af565b602060405180830381865afa158015610664573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068891906122c7565b9550505050505061052f565b6106a361033087838686610df2565b156106bb5750630b135d3f60e11b925061052f915050565b506001600160e01b031995945050505050565b5f6106d7610e1e565b6106e18484610e83565b90506106f08460200135610ee0565b6106f982610f29565b9392505050565b610708610f6e565b805f5b818110156107ea5736848483818110610726576107266122e2565b905060200281019061073891906122f6565b90505f61079661074b602084018461201c565b602084013561075d6040860186612314565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610f76565b9050806107e057836001036107b2576107ad610f8c565b6107e0565b826107bc5f610f9d565b604051635a15467560e01b81526004016107d79291906122af565b60405180910390fd5b505060010161070b565b50505050565b6107f8610fce565b61080182611072565b61080b82826110ba565b5050565b60605f61082087878787875a61117b565b925090508061083157815160208301fd5b5095945050505050565b5f6108458461087b565b61084f575f610858565b630291f19360e51b5b949350505050565b5f6108696111d2565b505f5160206125ef5f395f51905f5290565b5f5f5f610886610d1a565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa1580156108d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f79190612356565b6001600160a01b031614801561085857505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561095d5750825b90505f826001600160401b031660011480156109785750303b155b905081158015610986575080155b156109a45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156109ce57845460ff60401b1916600160401b1785555b6109d661121b565b610a2360405180604001604052806012815260200171243cb832b920b1b1b7bab73a26b4b73a32b960711b815250604051806040016040528060018152602001603160f81b815250611223565b8315610a6957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f60608082808083815f5160206125cf5f395f51905f528054909150158015610a9b57506001810154155b610adf5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016107d7565b610ae7611235565b610aef6112f5565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b610b21610f6e565b5f610b62858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610f76565b905080610a6957610a69610f8c565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190612371565b8254604051919250610c39918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f610c7588888888888815610c6f578861117b565b5a61117b565b9250905080610c8657815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610cf1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d159190612371565b905090565b5f5f5f610d25611333565b925092509250909192565b5f610d3a8261133f565b8061052f57506001600160e01b03198216636faff5f160e01b1492915050565b60405163094cefed60e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed90610db2908a908a908a908a908a908a906004016123b0565b6020604051808303815f875af1158015610dce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105449190612356565b5f5f5f5f610e02888888886113e0565b925092509250610e1282826114a8565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff10814610e815760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016107d7565b565b5f6004610e936060850185612314565b90501115610ed6575f610eb1610eac6060860186612314565b611560565b905063f6b3101360e01b6001600160e01b0319821601610ed4575f91505061052f565b505b6106f98383611577565b6001600160401b038110610f265760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016107d7565b50565b8015610f26576040515f90339083908381818185875af1925050503d805f8114610a69576040519150601f19603f3d011682016040523d82523d5f602084013e610a69565b610e81610e1e565b5f5f5f845160208601878987f195945050505050565b610e81610f985f610f9d565b611684565b60603d8215610fb15782811115610fb15750815b604051602082018101604052818152815f602083013e9392505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061105457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110485f5160206125ef5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610e815760405163703e46dd60e11b815260040160405180910390fd5b61107b3361087b565b15801561109c575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15610f2657604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611114575060408051601f3d908101601f1916820190925261111191810190612371565b60015b61113c57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107d7565b5f5160206125ef5f395f51905f52811461116c57604051632a87526960e21b8152600481018290526024016107d7565b611176838361168c565b505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f9160609181846111ae83612403565b91905055506111c18989898989896116e1565b92509250505b965096945050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e815760405163703e46dd60e11b815260040160405180910390fd5b610e81611838565b61122b611838565b61080b8282611881565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f5160206125cf5f395f51905f529161127390612427565b80601f016020809104026020016040519081016040528092919081815260200182805461129f90612427565b80156112ea5780601f106112c1576101008083540402835291602001916112ea565b820191905f5260205f20905b8154815290600101906020018083116112cd57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f5160206125cf5f395f51905f529161127390612427565b5f5f5f610d25306118e0565b5f6001600160e01b03198216633ce4a3e960e01b148061136f57506001600160e01b031982166301ffc9a760e01b145b8061138a57506001600160e01b031982166306608bdf60e21b145b806113a557506001600160e01b03198216630b135d3f60e11b145b806113c057506001600160e01b03198216630271189760e51b145b8061052f57506001600160e01b03198216635194544760e01b1492915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561141957505f9150600390508261149e565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561146a573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661149557505f92506001915082905061149e565b92505f91508190505b9450945094915050565b5f8260038111156114bb576114bb61245f565b036114c4575050565b60018260038111156114d8576114d861245f565b036114f65760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561150a5761150a61245f565b0361152b5760405163fce698f760e01b8152600481018290526024016107d7565b600382600381111561153f5761153f61245f565b0361080b576040516335e2f38360e21b8152600481018290526024016107d7565b5f600482101561157157505f61052f565b50503590565b5f80806115c58461158c610100880188612314565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061193492505050565b5090925090505f8160038111156115de576115de61245f565b1480156115ef57506115ef8261087b565b156115fe575f9250505061052f565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c902061163e8161158c610100890189612314565b5090935091505f8260038111156116575761165761245f565b14801561166857506116688361087b565b15611678575f935050505061052f565b50600195945050505050565b805160208201fd5b6116958261197d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156116d95761117682826119e0565b61080b611a52565b5f60606116ed3361087b565b15801561170e575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b1561172c57604051634780295360e11b815260040160405180910390fd5b8360ff165f0361179d57876001600160a01b031683888888604051611752929190612473565b5f60405180830381858888f193505050503d805f811461178d576040519150601f19603f3d011682016040523d82523d5f602084013e611792565b606091505b5090925090506111c7565b8360ff166001036117fc57876001600160a01b03168387876040516117c3929190612473565b5f604051808303818686f4925050503d805f811461178d576040519150601f19603f3d011682016040523d82523d5f602084013e611792565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b60448201526064016107d7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610e8157604051631afcd79f60e31b815260040160405180910390fd5b611889611838565b5f5160206125cf5f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026118c284826124c6565b50600381016118d183826124c6565b505f8082556001909101555050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906119269190612580565b935093509350509193909250565b5f5f5f835160410361196b576020840151604085015160608601515f1a61195d888285856113e0565b955095509550505050611976565b505081515f91506002905b9250925092565b806001600160a01b03163b5f036119b257604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107d7565b5f5160206125ef5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516119fc91906125b8565b5f60405180830381855af49150503d805f8114611a34576040519150601f19603f3d011682016040523d82523d5f602084013e611a39565b606091505b5091509150611a49858383611a71565b95945050505050565b3415610e815760405163b398979f60e01b815260040160405180910390fd5b606082611a8657611a8182611acd565b6106f9565b8151158015611a9d57506001600160a01b0384163b155b15611ac657604051639996b31560e01b81526001600160a01b03851660048201526024016107d7565b50806106f9565b805115611add5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114610f26575f5ffd5b5f5f83601f840112611b1a575f5ffd5b5081356001600160401b03811115611b30575f5ffd5b602083019150836020828501011115611b47575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611b65575f5ffd5b8835611b7081611af6565b97506020890135611b8081611af6565b96506040890135611b9081611af6565b95506060890135945060808901356001600160401b03811115611bb1575f5ffd5b611bbd8b828c01611b0a565b90955093505060a08901356001600160401b03811115611bdb575f5ffd5b611be78b828c01611b0a565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610f26575f5ffd5b5f60208284031215611c20575f5ffd5b81356106f981611bfb565b5f5f5f5f5f5f60808789031215611c40575f5ffd5b8635611c4b81611af6565b955060208701356001600160401b03811115611c65575f5ffd5b611c7189828a01611b0a565b90965094505060408701356001600160401b03811115611c8f575f5ffd5b611c9b89828a01611b0a565b9094509250506060870135611caf81611af6565b809150509295509295509295565b5f5f5f5f5f60808688031215611cd1575f5ffd5b8535611cdc81611af6565b94506020860135611cec81611af6565b93506040860135925060608601356001600160401b03811115611d0d575f5ffd5b611d1988828901611b0a565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611d4d575f5ffd5b81356001600160401b03811115611d6657611d66611d2a565b604051601f8201601f19908116603f011681016001600160401b0381118282101715611d9457611d94611d2a565b604052818152838201602001851015611dab575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611dd8575f5ffd5b8235915060208301356001600160401b03811115611df4575f5ffd5b611e0085828601611d3e565b9150509250929050565b5f5f5f60608486031215611e1c575f5ffd5b83356001600160401b03811115611e31575f5ffd5b84016101208187031215611e43575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f840112611e68575f5ffd5b5081356001600160401b03811115611e7e575f5ffd5b6020830191508360208260051b8501011115611b47575f5ffd5b5f5f60208385031215611ea9575f5ffd5b82356001600160401b03811115611ebe575f5ffd5b611eca85828601611e58565b90969095509350505050565b5f5f60408385031215611ee7575f5ffd5b8235611ef281611af6565b915060208301356001600160401b03811115611df4575f5ffd5b803560ff81168114611f1c575f5ffd5b919050565b5f5f5f5f5f60808688031215611f35575f5ffd5b8535611f4081611af6565b94506020860135935060408601356001600160401b03811115611f61575f5ffd5b611f6d88828901611b0a565b9094509250611f80905060608701611f0c565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6106f96020830184611f8c565b5f5f5f60408486031215611fde575f5ffd5b8335611fe981611af6565b925060208401356001600160401b03811115612003575f5ffd5b61200f86828701611b0a565b9497909650939450505050565b5f6020828403121561202c575f5ffd5b81356106f981611af6565b60ff60f81b8816815260e060208201525f61205560e0830189611f8c565b82810360408401526120678189611f8c565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156120bc57835183526020938401939092019160010161209e565b50909b9a5050505050505050505050565b5f5f5f5f606085870312156120e0575f5ffd5b84356120eb81611af6565b93506020850135925060408501356001600160401b0381111561210c575f5ffd5b61211887828801611b0a565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b03121561213b575f5ffd5b883561214681611af6565b9750602089013561215681611af6565b965060408901356001600160401b03811115612170575f5ffd5b61217c8b828c01611e58565b90975095505060608901356001600160401b0381111561219a575f5ffd5b6121a68b828c01611e58565b90955093505060808901356001600160401b03811115611bdb575f5ffd5b5f5f5f5f5f5f60a087890312156121d9575f5ffd5b86356121e481611af6565b95506020870135945060408701356001600160401b03811115612205575f5ffd5b61221189828a01611b0a565b9095509350612224905060608801611f0c565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a0878903121561224e575f5ffd5b863561225981611af6565b9550602087013561226981611af6565b9450604087013593506060870135925060808701356001600160401b03811115612291575f5ffd5b61229d89828a01611b0a565b979a9699509497509295939492505050565b828152604060208201525f6108586040830184611f8c565b5f602082840312156122d7575f5ffd5b81516106f981611bfb565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261230a575f5ffd5b9190910192915050565b5f5f8335601e19843603018112612329575f5ffd5b8301803591506001600160401b03821115612342575f5ffd5b602001915036819003821315611b47575f5ffd5b5f60208284031215612366575f5ffd5b81516106f981611af6565b5f60208284031215612381575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f906123d49083018789612388565b82810360408401526123e7818688612388565b91505060018060a01b0383166060830152979650505050505050565b5f6001820161242057634e487b7160e01b5f52601160045260245ffd5b5060010190565b600181811c9082168061243b57607f821691505b60208210810361245957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b601f82111561117657805f5260205f20601f840160051c810160208510156124a75750805b601f840160051c820191505b81811015610a69575f81556001016124b3565b81516001600160401b038111156124df576124df611d2a565b6124f3816124ed8454612427565b84612482565b6020601f821160018114612525575f831561250e5750848201515b5f19600385901b1c1916600184901b178455610a69565b5f84815260208120601f198516915b828110156125545787850151825560209485019460019092019101612534565b508482101561257157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f5f60608486031215612592575f5ffd5b835160208501519093506125a581611af6565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212202d9195153796a61a31575e98d6460d6d9b6075e2cc83d0732c7382b9a0de079e64736f6c634300081c0033", + "bytecodeSha1": "0a25298b3fd8dc7d4af992cd3441fee663981bec", + "compiler": { + "evm_version": "cancun", + "optimizer": { + "enabled": true, + "runs": 200 + }, + "version": "0.8.28+commit.7893614a" + }, + "contractName": "HyperAccountMinter", + "coverageMap": { + "branches": { + "10": {}, + "100": {}, + "101": { + "HyperAccountMinterUpgradable._selector": { + "80": [ + 3689, + 3704, + false + ] + }, + "HyperAccountMinterUpgradable._validateSignature": { + "78": [ + 3172, + 3198, + false + ], + "79": [ + 3346, + 3366, + false + ] + } + }, + "109": { + "Account._validateNonce": { + "64": [ + 1459, + 1483, + true + ] + } + }, + "110": { + "ERC721TokenBoundMech.onERC721Received": { + "72": [ + 839, + 871, + false + ], + "73": [ + 875, + 906, + false + ] + } + }, + "111": { + "Mech._exec": { + "86": [ + 1240, + 1262, + false + ], + "87": [ + 1266, + 1301, + false + ], + "88": [ + 4218, + 4232, + false + ], + "89": [ + 4332, + 4346, + false + ] + }, + "Mech.execute": { + "85": [ + 5191, + 5201, + true + ] + }, + "Mech.isValidSignature": { + "81": [ + 2501, + 2507, + false + ], + "82": [ + 3200, + 3227, + false + ], + "83": [ + 3231, + 3263, + false + ], + "84": [ + 3480, + 3520, + false + ] + } + }, + "112": {}, + "113": { + "TokenBoundMech.isValidSigner": { + "90": [ + 3113, + 3131, + true + ] + } + }, + "126": {}, + "13": {}, + "134": {}, + "5": {}, + "67": {}, + "68": { + "UUPSUpgradeable._checkNotDelegated": { + "94": [ + 5098, + 5121, + false + ] + }, + "UUPSUpgradeable._checkProxy": { + "91": [ + 4675, + 4698, + true + ], + "92": [ + 4753, + 4795, + false + ] + }, + "UUPSUpgradeable._upgradeToAndCallUUPS": { + "93": [ + 6250, + 6290, + false + ] + } + }, + "75": { + "EIP712Upgradeable.eip712Domain": { + "70": [ + 5777, + 5795, + false + ], + "71": [ + 5799, + 5820, + true + ] + } + }, + "77": {}, + "78": {}, + "82": {}, + "83": {}, + "84": {}, + "85": { + "BaseAccount._payPrefund": { + "69": [ + 5892, + 5916, + false + ] + }, + "BaseAccount._requireFromEntryPoint": { + "68": [ + 3040, + 3075, + true + ] + }, + "BaseAccount.execute": { + "67": [ + 1576, + 1578, + false + ] + }, + "BaseAccount.executeBatch": { + "65": [ + 2218, + 2220, + false + ], + "66": [ + 2244, + 2260, + false + ] + } + }, + "88": {}, + "96": { + "HyperAccount._validateSignature": { + "74": [ + 831, + 866, + false + ], + "75": [ + 870, + 897, + false + ], + "76": [ + 1180, + 1215, + false + ], + "77": [ + 1219, + 1246, + false + ] + } + } + }, + "statements": { + "10": {}, + "100": { + "HyperAccountMinter.initialize": { + "23": [ + 343, + 367 + ], + "24": [ + 377, + 417 + ] + } + }, + "101": { + "HyperAccountMinterUpgradable._mint": { + "35": [ + 2801, + 2864 + ] + }, + "HyperAccountMinterUpgradable._selector": { + "51": [ + 3706, + 3722 + ] + }, + "HyperAccountMinterUpgradable._validateSignature": { + "37": [ + 3386, + 3417 + ], + "38": [ + 3536, + 3587 + ] + }, + "HyperAccountMinterUpgradable.hypermap": { + "0": [ + 2117, + 2133 + ] + }, + "HyperAccountMinterUpgradable.mint": { + "2": [ + 2554, + 2608 + ] + }, + "HyperAccountMinterUpgradable.supportsInterface": { + "1": [ + 2263, + 2362 + ] + } + }, + "109": { + "Account._validateNonce": { + "39": [ + 1451, + 1501 + ] + } + }, + "110": { + "ERC721TokenBoundMech.isOperator": { + "22": [ + 498, + 578 + ] + }, + "ERC721TokenBoundMech.onERC721Received": { + "3": [ + 835, + 956 + ], + "4": [ + 966, + 1003 + ] + } + }, + "111": { + "Mech._exec": { + "55": [ + 4248, + 4311 + ], + "56": [ + 4362, + 4419 + ], + "57": [ + 4450, + 4477 + ] + }, + "Mech.execute": { + "19": [ + 5972, + 6040 + ], + "20": [ + 6051, + 6254 + ], + "30": [ + 5133, + 5222 + ], + "31": [ + 5233, + 5436 + ] + }, + "Mech.isValidSignature": { + "5": [ + 2448, + 2486 + ], + "6": [ + 3283, + 3300 + ], + "7": [ + 3329, + 3403 + ], + "8": [ + 3540, + 3565 + ], + "9": [ + 3600, + 3617 + ] + }, + "Mech.supportsInterface": { + "50": [ + 7141, + 7452 + ] + } + }, + "112": {}, + "113": { + "TokenBoundMech._exec": { + "44": [ + 3601, + 3617 + ], + "45": [ + 3666, + 3719 + ] + }, + "TokenBoundMech.isValidSigner": { + "21": [ + 3106, + 3184 + ] + }, + "TokenBoundMech.state": { + "29": [ + 2406, + 2478 + ] + }, + "TokenBoundMech.supportsInterface": { + "34": [ + 3833, + 3928 + ] + }, + "TokenBoundMech.token": { + "33": [ + 2596, + 2628 + ] + } + }, + "126": {}, + "13": {}, + "134": {}, + "5": {}, + "67": { + "Initializable._checkInitializing": { + "59": [ + 7146, + 7219 + ] + }, + "Initializable._isInitializing": { + "58": [ + 8553, + 8600 + ] + } + }, + "68": { + "UUPSUpgradeable._checkNotDelegated": { + "46": [ + 5094, + 5239 + ] + }, + "UUPSUpgradeable._checkProxy": { + "41": [ + 4658, + 4909 + ] + }, + "UUPSUpgradeable._upgradeToAndCallUUPS": { + "42": [ + 6246, + 6366 + ], + "43": [ + 6379, + 6433 + ] + }, + "UUPSUpgradeable.upgradeToAndCall": { + "17": [ + 4276, + 4312 + ], + "18": [ + 4322, + 4368 + ] + } + }, + "75": { + "EIP712Upgradeable._EIP712Name": { + "48": [ + 6434, + 6448 + ] + }, + "EIP712Upgradeable._EIP712Version": { + "49": [ + 6819, + 6836 + ] + }, + "EIP712Upgradeable.__EIP712_init": { + "47": [ + 3548, + 3586 + ] + }, + "EIP712Upgradeable.__EIP712_init_unchained": { + "60": [ + 3766, + 3780 + ], + "61": [ + 3790, + 3810 + ], + "62": [ + 3875, + 3892 + ], + "63": [ + 3902, + 3922 + ] + }, + "EIP712Upgradeable.eip712Domain": { + "25": [ + 5769, + 5846 + ], + "26": [ + 5857, + 6069 + ] + } + }, + "77": {}, + "78": {}, + "82": {}, + "83": {}, + "84": {}, + "85": { + "BaseAccount._requireForExecute": { + "40": [ + 3204, + 3228 + ] + }, + "BaseAccount._requireFromEntryPoint": { + "36": [ + 3019, + 3129 + ] + }, + "BaseAccount.execute": { + "27": [ + 1479, + 1499 + ], + "28": [ + 1594, + 1621 + ] + }, + "BaseAccount.executeBatch": { + "14": [ + 1959, + 1979 + ], + "15": [ + 2284, + 2311 + ], + "16": [ + 2071, + 2074 + ] + }, + "BaseAccount.getNonce": { + "32": [ + 1049, + 1095 + ] + }, + "BaseAccount.validateUserOp": { + "10": [ + 2696, + 2720 + ], + "11": [ + 2730, + 2785 + ], + "12": [ + 2795, + 2823 + ], + "13": [ + 2833, + 2865 + ] + } + }, + "88": {}, + "96": { + "HyperAccount._validateSignature": { + "52": [ + 913, + 944 + ], + "53": [ + 1097, + 1165 + ], + "54": [ + 1262, + 1293 + ] + } + } + } + }, + "dependencies": [ + "Account", + "BaseAccount", + "EIP712Upgradeable", + "ERC1155TokenReceiver", + "ERC721TokenBoundMech", + "ERC721TokenReceiver", + "ERC777TokensRecipient", + "HyperAccount", + "HyperAccountMinterUpgradable", + "IAccount", + "IERC1271", + "IERC1822Proxiable", + "IERC5267", + "IERC6551Account", + "IERC6551Executable", + "IHyperAccountMinter", + "IMech", + "Initializable", + "Mech", + "Receiver", + "TokenBoundMech", + "UUPSUpgradeable" + ], + "deployedBytecode": "60806040526004361061017d575f3560e01c806384b0196e116100cd578063b61d27f611610087578063ca3b98bb11610062578063ca3b98bb14610480578063d087d28814610493578063f23a6e61146104a7578063fc0c546a146104d3575f5ffd5b8063b61d27f61461041f578063bc197c811461043e578063c19d93fb1461046c575f5ffd5b806384b0196e146103495780638f41ec5a146103705780639cdf379c14610384578063ad3cb1cc14610397578063b0d691fe146103c7578063b479d600146103ed575f5ffd5b806334fcd5be11610138578063523e326011610113578063523e3260146102e357806352d1902d146103025780636d70f7ae146103165780638129fc1c14610335575f5ffd5b806334fcd5be146102915780634f1ef286146102b057806351945447146102c3575f5ffd5b806223de291461018857806301ffc9a7146101ae578063094cefed146101e2578063150b7a021461020d5780631626ba7e1461024557806319822f7c14610264575f5ffd5b3661018457005b5f5ffd5b348015610193575f5ffd5b506101ac6101a2366004611b4e565b5050505050505050565b005b3480156101b9575f5ffd5b506101cd6101c8366004611c10565b61050a565b60405190151581526020015b60405180910390f35b6101f56101f0366004611c2b565b610535565b6040516001600160a01b0390911681526020016101d9565b348015610218575f5ffd5b5061022c610227366004611cbd565b61054f565b6040516001600160e01b031990911681526020016101d9565b348015610250575f5ffd5b5061022c61025f366004611dc7565b6105a9565b34801561026f575f5ffd5b5061028361027e366004611e0a565b6106ce565b6040519081526020016101d9565b34801561029c575f5ffd5b506101ac6102ab366004611e98565b610700565b6101ac6102be366004611ed6565b6107f0565b6102d66102d1366004611f21565b61080f565b6040516101d99190611fba565b3480156102ee575f5ffd5b5061022c6102fd366004611fcc565b61083b565b34801561030d575f5ffd5b50610283610860565b348015610321575f5ffd5b506101cd61033036600461201c565b61087b565b348015610340575f5ffd5b506101ac610919565b348015610354575f5ffd5b5061035d610a70565b6040516101d99796959493929190612037565b34801561037b575f5ffd5b50610283600181565b34801561038f575f5ffd5b506102835f81565b3480156103a2575f5ffd5b506102d6604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156103d2575f5ffd5b50734337084d9e255ff0702461cf8895ce9e3b5ff1086101f5565b3480156103f8575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006101f5565b34801561042a575f5ffd5b506101ac6104393660046120cd565b610b19565b348015610449575f5ffd5b5061022c610458366004612124565b63bc197c8160e01b98975050505050505050565b348015610477575f5ffd5b50610283610b71565b6102d661048e3660046121c4565b610c58565b34801561049e575f5ffd5b50610283610c91565b3480156104b2575f5ffd5b5061022c6104c1366004612239565b63f23a6e6160e01b9695505050505050565b3480156104de575f5ffd5b506104e7610d1a565b604080519384526001600160a01b039092166020840152908201526060016101d9565b5f61051482610d30565b8061052f57506001600160e01b03198216633c1cc5f160e01b145b92915050565b5f610544878787878787610d5a565b979650505050505050565b5f5f5f61055a610d1a565b909350915050336001600160a01b03831614801561057757508086145b156105955760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f6105c985602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f0361069457828583016020016105ea8261087b565b15801561060057506001600160a01b0382163014155b1561061b57506001600160e01b0319945061052f9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610649908b9085906004016122af565b602060405180830381865afa158015610664573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068891906122c7565b9550505050505061052f565b6106a361033087838686610df2565b156106bb5750630b135d3f60e11b925061052f915050565b506001600160e01b031995945050505050565b5f6106d7610e1e565b6106e18484610e83565b90506106f08460200135610ee0565b6106f982610f29565b9392505050565b610708610f6e565b805f5b818110156107ea5736848483818110610726576107266122e2565b905060200281019061073891906122f6565b90505f61079661074b602084018461201c565b602084013561075d6040860186612314565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610f76565b9050806107e057836001036107b2576107ad610f8c565b6107e0565b826107bc5f610f9d565b604051635a15467560e01b81526004016107d79291906122af565b60405180910390fd5b505060010161070b565b50505050565b6107f8610fce565b61080182611072565b61080b82826110ba565b5050565b60605f61082087878787875a61117b565b925090508061083157815160208301fd5b5095945050505050565b5f6108458461087b565b61084f575f610858565b630291f19360e51b5b949350505050565b5f6108696111d2565b505f5160206125ef5f395f51905f5290565b5f5f5f610886610d1a565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa1580156108d3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108f79190612356565b6001600160a01b031614801561085857505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561095d5750825b90505f826001600160401b031660011480156109785750303b155b905081158015610986575080155b156109a45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156109ce57845460ff60401b1916600160401b1785555b6109d661121b565b610a2360405180604001604052806012815260200171243cb832b920b1b1b7bab73a26b4b73a32b960711b815250604051806040016040528060018152602001603160f81b815250611223565b8315610a6957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f60608082808083815f5160206125cf5f395f51905f528054909150158015610a9b57506001810154155b610adf5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016107d7565b610ae7611235565b610aef6112f5565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b610b21610f6e565b5f610b62858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a610f76565b905080610a6957610a69610f8c565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610bf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1a9190612371565b8254604051919250610c39918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f610c7588888888888815610c6f578861117b565b5a61117b565b9250905080610c8657815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610cf1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d159190612371565b905090565b5f5f5f610d25611333565b925092509250909192565b5f610d3a8261133f565b8061052f57506001600160e01b03198216636faff5f160e01b1492915050565b60405163094cefed60e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed90610db2908a908a908a908a908a908a906004016123b0565b6020604051808303815f875af1158015610dce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105449190612356565b5f5f5f5f610e02888888886113e0565b925092509250610e1282826114a8565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff10814610e815760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016107d7565b565b5f6004610e936060850185612314565b90501115610ed6575f610eb1610eac6060860186612314565b611560565b905063f6b3101360e01b6001600160e01b0319821601610ed4575f91505061052f565b505b6106f98383611577565b6001600160401b038110610f265760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016107d7565b50565b8015610f26576040515f90339083908381818185875af1925050503d805f8114610a69576040519150601f19603f3d011682016040523d82523d5f602084013e610a69565b610e81610e1e565b5f5f5f845160208601878987f195945050505050565b610e81610f985f610f9d565b611684565b60603d8215610fb15782811115610fb15750815b604051602082018101604052818152815f602083013e9392505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061105457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110485f5160206125ef5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610e815760405163703e46dd60e11b815260040160405180910390fd5b61107b3361087b565b15801561109c575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15610f2657604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611114575060408051601f3d908101601f1916820190925261111191810190612371565b60015b61113c57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016107d7565b5f5160206125ef5f395f51905f52811461116c57604051632a87526960e21b8152600481018290526024016107d7565b611176838361168c565b505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f9160609181846111ae83612403565b91905055506111c18989898989896116e1565b92509250505b965096945050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e815760405163703e46dd60e11b815260040160405180910390fd5b610e81611838565b61122b611838565b61080b8282611881565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f5160206125cf5f395f51905f529161127390612427565b80601f016020809104026020016040519081016040528092919081815260200182805461129f90612427565b80156112ea5780601f106112c1576101008083540402835291602001916112ea565b820191905f5260205f20905b8154815290600101906020018083116112cd57829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f5160206125cf5f395f51905f529161127390612427565b5f5f5f610d25306118e0565b5f6001600160e01b03198216633ce4a3e960e01b148061136f57506001600160e01b031982166301ffc9a760e01b145b8061138a57506001600160e01b031982166306608bdf60e21b145b806113a557506001600160e01b03198216630b135d3f60e11b145b806113c057506001600160e01b03198216630271189760e51b145b8061052f57506001600160e01b03198216635194544760e01b1492915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561141957505f9150600390508261149e565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561146a573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661149557505f92506001915082905061149e565b92505f91508190505b9450945094915050565b5f8260038111156114bb576114bb61245f565b036114c4575050565b60018260038111156114d8576114d861245f565b036114f65760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561150a5761150a61245f565b0361152b5760405163fce698f760e01b8152600481018290526024016107d7565b600382600381111561153f5761153f61245f565b0361080b576040516335e2f38360e21b8152600481018290526024016107d7565b5f600482101561157157505f61052f565b50503590565b5f80806115c58461158c610100880188612314565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061193492505050565b5090925090505f8160038111156115de576115de61245f565b1480156115ef57506115ef8261087b565b156115fe575f9250505061052f565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c902061163e8161158c610100890189612314565b5090935091505f8260038111156116575761165761245f565b14801561166857506116688361087b565b15611678575f935050505061052f565b50600195945050505050565b805160208201fd5b6116958261197d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156116d95761117682826119e0565b61080b611a52565b5f60606116ed3361087b565b15801561170e575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b1561172c57604051634780295360e11b815260040160405180910390fd5b8360ff165f0361179d57876001600160a01b031683888888604051611752929190612473565b5f60405180830381858888f193505050503d805f811461178d576040519150601f19603f3d011682016040523d82523d5f602084013e611792565b606091505b5090925090506111c7565b8360ff166001036117fc57876001600160a01b03168387876040516117c3929190612473565b5f604051808303818686f4925050503d805f811461178d576040519150601f19603f3d011682016040523d82523d5f602084013e611792565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b60448201526064016107d7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610e8157604051631afcd79f60e31b815260040160405180910390fd5b611889611838565b5f5160206125cf5f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1026118c284826124c6565b50600381016118d183826124c6565b505f8082556001909101555050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906119269190612580565b935093509350509193909250565b5f5f5f835160410361196b576020840151604085015160608601515f1a61195d888285856113e0565b955095509550505050611976565b505081515f91506002905b9250925092565b806001600160a01b03163b5f036119b257604051634c9c8ce360e01b81526001600160a01b03821660048201526024016107d7565b5f5160206125ef5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516119fc91906125b8565b5f60405180830381855af49150503d805f8114611a34576040519150601f19603f3d011682016040523d82523d5f602084013e611a39565b606091505b5091509150611a49858383611a71565b95945050505050565b3415610e815760405163b398979f60e01b815260040160405180910390fd5b606082611a8657611a8182611acd565b6106f9565b8151158015611a9d57506001600160a01b0384163b155b15611ac657604051639996b31560e01b81526001600160a01b03851660048201526024016107d7565b50806106f9565b805115611add5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114610f26575f5ffd5b5f5f83601f840112611b1a575f5ffd5b5081356001600160401b03811115611b30575f5ffd5b602083019150836020828501011115611b47575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611b65575f5ffd5b8835611b7081611af6565b97506020890135611b8081611af6565b96506040890135611b9081611af6565b95506060890135945060808901356001600160401b03811115611bb1575f5ffd5b611bbd8b828c01611b0a565b90955093505060a08901356001600160401b03811115611bdb575f5ffd5b611be78b828c01611b0a565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610f26575f5ffd5b5f60208284031215611c20575f5ffd5b81356106f981611bfb565b5f5f5f5f5f5f60808789031215611c40575f5ffd5b8635611c4b81611af6565b955060208701356001600160401b03811115611c65575f5ffd5b611c7189828a01611b0a565b90965094505060408701356001600160401b03811115611c8f575f5ffd5b611c9b89828a01611b0a565b9094509250506060870135611caf81611af6565b809150509295509295509295565b5f5f5f5f5f60808688031215611cd1575f5ffd5b8535611cdc81611af6565b94506020860135611cec81611af6565b93506040860135925060608601356001600160401b03811115611d0d575f5ffd5b611d1988828901611b0a565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611d4d575f5ffd5b81356001600160401b03811115611d6657611d66611d2a565b604051601f8201601f19908116603f011681016001600160401b0381118282101715611d9457611d94611d2a565b604052818152838201602001851015611dab575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611dd8575f5ffd5b8235915060208301356001600160401b03811115611df4575f5ffd5b611e0085828601611d3e565b9150509250929050565b5f5f5f60608486031215611e1c575f5ffd5b83356001600160401b03811115611e31575f5ffd5b84016101208187031215611e43575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f840112611e68575f5ffd5b5081356001600160401b03811115611e7e575f5ffd5b6020830191508360208260051b8501011115611b47575f5ffd5b5f5f60208385031215611ea9575f5ffd5b82356001600160401b03811115611ebe575f5ffd5b611eca85828601611e58565b90969095509350505050565b5f5f60408385031215611ee7575f5ffd5b8235611ef281611af6565b915060208301356001600160401b03811115611df4575f5ffd5b803560ff81168114611f1c575f5ffd5b919050565b5f5f5f5f5f60808688031215611f35575f5ffd5b8535611f4081611af6565b94506020860135935060408601356001600160401b03811115611f61575f5ffd5b611f6d88828901611b0a565b9094509250611f80905060608701611f0c565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6106f96020830184611f8c565b5f5f5f60408486031215611fde575f5ffd5b8335611fe981611af6565b925060208401356001600160401b03811115612003575f5ffd5b61200f86828701611b0a565b9497909650939450505050565b5f6020828403121561202c575f5ffd5b81356106f981611af6565b60ff60f81b8816815260e060208201525f61205560e0830189611f8c565b82810360408401526120678189611f8c565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156120bc57835183526020938401939092019160010161209e565b50909b9a5050505050505050505050565b5f5f5f5f606085870312156120e0575f5ffd5b84356120eb81611af6565b93506020850135925060408501356001600160401b0381111561210c575f5ffd5b61211887828801611b0a565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b03121561213b575f5ffd5b883561214681611af6565b9750602089013561215681611af6565b965060408901356001600160401b03811115612170575f5ffd5b61217c8b828c01611e58565b90975095505060608901356001600160401b0381111561219a575f5ffd5b6121a68b828c01611e58565b90955093505060808901356001600160401b03811115611bdb575f5ffd5b5f5f5f5f5f5f60a087890312156121d9575f5ffd5b86356121e481611af6565b95506020870135945060408701356001600160401b03811115612205575f5ffd5b61221189828a01611b0a565b9095509350612224905060608801611f0c565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a0878903121561224e575f5ffd5b863561225981611af6565b9550602087013561226981611af6565b9450604087013593506060870135925060808701356001600160401b03811115612291575f5ffd5b61229d89828a01611b0a565b979a9699509497509295939492505050565b828152604060208201525f6108586040830184611f8c565b5f602082840312156122d7575f5ffd5b81516106f981611bfb565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261230a575f5ffd5b9190910192915050565b5f5f8335601e19843603018112612329575f5ffd5b8301803591506001600160401b03821115612342575f5ffd5b602001915036819003821315611b47575f5ffd5b5f60208284031215612366575f5ffd5b81516106f981611af6565b5f60208284031215612381575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f906123d49083018789612388565b82810360408401526123e7818688612388565b91505060018060a01b0383166060830152979650505050505050565b5f6001820161242057634e487b7160e01b5f52601160045260245ffd5b5060010190565b600181811c9082168061243b57607f821691505b60208210810361245957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b601f82111561117657805f5260205f20601f840160051c810160208510156124a75750805b601f840160051c820191505b81811015610a69575f81556001016124b3565b81516001600160401b038111156124df576124df611d2a565b6124f3816124ed8454612427565b84612482565b6020601f821160018114612525575f831561250e5750848201515b5f19600385901b1c1916600184901b178455610a69565b5f84815260208120601f198516915b828110156125545787850151825560209485019460019092019101612534565b508482101561257157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f5f60608486031215612592575f5ffd5b835160208501519093506125a581611af6565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212202d9195153796a61a31575e98d6460d6d9b6075e2cc83d0732c7382b9a0de079e64736f6c634300081c0033", + "deployedSourceMap": "147:279:100:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:187:112;;;;;;;;;;-1:-1:-1;1416:187:112;;;;;:::i;:::-;;;;;;;;;;;;2146:223:101;;;;;;;;;;-1:-1:-1;2146:223:101;;;;;:::i;:::-;;:::i;:::-;;;2310:14:149;;2303:22;2285:41;;2273:2;2258:18;2146:223:101;;;;;;;;2375:240;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3495:32:149;;;3477:51;;3465:2;3450:18;2375:240:101;3331:203:149;591:419:110;;;;;;;;;;-1:-1:-1;591:419:110;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;4512:33:149;;;4494:52;;4482:2;4467:18;591:419:110;4350:202:149;2199:1425:111;;;;;;;;;;-1:-1:-1;2199:1425:111;;;;;:::i;:::-;;:::i;2487:385:85:-;;;;;;;;;;-1:-1:-1;2487:385:85;;;;;:::i;:::-;;:::i;:::-;;;6643:25:149;;;6631:2;6616:18;2487:385:85;6497:177:149;1887:565:85;;;;;;;;;;-1:-1:-1;1887:565:85;;;;;:::i;:::-;;:::i;4161:214:68:-;;;;;;:::i;:::-;;:::i;5779:481:111:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2999:192:113:-;;;;;;;;;;-1:-1:-1;2999:192:113;;;;;:::i;:::-;;:::i;3708:134:68:-;;;;;;;;;;;;;:::i;346:239:110:-;;;;;;;;;;-1:-1:-1;346:239:110;;;;;:::i;:::-;;:::i;292:132:100:-;;;;;;;;;;;;;:::i;5173:903:75:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;737:49:109:-;;;;;;;;;;;;785:1;737:49;;679:52;;;;;;;;;;;;730:1;679:52;;1819:58:68;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:68;;;;;1043:108:109;;;;;;;;;;-1:-1:-1;961:42:109;1043:108;;2045:95:101;;;;;;;;;;-1:-1:-1;2124:9:101;2045:95;;1383:255:85;;;;;;;;;;-1:-1:-1;1383:255:85;;;;;:::i;:::-;;:::i;931:258:112:-;;;;;;;;;;-1:-1:-1;931:258:112;;;;;:::i;:::-;-1:-1:-1;;;931:258:112;;;;;;;;;;;2128:357:113;;;;;;;;;;;;;:::i;4927:515:111:-;;;;;;:::i;:::-;;:::i;981:121:85:-;;;;;;;;;;;;;:::i;699:226:112:-;;;;;;;;;;-1:-1:-1;699:226:112;;;;;:::i;:::-;-1:-1:-1;;;699:226:112;;;;;;;;;2491:144:113;;;;;;;;;;;;;:::i;:::-;;;;16367:25:149;;;-1:-1:-1;;;;;16428:32:149;;;16423:2;16408:18;;16401:60;16477:18;;;16470:34;16355:2;16340:18;2491:144:113;16165:345:149;2146:223:101;2247:4;2270:36;2294:11;2270:23;:36::i;:::-;:92;;;-1:-1:-1;;;;;;;2310:52:101;;-1:-1:-1;;;2310:52:101;2270:92;2263:99;2146:223;-1:-1:-1;;2146:223:101:o;2375:240::-;2527:11;2561:47;2567:2;2571:4;;2577:14;;2593;2561:5;:47::i;:::-;2554:54;2375:240;-1:-1:-1;;;;;;;2375:240:101:o;591:419:110:-;740:6;765:26;793:20;817:7;:5;:7::i;:::-;762:62;;-1:-1:-1;762:62:110;-1:-1:-1;;839:10:110;-1:-1:-1;;;;;839:32:110;;;:67;;;;;894:12;875:15;:31;839:67;835:121;;;929:16;;-1:-1:-1;;;929:16:110;;;;;;;;;;;835:121;-1:-1:-1;;;;973:30:110;591:419;-1:-1:-1;;;;;;;591:419:110:o;2199:1425:111:-;2360:17;2393:9;2412;2431:7;2460:26;2476:9;6792:4;6777:20;;6771:27;6837:4;6822:20;;6816:27;6890:4;6875:20;;;6869:27;6472:7;6861:36;;6771:27;;6816;6400:513;2460:26;2448:38;;-1:-1:-1;2448:38:111;-1:-1:-1;2448:38:111;-1:-1:-1;2501:6:111;;;2506:1;2501:6;2497:1093;;2688:1;3011:17;;;3030:4;3007:28;3200:27;2688:1;3200:10;:27::i;:::-;3199:28;:64;;;;-1:-1:-1;;;;;;3231:32:111;;3258:4;3231:32;;3199:64;3195:120;;;-1:-1:-1;;;;;;;3283:17:111;-1:-1:-1;3283:17:111;;-1:-1:-1;;;;3283:17:111;3195:120;3336:67;;-1:-1:-1;;;3336:67:111;;-1:-1:-1;;;;;3336:42:111;;;;;:67;;3379:4;;3385:17;;3336:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3329:74;;;;;;;;;2497:1093;3480:40;3491:28;3505:4;3511:1;3514;3517;3491:13;:28::i;3480:40::-;3476:104;;;-1:-1:-1;;;;3547:18:111;-1:-1:-1;3540:25:111;;-1:-1:-1;;3540:25:111;3476:104;-1:-1:-1;;;;;;;3600:17:111;2199:1425;-1:-1:-1;;;;;2199:1425:111:o;2487:385:85:-;2662:22;2696:24;:22;:24::i;:::-;2747:38;2766:6;2774:10;2747:18;:38::i;:::-;2730:55;;2795:28;2810:6;:12;;;2795:14;:28::i;:::-;2833:32;2845:19;2833:11;:32::i;:::-;2487:385;;;;;:::o;1887:565::-;1959:20;:18;:20::i;:::-;2012:5;1990:19;2034:412;2058:11;2054:1;:15;2034:412;;;2090:18;2111:5;;2117:1;2111:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2090:29;-1:-1:-1;2133:7:85;2143:56;2153:11;;;;2090:29;2153:11;:::i;:::-;2166:10;;;;2178:9;;;;2166:4;2178:9;:::i;:::-;2143:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2189:9:85;2143;:56::i;:::-;2133:66;;2218:2;2213:223;;2244:11;2259:1;2244:16;2240:182;;2284:27;:25;:27::i;:::-;2240:182;;;2378:1;2381:21;2400:1;2381:18;:21::i;:::-;2365:38;;-1:-1:-1;;;2365:38:85;;;;;;;;;:::i;:::-;;;;;;;;2240:182;-1:-1:-1;;2071:3:85;;2034:412;;;;1949:503;1887:565;;:::o;4161:214:68:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;5779:481:111:-;5911:23;5950:12;5996:44;6002:2;6006:5;6013:4;;6019:9;6030;5996:5;:44::i;:::-;5972:68;-1:-1:-1;5972:68:111;-1:-1:-1;5972:68:111;6051:203;;6218:10;6212:17;6205:4;6193:10;6189:21;6182:48;6051:203;5940:320;5779:481;;;;;;;:::o;2999:192:113:-;3077:17;3113:18;3124:6;3113:10;:18::i;:::-;:71;;3182:1;3113:71;;;-1:-1:-1;;;3113:71:113;3106:78;2999:192;-1:-1:-1;;;;2999:192:113:o;3708:134:68:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:68;:::o;346:239:110:-;420:4;439:21;462:15;481:7;:5;:7::i;:::-;505:39;;-1:-1:-1;;;505:39:110;;;;;6643:25:149;;;436:52:110;;-1:-1:-1;436:52:110;-1:-1:-1;;;;;;505:49:110;;;;-1:-1:-1;505:30:110;;;;;6616:18:149;;505:39:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;505:49:110;;:73;;;;-1:-1:-1;;;;;;;;;558:20:110;;;;346:239::o;292:132:100:-;8870:21:67;4302:15;;-1:-1:-1;;;4302:15:67;;;;4301:16;;-1:-1:-1;;;;;4348:14:67;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:67;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:67;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:67;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:67;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:67;-1:-1:-1;;;5013:22:67;;;4979:67;343:24:100::1;:22;:24::i;:::-;377:40;;;;;;;;;;;;;;-1:-1:-1::0;;;377:40:100::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;377:40:100::1;;::::0;:13:::1;:40::i;:::-;5070:14:67::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:67;;;5142:14;;-1:-1:-1;18749:50:149;;5142:14:67;;18737:2:149;18722:18;5142:14:67;;;;;;;5066:101;4092:1081;;;;;292:132:100:o;5173:903:75:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:75;;5511:45;;-1:-1:-1;5777:18:75;:43;;;;-1:-1:-1;5799:16:75;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:75;;19012:2:149;5769:77:75;;;18994:21:149;19051:2;19031:18;;;19024:30;-1:-1:-1;;;19070:18:149;;;19063:51;19131:18;;5769:77:75;18810:345:149;5769:77:75;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:75;;;-1:-1:-1;5857:212:75;;-1:-1:-1;5965:13:75;;-1:-1:-1;6000:4:75;;-1:-1:-1;6027:1:75;-1:-1:-1;6043:16:75;-1:-1:-1;5857:212:75;-1:-1:-1;;5173:903:75:o;1383:255:85:-;1479:20;:18;:20::i;:::-;1510:7;1520:41;1530:6;1538:5;1545:4;;1520:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1551:9:85;1520;:41::i;:::-;1510:51;;1576:2;1571:61;;1594:27;:25;:27::i;2128:357:113:-;2168:7;;1108:25;2187:61;-1:-1:-1;2331:23:113;961:42:109;2357:39:113;;-1:-1:-1;;;2357:39:113;;2387:4;2357:39;;;19342:51:149;2394:1:113;19409:18:149;;;19402:60;-1:-1:-1;;;;;2357:21:113;;;;;;;19315:18:149;;2357:39:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2443:14;;2432:43;;2331:65;;-1:-1:-1;2432:43:113;;2331:65;;2432:43;;19882:25:149;;;19938:2;19923:18;;19916:34;19870:2;19855:18;;19708:248;2432:43:113;;;;;;;;;;;;;2422:54;;;;;;2414:63;;2406:72;;;;2128:357;:::o;4927:515:111:-;5072:23;5111:12;5157:65;5163:2;5167:5;5174:4;;5180:9;5191:10;;:30;;5216:5;5157;:65::i;5191:30::-;5204:9;5157:5;:65::i;:::-;5133:89;-1:-1:-1;5133:89:111;-1:-1:-1;5133:89:111;5233:203;;5400:10;5394:17;5387:4;5375:10;5371:21;5364:48;5233:203;5101:341;4927:515;;;;;;;;:::o;981:121:85:-;1030:7;961:42:109;1056:39:85;;-1:-1:-1;;;1056:39:85;;1086:4;1056:39;;;19342:51:149;1093:1:85;19409:18:149;;;19402:60;-1:-1:-1;;;;;1056:21:85;;;;;;;19315:18:149;;1056:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1049:46;;981:121;:::o;2491:144:113:-;2529:15;2546:21;2569:15;2603:25;:23;:25::i;:::-;2596:32;;;;;;2491:144;;;:::o;3732:203::-;3817:4;3840:36;3864:11;3840:23;:36::i;:::-;:88;;;-1:-1:-1;;;;;;;3880:48:113;;-1:-1:-1;;;3880:48:113;3833:95;3732:203;-1:-1:-1;;3732:203:113:o;2621:250:101:-;2808:56;;-1:-1:-1;;;2808:56:101;;2774:11;;-1:-1:-1;;;;;2808:9:101;:14;;;;:56;;2823:2;;2827:4;;;;2833:14;;;;2849;;2808:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6887:260:43:-;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:43;;6887:260;-1:-1:-1;;;;;;6887:260:43:o;2953:183:85:-;3040:10;961:42:109;3040:35:85;3019:110;;;;-1:-1:-1;;;3019:110:85;;21066:2:149;3019:110:85;;;21048:21:149;21105:2;21085:18;;;21078:30;21144;21124:18;;;21117:58;21192:18;;3019:110:85;20864:352:149;3019:110:85;2953:183::o;2978:616:101:-;3130:22;3197:1;3172:15;;;;:6;:15;:::i;:::-;:22;;:26;3168:274;;;3214:10;3227:26;3237:15;;;;:6;:15;:::i;:::-;3227:9;:26::i;:::-;3214:39;-1:-1:-1;;;;;;;;;;3346:20:101;;;3342:90;;730:1:109;3386:31:101;;;;;3342:90;3200:242;3168:274;3543:44;3568:6;3576:10;3543:24;:44::i;1189:319:109:-;-1:-1:-1;;;;;1459:24:109;;1451:50;;;;-1:-1:-1;;;1451:50:109;;21423:2:149;1451:50:109;;;21405:21:149;21462:2;21442:18;;;21435:30;-1:-1:-1;;;21481:18:149;;;21474:43;21534:18;;1451:50:109;21221:337:149;1451:50:109;1189:319;:::o;5811:350:85:-;5892:24;;5888:267;;5950:94;;5933:12;;5958:10;;6003:19;;5933:12;5950:94;5933:12;5950:94;6003:19;5958:10;5950:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3142:93;3204:24;:22;:24::i;213:279:95:-;344:12;474:1;471;464:4;458:11;451:4;445;441:15;434:5;430:2;423:5;418:58;407:69;213:279;-1:-1:-1;;;;;213:279:95:o;1988:95::-;2044:32;2059:16;2073:1;2059:13;:16::i;:::-;2044:14;:32::i;1176:508::-;1238:23;1323:16;1355:12;;1352:120;;1397:6;1392:3;1389:15;1386:72;;;-1:-1:-1;1434:6:95;1386:72;1502:4;1496:11;1551:4;1546:3;1542:14;1537:3;1533:24;1527:4;1520:38;1583:3;1578;1571:16;1634:3;1631:1;1624:4;1619:3;1615:14;1600:38;1665:3;1176:508;-1:-1:-1;;;1176:508:95:o;4603:312:68:-;4683:4;-1:-1:-1;;;;;4692:6:68;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:68;:32;-1:-1:-1;;;;;;;;;;;1519:53:16;-1:-1:-1;;;;;1519:53:16;;1441:138;4753:32:68;-1:-1:-1;;;;;4753:42:68;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:68;;;;;;;;;;;2877:95:101;1240:22:111;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:111;961:42:109;1266:35:111;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:111;;;;;;;;;;;6057:538:68;6174:17;-1:-1:-1;;;;;6156:50:68;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:68;;;;;;;;-1:-1:-1;;6156:52:68;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:68;;-1:-1:-1;;;;;3495:32:149;;6518:60:68;;;3477:51:149;3450:18;;6518:60:68;3331:203:149;6152:437:68;-1:-1:-1;;;;;;;;;;;6250:40:68;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:68;;;;;6643:25:149;;;6616:18;;6317:34:68;6497:177:149;6246:120:68;6379:54;6409:17;6428:4;6379:29;:54::i;:::-;6209:235;6057:538;;:::o;3263:463:113:-;1108:25;3601:16;;3425:12;;3439:23;;1108:25;3425:12;3601:16;;;:::i;:::-;;;;;;3673:46;3685:2;3689:5;3696:4;;3702:9;3713:5;3673:11;:46::i;:::-;3666:53;;;;;3263:463;;;;;;;;;;:::o;5032:213:68:-;5106:4;-1:-1:-1;;;;;5115:6:68;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:68;;;;;;;;;;;2970:67;6931:20:67;:18;:20::i;3446:147:75:-;6931:20:67;:18;:20::i;:::-;3548:38:75::1;3572:4;3578:7;3548:23;:38::i;6300:155::-:0;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:75;6434:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6300:155;:::o;6682:161::-;6826:10;6819:17;;6739:13;;-1:-1:-1;;;;;;;;;;;2839:21:75;6819:17;;;:::i;2191:111:80:-;2231:7;2240;2249;2275:20;2289:4;2275:5;:20::i;7049:410:111:-;7125:4;-1:-1:-1;;;;;;7148:38:111;;-1:-1:-1;;;7148:38:111;;:82;;-1:-1:-1;;;;;;;7190:40:111;;-1:-1:-1;;;7190:40:111;7148:82;:139;;;-1:-1:-1;;;;;;;7246:41:111;;-1:-1:-1;;;7246:41:111;7148:139;:184;;;-1:-1:-1;;;;;;;7291:41:111;;-1:-1:-1;;;7291:41:111;7148:184;:249;;;-1:-1:-1;;;;;;;7348:49:111;;-1:-1:-1;;;7348:49:111;7148:249;:304;;;-1:-1:-1;;;;;;;7401:51:111;;-1:-1:-1;;;7401:51:111;7141:311;7049:410;-1:-1:-1;;7049:410:111:o;5203:1551:43:-;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:43;;-1:-1:-1;6385:30:43;;-1:-1:-1;6417:1:43;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;22811:25:149;;;22884:4;22872:17;;22852:18;;;22845:45;;;;22906:18;;;22899:34;;;22949:18;;;22942:34;;;6541:24:43;;22783:19:149;;6541:24:43;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:43;;-1:-1:-1;;6541:24:43;;;-1:-1:-1;;;;;;;6579:20:43;;6575:113;;-1:-1:-1;6631:1:43;;-1:-1:-1;6635:29:43;;-1:-1:-1;6631:1:43;;-1:-1:-1;6615:62:43;;6575:113;6706:6;-1:-1:-1;6714:20:43;;-1:-1:-1;6714:20:43;;-1:-1:-1;5203:1551:43;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:43;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:43;;;;;6643:25:149;;;6616:18;;7634:46:43;6497:177:149;7563:243:43;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:43;;;;;6643:25:149;;;6616:18;;7763:32:43;6497:177:149;3600:203:101;3663:10;3703:1;3689:15;;3685:37;;;-1:-1:-1;3720:1:101;3706:16;;3685:37;-1:-1:-1;;3762:25:101;;3600:203::o;525:824:96:-;677:22;;;770:46;787:10;799:16;;;;:6;:16;:::i;:::-;770:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;770:16:96;;-1:-1:-1;;;770:46:96:i;:::-;-1:-1:-1;715:101:96;;-1:-1:-1;715:101:96;-1:-1:-1;840:26:96;831:5;:35;;;;;;;;:::i;:::-;;:66;;;;;870:27;881:15;870:10;:27::i;:::-;827:128;;;730:1:109;913:31:96;;;;;;827:128;1376:34:47;1021:12:96;1363:48:47;;;1472:4;1465:25;;;1570:4;1554:21;;1125:40:96;1554:21:47;1148:16:96;;;;;;:::i;1125:40::-;-1:-1:-1;1097:68:96;;-1:-1:-1;1097:68:96;-1:-1:-1;1189:26:96;1180:5;:35;;;;;;;;:::i;:::-;;:66;;;;;1219:27;1230:15;1219:10;:27::i;:::-;1176:128;;;730:1:109;1262:31:96;;;;;;;1176:128;-1:-1:-1;785:1:109;;525:824:96;-1:-1:-1;;;;;525:824:96:o;1764:174:95:-;1910:10;1904:17;1899:2;1887:10;1883:19;1876:46;2264:344:16;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:16;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;3995:499:111:-;4161:12;4175:23;1240:22;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:111;961:42:109;1266:35:111;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:111;;;;;;;;;;;1235:125;4218:9:::1;:14;;4231:1;4218:14:::0;4214:274:::1;;4272:2;-1:-1:-1::0;;;;;4272:7:111::1;4285:5;4299;4306:4;;4272:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;4248:63:111;;-1:-1:-1;4248:63:111;-1:-1:-1;4214:274:111::1;;;4332:9;:14;;4345:1;4332:14:::0;4328:160:::1;;4386:2;-1:-1:-1::0;;;;;4386:15:111::1;4407:5;4414:4;;4386:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4328:160;4450:27;::::0;-1:-1:-1;;;4450:27:111;;23597:2:149;4450:27:111::1;::::0;::::1;23579:21:149::0;23636:2;23616:18;;;23609:30;-1:-1:-1;;;23655:18:149;;;23648:47;23712:18;;4450:27:111::1;23395:341:149::0;7084:141:67;8870:21;8560:40;-1:-1:-1;;;8560:40:67;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:67;;;;;;;;;;;3599:330:75;6931:20:67;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:75;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:75::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:75::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:75:o;1824:361:80:-;1943:15;;;1953:4;1943:15;;;;;;;;;1879:7;;;;;;;;1943:15;;;;;;;;;;;-1:-1:-1;1943:15:80;1916:42;;2094:4;2088;2081;2068:11;2064:22;2055:7;2043:56;2137:11;2126:52;;;;;;;;;;;;:::i;:::-;2119:59;;;;;;;1824:361;;;;;:::o;2129:778:43:-;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:43;;2823:1;;-1:-1:-1;2827:35:43;;2295:606;2129:778;;;;;:::o;1671:281:16:-;1748:17;-1:-1:-1;;;;;1748:29:16;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:16;;-1:-1:-1;;;;;3495:32:149;;1805:47:16;;;3477:51:149;3450:18;;1805:47:16;3331:203:149;1744:119:16;-1:-1:-1;;;;;;;;;;;1872:73:16;;-1:-1:-1;;;;;;1872:73:16;-1:-1:-1;;;;;1872:73:16;;;;;;;;;;1671:281::o;3900:253:33:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:33;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:33:o;6113:122:16:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:16;;;;;;;;;;;4421:582:33;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:33;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:33;;-1:-1:-1;;;;;3495:32:149;;4917:24:33;;;3477:51:149;3450:18;;4917:24:33;3331:203:149;4837:119:33;-1:-1:-1;4976:10:33;4969:17;;5543:487;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:33;;;;;;;;;;;14:131:149;-1:-1:-1;;;;;89:31:149;;79:42;;69:70;;135:1;132;125:12;150:347;201:8;211:6;265:3;258:4;250:6;246:17;242:27;232:55;;283:1;280;273:12;232:55;-1:-1:-1;306:20:149;;-1:-1:-1;;;;;338:30:149;;335:50;;;381:1;378;371:12;335:50;418:4;410:6;406:17;394:29;;470:3;463:4;454:6;446;442:19;438:30;435:39;432:59;;;487:1;484;477:12;432:59;150:347;;;;;:::o;502:1252::-;628:6;636;644;652;660;668;676;684;737:3;725:9;716:7;712:23;708:33;705:53;;;754:1;751;744:12;705:53;793:9;780:23;812:31;837:5;812:31;:::i;:::-;862:5;-1:-1:-1;919:2:149;904:18;;891:32;932:33;891:32;932:33;:::i;:::-;984:7;-1:-1:-1;1043:2:149;1028:18;;1015:32;1056:33;1015:32;1056:33;:::i;:::-;1108:7;-1:-1:-1;1188:2:149;1173:18;;1160:32;;-1:-1:-1;1269:3:149;1254:19;;1241:33;-1:-1:-1;;;;;1286:30:149;;1283:50;;;1329:1;1326;1319:12;1283:50;1368:58;1418:7;1409:6;1398:9;1394:22;1368:58;:::i;:::-;1445:8;;-1:-1:-1;1342:84:149;-1:-1:-1;;1533:3:149;1518:19;;1505:33;-1:-1:-1;;;;;1550:32:149;;1547:52;;;1595:1;1592;1585:12;1547:52;1634:60;1686:7;1675:8;1664:9;1660:24;1634:60;:::i;:::-;502:1252;;;;-1:-1:-1;502:1252:149;;-1:-1:-1;502:1252:149;;;;;;1713:8;-1:-1:-1;;;502:1252:149:o;1759:131::-;-1:-1:-1;;;;;;1833:32:149;;1823:43;;1813:71;;1880:1;1877;1870:12;1895:245;1953:6;2006:2;1994:9;1985:7;1981:23;1977:32;1974:52;;;2022:1;2019;2012:12;1974:52;2061:9;2048:23;2080:30;2104:5;2080:30;:::i;2337:989::-;2445:6;2453;2461;2469;2477;2485;2538:3;2526:9;2517:7;2513:23;2509:33;2506:53;;;2555:1;2552;2545:12;2506:53;2594:9;2581:23;2613:31;2638:5;2613:31;:::i;:::-;2663:5;-1:-1:-1;2719:2:149;2704:18;;2691:32;-1:-1:-1;;;;;2735:30:149;;2732:50;;;2778:1;2775;2768:12;2732:50;2817:58;2867:7;2858:6;2847:9;2843:22;2817:58;:::i;:::-;2894:8;;-1:-1:-1;2791:84:149;-1:-1:-1;;2982:2:149;2967:18;;2954:32;-1:-1:-1;;;;;2998:32:149;;2995:52;;;3043:1;3040;3033:12;2995:52;3082:60;3134:7;3123:8;3112:9;3108:24;3082:60;:::i;:::-;3161:8;;-1:-1:-1;3056:86:149;-1:-1:-1;;3248:2:149;3233:18;;3220:32;3261:33;3220:32;3261:33;:::i;:::-;3313:7;3303:17;;;2337:989;;;;;;;;:::o;3539:806::-;3636:6;3644;3652;3660;3668;3721:3;3709:9;3700:7;3696:23;3692:33;3689:53;;;3738:1;3735;3728:12;3689:53;3777:9;3764:23;3796:31;3821:5;3796:31;:::i;:::-;3846:5;-1:-1:-1;3903:2:149;3888:18;;3875:32;3916:33;3875:32;3916:33;:::i;:::-;3968:7;-1:-1:-1;4048:2:149;4033:18;;4020:32;;-1:-1:-1;4129:2:149;4114:18;;4101:32;-1:-1:-1;;;;;4145:30:149;;4142:50;;;4188:1;4185;4178:12;4142:50;4227:58;4277:7;4268:6;4257:9;4253:22;4227:58;:::i;:::-;3539:806;;;;-1:-1:-1;3539:806:149;;-1:-1:-1;4304:8:149;;4201:84;3539:806;-1:-1:-1;;;3539:806:149:o;4557:127::-;4618:10;4613:3;4609:20;4606:1;4599:31;4649:4;4646:1;4639:15;4673:4;4670:1;4663:15;4689:725;4731:5;4784:3;4777:4;4769:6;4765:17;4761:27;4751:55;;4802:1;4799;4792:12;4751:55;4842:6;4829:20;-1:-1:-1;;;;;4864:6:149;4861:30;4858:56;;;4894:18;;:::i;:::-;4943:2;4937:9;5035:2;4997:17;;-1:-1:-1;;4993:31:149;;;5026:2;4989:40;4985:54;4973:67;;-1:-1:-1;;;;;5055:34:149;;5091:22;;;5052:62;5049:88;;;5117:18;;:::i;:::-;5153:2;5146:22;5177;;;5218:19;;;5239:4;5214:30;5211:39;-1:-1:-1;5208:59:149;;;5263:1;5260;5253:12;5208:59;5327:6;5320:4;5312:6;5308:17;5301:4;5293:6;5289:17;5276:58;5382:1;5354:19;;;5375:4;5350:30;5343:41;;;;5358:6;4689:725;-1:-1:-1;;;4689:725:149:o;5419:434::-;5496:6;5504;5557:2;5545:9;5536:7;5532:23;5528:32;5525:52;;;5573:1;5570;5563:12;5525:52;5618:23;;;-1:-1:-1;5716:2:149;5701:18;;5688:32;-1:-1:-1;;;;;5732:30:149;;5729:50;;;5775:1;5772;5765:12;5729:50;5798:49;5839:7;5830:6;5819:9;5815:22;5798:49;:::i;:::-;5788:59;;;5419:434;;;;;:::o;5858:634::-;5975:6;5983;5991;6044:2;6032:9;6023:7;6019:23;6015:32;6012:52;;;6060:1;6057;6050:12;6012:52;6100:9;6087:23;-1:-1:-1;;;;;6125:6:149;6122:30;6119:50;;;6165:1;6162;6155:12;6119:50;6188:22;;6244:3;6226:16;;;6222:26;6219:46;;;6261:1;6258;6251:12;6219:46;6284:2;6355;6340:18;;6327:32;;-1:-1:-1;6456:2:149;6441:18;;;6428:32;;5858:634;-1:-1:-1;;;5858:634:149:o;6679:380::-;6755:8;6765:6;6819:3;6812:4;6804:6;6800:17;6796:27;6786:55;;6837:1;6834;6827:12;6786:55;-1:-1:-1;6860:20:149;;-1:-1:-1;;;;;6892:30:149;;6889:50;;;6935:1;6932;6925:12;6889:50;6972:4;6964:6;6960:17;6948:29;;7032:3;7025:4;7015:6;7012:1;7008:14;7000:6;6996:27;6992:38;6989:47;6986:67;;;7049:1;7046;7039:12;7064:475;7175:6;7183;7236:2;7224:9;7215:7;7211:23;7207:32;7204:52;;;7252:1;7249;7242:12;7204:52;7292:9;7279:23;-1:-1:-1;;;;;7317:6:149;7314:30;7311:50;;;7357:1;7354;7347:12;7311:50;7396:83;7471:7;7462:6;7451:9;7447:22;7396:83;:::i;:::-;7498:8;;7370:109;;-1:-1:-1;7064:475:149;-1:-1:-1;;;;7064:475:149:o;7544:455::-;7621:6;7629;7682:2;7670:9;7661:7;7657:23;7653:32;7650:52;;;7698:1;7695;7688:12;7650:52;7737:9;7724:23;7756:31;7781:5;7756:31;:::i;:::-;7806:5;-1:-1:-1;7862:2:149;7847:18;;7834:32;-1:-1:-1;;;;;7878:30:149;;7875:50;;;7921:1;7918;7911:12;8004:156;8070:20;;8130:4;8119:16;;8109:27;;8099:55;;8150:1;8147;8140:12;8099:55;8004:156;;;:::o;8165:735::-;8260:6;8268;8276;8284;8292;8345:3;8333:9;8324:7;8320:23;8316:33;8313:53;;;8362:1;8359;8352:12;8313:53;8401:9;8388:23;8420:31;8445:5;8420:31;:::i;:::-;8470:5;-1:-1:-1;8548:2:149;8533:18;;8520:32;;-1:-1:-1;8629:2:149;8614:18;;8601:32;-1:-1:-1;;;;;8645:30:149;;8642:50;;;8688:1;8685;8678:12;8642:50;8727:58;8777:7;8768:6;8757:9;8753:22;8727:58;:::i;:::-;8804:8;;-1:-1:-1;8701:84:149;-1:-1:-1;8858:36:149;;-1:-1:-1;8890:2:149;8875:18;;8858:36;:::i;:::-;8848:46;;8165:735;;;;;;;;:::o;8905:288::-;8946:3;8984:5;8978:12;9011:6;9006:3;8999:19;9067:6;9060:4;9053:5;9049:16;9042:4;9037:3;9033:14;9027:47;9119:1;9112:4;9103:6;9098:3;9094:16;9090:27;9083:38;9182:4;9175:2;9171:7;9166:2;9158:6;9154:15;9150:29;9145:3;9141:39;9137:50;9130:57;;;8905:288;;;;:::o;9198:217::-;9345:2;9334:9;9327:21;9308:4;9365:44;9405:2;9394:9;9390:18;9382:6;9365:44;:::i;9420:544::-;9499:6;9507;9515;9568:2;9556:9;9547:7;9543:23;9539:32;9536:52;;;9584:1;9581;9574:12;9536:52;9623:9;9610:23;9642:31;9667:5;9642:31;:::i;:::-;9692:5;-1:-1:-1;9748:2:149;9733:18;;9720:32;-1:-1:-1;;;;;9764:30:149;;9761:50;;;9807:1;9804;9797:12;9761:50;9846:58;9896:7;9887:6;9876:9;9872:22;9846:58;:::i;:::-;9420:544;;9923:8;;-1:-1:-1;9820:84:149;;-1:-1:-1;;;;9420:544:149:o;10151:247::-;10210:6;10263:2;10251:9;10242:7;10238:23;10234:32;10231:52;;;10279:1;10276;10269:12;10231:52;10318:9;10305:23;10337:31;10362:5;10337:31;:::i;10403:1236::-;10809:3;10804;10800:13;10792:6;10788:26;10777:9;10770:45;10851:3;10846:2;10835:9;10831:18;10824:31;10751:4;10878:45;10918:3;10907:9;10903:19;10895:6;10878:45;:::i;:::-;10971:9;10963:6;10959:22;10954:2;10943:9;10939:18;10932:50;11005:32;11030:6;11022;11005:32;:::i;:::-;11068:2;11053:18;;11046:34;;;-1:-1:-1;;;;;11117:32:149;;11111:3;11096:19;;11089:61;11137:3;11166:19;;11159:35;;;11231:22;;;11225:3;11210:19;;11203:51;11303:13;;11325:22;;;11375:2;11401:15;;;;-1:-1:-1;11363:15:149;;;;-1:-1:-1;11444:169:149;11458:6;11455:1;11452:13;11444:169;;;11519:13;;11507:26;;11562:2;11588:15;;;;11553:12;;;;11480:1;11473:9;11444:169;;;-1:-1:-1;11630:3:149;;10403:1236;-1:-1:-1;;;;;;;;;;;10403:1236:149:o;12323:664::-;12411:6;12419;12427;12435;12488:2;12476:9;12467:7;12463:23;12459:32;12456:52;;;12504:1;12501;12494:12;12456:52;12543:9;12530:23;12562:31;12587:5;12562:31;:::i;:::-;12612:5;-1:-1:-1;12690:2:149;12675:18;;12662:32;;-1:-1:-1;12771:2:149;12756:18;;12743:32;-1:-1:-1;;;;;12787:30:149;;12784:50;;;12830:1;12827;12820:12;12784:50;12869:58;12919:7;12910:6;12899:9;12895:22;12869:58;:::i;:::-;12323:664;;;;-1:-1:-1;12946:8:149;-1:-1:-1;;;;12323:664:149:o;12992:1375::-;13152:6;13160;13168;13176;13184;13192;13200;13208;13261:3;13249:9;13240:7;13236:23;13232:33;13229:53;;;13278:1;13275;13268:12;13229:53;13317:9;13304:23;13336:31;13361:5;13336:31;:::i;:::-;13386:5;-1:-1:-1;13443:2:149;13428:18;;13415:32;13456:33;13415:32;13456:33;:::i;:::-;13508:7;-1:-1:-1;13566:2:149;13551:18;;13538:32;-1:-1:-1;;;;;13582:30:149;;13579:50;;;13625:1;13622;13615:12;13579:50;13664:83;13739:7;13730:6;13719:9;13715:22;13664:83;:::i;:::-;13766:8;;-1:-1:-1;13638:109:149;-1:-1:-1;;13854:2:149;13839:18;;13826:32;-1:-1:-1;;;;;13870:32:149;;13867:52;;;13915:1;13912;13905:12;13867:52;13954:85;14031:7;14020:8;14009:9;14005:24;13954:85;:::i;:::-;14058:8;;-1:-1:-1;13928:111:149;-1:-1:-1;;14146:3:149;14131:19;;14118:33;-1:-1:-1;;;;;14163:32:149;;14160:52;;;14208:1;14205;14198:12;14372:856;14476:6;14484;14492;14500;14508;14516;14569:3;14557:9;14548:7;14544:23;14540:33;14537:53;;;14586:1;14583;14576:12;14537:53;14625:9;14612:23;14644:31;14669:5;14644:31;:::i;:::-;14694:5;-1:-1:-1;14772:2:149;14757:18;;14744:32;;-1:-1:-1;14853:2:149;14838:18;;14825:32;-1:-1:-1;;;;;14869:30:149;;14866:50;;;14912:1;14909;14902:12;14866:50;14951:58;15001:7;14992:6;14981:9;14977:22;14951:58;:::i;:::-;15028:8;;-1:-1:-1;14925:84:149;-1:-1:-1;15082:36:149;;-1:-1:-1;15114:2:149;15099:18;;15082:36;:::i;:::-;14372:856;;;;-1:-1:-1;14372:856:149;;;;;15191:3;15176:19;;;15163:33;;-1:-1:-1;;14372:856:149:o;15233:927::-;15339:6;15347;15355;15363;15371;15379;15432:3;15420:9;15411:7;15407:23;15403:33;15400:53;;;15449:1;15446;15439:12;15400:53;15488:9;15475:23;15507:31;15532:5;15507:31;:::i;:::-;15557:5;-1:-1:-1;15614:2:149;15599:18;;15586:32;15627:33;15586:32;15627:33;:::i;:::-;15679:7;-1:-1:-1;15759:2:149;15744:18;;15731:32;;-1:-1:-1;15862:2:149;15847:18;;15834:32;;-1:-1:-1;15943:3:149;15928:19;;15915:33;-1:-1:-1;;;;;15960:30:149;;15957:50;;;16003:1;16000;15993:12;15957:50;16042:58;16092:7;16083:6;16072:9;16068:22;16042:58;:::i;:::-;15233:927;;;;-1:-1:-1;15233:927:149;;-1:-1:-1;15233:927:149;;16119:8;;15233:927;-1:-1:-1;;;15233:927:149:o;16515:288::-;16690:6;16679:9;16672:25;16733:2;16728;16717:9;16713:18;16706:30;16653:4;16753:44;16793:2;16782:9;16778:18;16770:6;16753:44;:::i;16808:249::-;16877:6;16930:2;16918:9;16909:7;16905:23;16901:32;16898:52;;;16946:1;16943;16936:12;16898:52;16978:9;16972:16;16997:30;17021:5;16997:30;:::i;17062:127::-;17123:10;17118:3;17114:20;17111:1;17104:31;17154:4;17151:1;17144:15;17178:4;17175:1;17168:15;17194:322;17285:4;17343:11;17330:25;17437:2;17433:7;17422:8;17406:14;17402:29;17398:43;17378:18;17374:68;17364:96;;17456:1;17453;17446:12;17364:96;17477:33;;;;;17194:322;-1:-1:-1;;17194:322:149:o;17521:521::-;17598:4;17604:6;17664:11;17651:25;17758:2;17754:7;17743:8;17727:14;17723:29;17719:43;17699:18;17695:68;17685:96;;17777:1;17774;17767:12;17685:96;17804:33;;17856:20;;;-1:-1:-1;;;;;;17888:30:149;;17885:50;;;17931:1;17928;17921:12;17885:50;17964:4;17952:17;;-1:-1:-1;17995:14:149;17991:27;;;17981:38;;17978:58;;;18032:1;18029;18022:12;18340:251;18410:6;18463:2;18451:9;18442:7;18438:23;18434:32;18431:52;;;18479:1;18476;18469:12;18431:52;18511:9;18505:16;18530:31;18555:5;18530:31;:::i;19473:230::-;19543:6;19596:2;19584:9;19575:7;19571:23;19567:32;19564:52;;;19612:1;19609;19602:12;19564:52;-1:-1:-1;19657:16:149;;19473:230;-1:-1:-1;19473:230:149:o;19961:266::-;20049:6;20044:3;20037:19;20101:6;20094:5;20087:4;20082:3;20078:14;20065:43;-1:-1:-1;20153:1:149;20128:16;;;20146:4;20124:27;;;20117:38;;;;20209:2;20188:15;;;-1:-1:-1;;20184:29:149;20175:39;;;20171:50;;19961:266::o;20232:627::-;-1:-1:-1;;;;;20501:32:149;;20483:51;;20570:3;20565:2;20550:18;;20543:31;;;-1:-1:-1;;20597:62:149;;20639:19;;20631:6;20623;20597:62;:::i;:::-;20707:9;20699:6;20695:22;20690:2;20679:9;20675:18;20668:50;20735:49;20777:6;20769;20761;20735:49;:::i;:::-;20727:57;;;20849:1;20845;20840:3;20836:11;20832:19;20824:6;20820:32;20815:2;20804:9;20800:18;20793:60;20232:627;;;;;;;;;:::o;21962:232::-;22001:3;22022:17;;;22019:140;;22081:10;22076:3;22072:20;22069:1;22062:31;22116:4;22113:1;22106:15;22144:4;22141:1;22134:15;22019:140;-1:-1:-1;22186:1:149;22175:13;;21962:232::o;22199:380::-;22278:1;22274:12;;;;22321;;;22342:61;;22396:4;22388:6;22384:17;22374:27;;22342:61;22449:2;22441:6;22438:14;22418:18;22415:38;22412:161;;22495:10;22490:3;22486:20;22483:1;22476:31;22530:4;22527:1;22520:15;22558:4;22555:1;22548:15;22412:161;;22199:380;;;:::o;22987:127::-;23048:10;23043:3;23039:20;23036:1;23029:31;23079:4;23076:1;23069:15;23103:4;23100:1;23093:15;23119:271;23302:6;23294;23289:3;23276:33;23258:3;23328:16;;23353:13;;;23328:16;23119:271;-1:-1:-1;23119:271:149:o;23867:518::-;23969:2;23964:3;23961:11;23958:421;;;24005:5;24002:1;23995:16;24049:4;24046:1;24036:18;24119:2;24107:10;24103:19;24100:1;24096:27;24090:4;24086:38;24155:4;24143:10;24140:20;24137:47;;;-1:-1:-1;24178:4:149;24137:47;24233:2;24228:3;24224:12;24221:1;24217:20;24211:4;24207:31;24197:41;;24288:81;24306:2;24299:5;24296:13;24288:81;;;24365:1;24351:16;;24332:1;24321:13;24288:81;;24561:1299;24687:3;24681:10;-1:-1:-1;;;;;24706:6:149;24703:30;24700:56;;;24736:18;;:::i;:::-;24765:97;24855:6;24815:38;24847:4;24841:11;24815:38;:::i;:::-;24809:4;24765:97;:::i;:::-;24911:4;24942:2;24931:14;;24959:1;24954:649;;;;25647:1;25664:6;25661:89;;;-1:-1:-1;25716:19:149;;;25710:26;25661:89;-1:-1:-1;;24518:1:149;24514:11;;;24510:24;24506:29;24496:40;24542:1;24538:11;;;24493:57;25763:81;;24924:930;;24954:649;23814:1;23807:14;;;23851:4;23838:18;;-1:-1:-1;;24990:20:149;;;25108:222;25122:7;25119:1;25116:14;25108:222;;;25204:19;;;25198:26;25183:42;;25311:4;25296:20;;;;25264:1;25252:14;;;;25138:12;25108:222;;;25112:3;25358:6;25349:7;25346:19;25343:201;;;25419:19;;;25413:26;-1:-1:-1;;25502:1:149;25498:14;;;25514:3;25494:24;25490:37;25486:42;25471:58;25456:74;;25343:201;-1:-1:-1;;;;25590:1:149;25574:14;;;25570:22;25557:36;;-1:-1:-1;24561:1299:149:o;25865:485::-;25961:6;25969;25977;26030:2;26018:9;26009:7;26005:23;26001:32;25998:52;;;26046:1;26043;26036:12;25998:52;26091:16;;26176:2;26161:18;;26155:25;26091:16;;-1:-1:-1;26189:33:149;26155:25;26189:33;:::i;:::-;26314:2;26299:18;;;;26293:25;25865:485;;26241:7;;-1:-1:-1;26293:25:149;;25865:485;-1:-1:-1;;25865:485:149:o;26355:301::-;26484:3;26522:6;26516:13;26568:6;26561:4;26553:6;26549:17;26544:3;26538:37;26630:1;26594:16;;26619:13;;;-1:-1:-1;26594:16:149;26355:301;-1:-1:-1;26355:301:149:o", + "language": "Solidity", + "natspec": { + "errors": { + "AddressEmptyCode(address)": [ + { + "details": "There's no code at `target` (it is not a contract)." + } + ], + "ECDSAInvalidSignature()": [ + { + "details": "The signature derives the `address(0)`." + } + ], + "ECDSAInvalidSignatureLength(uint256)": [ + { + "details": "The signature has an invalid length." + } + ], + "ECDSAInvalidSignatureS(bytes32)": [ + { + "details": "The signature has an S value that is in the upper half order." + } + ], + "ERC1967InvalidImplementation(address)": [ + { + "details": "The `implementation` of the proxy is invalid." + } + ], + "ERC1967NonPayable()": [ + { + "details": "An upgrade function sees `msg.value > 0` that may be lost." + } + ], + "FailedCall()": [ + { + "details": "A call to an address target failed. The target may have reverted." + } + ], + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ], + "UUPSUnauthorizedCallContext()": [ + { + "details": "The call is from an unauthorized context." + } + ], + "UUPSUnsupportedProxiableUUID(bytes32)": [ + { + "details": "The storage `slot` is unsupported as a UUID." + } + ] + }, + "events": { + "EIP712DomainChanged()": { + "details": "MAY be emitted to signal that the domain could have changed." + }, + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + }, + "Upgraded(address)": { + "details": "Emitted when the implementation is upgraded." + } + }, + "kind": "dev", + "methods": { + "eip712Domain()": { + "details": "See {IERC-5267}." + }, + "entryPoint()": { + "notice": "Return the entryPoint used by this account. Subclass should return the current entryPoint used by this account." + }, + "execute(address,uint256,bytes)": { + "notice": "execute a single call from the account." + }, + "execute(address,uint256,bytes,uint8)": { + "details": "Allows the mech operator to execute arbitrary transactions", + "params": { + "data": "Data payload of transaction.", + "operation": "Operation type of transaction.", + "to": "Destination address of transaction.", + "value": "Ether value of transaction." + }, + "returns": { + "returnData": "Return data of the call" + } + }, + "execute(address,uint256,bytes,uint8,uint256)": { + "details": "Allows the mech operator to execute arbitrary transactions", + "params": { + "data": "Data payload of transaction.", + "operation": "Operation type of transaction.", + "to": "Destination address of transaction.", + "txGas": "Gas to send for executing the meta transaction, if 0 all left will be sent", + "value": "Ether value of transaction." + }, + "returns": { + "returnData": "Return data of the call" + } + }, + "executeBatch((address,uint256,bytes)[])": { + "notice": "execute a batch of calls. revert on the first call that fails. If the batch reverts, and it contains more than a single call, then wrap the revert with ExecuteError, to mark the failing call index." + }, + "getNonce()": { + "notice": "Return the account nonce. This method returns the next sequential nonce. For a nonce of a specific key, use `entrypoint.getNonce(account, key)`" + }, + "isOperator(address)": { + "details": "Return if the passed address is authorized to sign on behalf of the mech, must be implemented by the child contract", + "params": { + "signer": "The address to check" + } + }, + "isValidSignature(bytes32,bytes)": { + "details": "Checks whether the signature provided is valid for the provided hash, complies with EIP-1271. A signature is valid if either: - It's a valid ECDSA signature by the mech operator - It's a valid EIP-1271 signature by the mech operator - It's a valid EIP-1271 signature by the mech itself", + "params": { + "hash": "Hash of the data (could be either a message hash or transaction hash)", + "signature": "Signature to validate. Can be an ECDSA signature or a EIP-1271 contract signature (identified by v=0)" + } + }, + "isValidSigner(address,bytes)": { + "details": "Returns a magic value indicating whether a given signer is authorized to act on behalf of the account", + "params": { + "signer": "The address to check signing authorization for" + }, + "returns": { + "magicValue": "Magic value indicating whether the signer is valid" + } + }, + "proxiableUUID()": { + "details": "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." + }, + "state()": { + "details": "Returns the current account state per EIP-6551NOTE: This does not change for arbitrary account state changes!The model used here is to change it for *owner-initiated* state changes.E.g., sending a token held by this account should change the state(),but receiving a token should not.This is to prevent griefing if, e.g., a marketplace requires constant state()from listing to sale: an attacked could send a spam token to kill the sale.However, even here, NOT ALL *OWNER-INITIATED* STATE CHANGES ARE CAPTURED.E.g., an owner might approve a contract to transferFrom from this TBA,and such transfers would NOT be reflected with a state change.As such, we advise you do NOT consider this a source of truth, but instead,for the sale-of-TBA case, commit to the state in a more comprehensive, offchain way." + }, + "supportsInterface(bytes4)": { + "details": "Returns true if a given interfaceId is supported by this account. This method can be extended by an override" + }, + "token()": { + "details": "Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.", + "returns": { + "chainId": " The EIP-155 ID of the chain the token exists on", + "tokenContract": "The contract address of the token", + "tokenId": " The ID of the token" + } + }, + "upgradeToAndCall(address,bytes)": { + "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall", + "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." + }, + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": { + "details": "Must validate caller is the entryPoint. Must validate the signature and nonce", + "notice": "Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \"simulation call\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.", + "params": { + "missingAccountFunds": "- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.", + "userOp": "- The operation that is about to be executed.", + "userOpHash": "- Hash of the user's request data. can be used as the basis for signature." + }, + "returns": { + "validationData": " - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \"aggregator\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \"indefinitely\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly." + } + } + }, + "version": 1 + }, + "offset": [ + 147, + 426 + ], + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x17D JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x84B0196E GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xB61D27F6 GT PUSH2 0x87 JUMPI DUP1 PUSH4 0xCA3B98BB GT PUSH2 0x62 JUMPI DUP1 PUSH4 0xCA3B98BB EQ PUSH2 0x480 JUMPI DUP1 PUSH4 0xD087D288 EQ PUSH2 0x493 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x4D3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB61D27F6 EQ PUSH2 0x41F JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x43E JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x46C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x84B0196E EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x8F41EC5A EQ PUSH2 0x370 JUMPI DUP1 PUSH4 0x9CDF379C EQ PUSH2 0x384 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x397 JUMPI DUP1 PUSH4 0xB0D691FE EQ PUSH2 0x3C7 JUMPI DUP1 PUSH4 0xB479D600 EQ PUSH2 0x3ED JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x34FCD5BE GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x523E3260 GT PUSH2 0x113 JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x302 JUMPI DUP1 PUSH4 0x6D70F7AE EQ PUSH2 0x316 JUMPI DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x335 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x34FCD5BE EQ PUSH2 0x291 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x2B0 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x2C3 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH3 0x23DE29 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1AE JUMPI DUP1 PUSH4 0x94CEFED EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x20D JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x19822F7C EQ PUSH2 0x264 JUMPI PUSH0 PUSH0 REVERT JUMPDEST CALLDATASIZE PUSH2 0x184 JUMPI STOP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x193 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1AC PUSH2 0x1A2 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4E JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x1C8 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C10 JUMP JUMPDEST PUSH2 0x50A JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1F5 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C2B JUMP JUMPDEST PUSH2 0x535 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x218 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x22C PUSH2 0x227 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CBD JUMP JUMPDEST PUSH2 0x54F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x250 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x22C PUSH2 0x25F CALLDATASIZE PUSH1 0x4 PUSH2 0x1DC7 JUMP JUMPDEST PUSH2 0x5A9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x26F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x283 PUSH2 0x27E CALLDATASIZE PUSH1 0x4 PUSH2 0x1E0A JUMP JUMPDEST PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1AC PUSH2 0x2AB CALLDATASIZE PUSH1 0x4 PUSH2 0x1E98 JUMP JUMPDEST PUSH2 0x700 JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x2BE CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED6 JUMP JUMPDEST PUSH2 0x7F0 JUMP JUMPDEST PUSH2 0x2D6 PUSH2 0x2D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F21 JUMP JUMPDEST PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1FBA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2EE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x22C PUSH2 0x2FD CALLDATASIZE PUSH1 0x4 PUSH2 0x1FCC JUMP JUMPDEST PUSH2 0x83B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x283 PUSH2 0x860 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x321 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1CD PUSH2 0x330 CALLDATASIZE PUSH1 0x4 PUSH2 0x201C JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x340 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1AC PUSH2 0x919 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x354 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x35D PUSH2 0xA70 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2037 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x283 PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x283 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2D6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3D2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH2 0x1F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x0 PUSH2 0x1F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1AC PUSH2 0x439 CALLDATASIZE PUSH1 0x4 PUSH2 0x20CD JUMP JUMPDEST PUSH2 0xB19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x449 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x22C PUSH2 0x458 CALLDATASIZE PUSH1 0x4 PUSH2 0x2124 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x477 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x283 PUSH2 0xB71 JUMP JUMPDEST PUSH2 0x2D6 PUSH2 0x48E CALLDATASIZE PUSH1 0x4 PUSH2 0x21C4 JUMP JUMPDEST PUSH2 0xC58 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x49E JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x283 PUSH2 0xC91 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x22C PUSH2 0x4C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x2239 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x4E7 PUSH2 0xD1A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x1D9 JUMP JUMPDEST PUSH0 PUSH2 0x514 DUP3 PUSH2 0xD30 JUMP JUMPDEST DUP1 PUSH2 0x52F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3C1CC5F1 PUSH1 0xE0 SHL EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x544 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xD5A JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x55A PUSH2 0xD1A JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO PUSH2 0x577 JUMPI POP DUP1 DUP7 EQ JUMPDEST ISZERO PUSH2 0x595 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH2 0x5C9 DUP6 PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD PUSH0 BYTE SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0xFF DUP2 AND PUSH0 SUB PUSH2 0x694 JUMPI DUP3 DUP6 DUP4 ADD PUSH1 0x20 ADD PUSH2 0x5EA DUP3 PUSH2 0x87B JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x600 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x61B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP5 POP PUSH2 0x52F SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x649 SWAP1 DUP12 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x22AF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x664 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x688 SWAP2 SWAP1 PUSH2 0x22C7 JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x52F JUMP JUMPDEST PUSH2 0x6A3 PUSH2 0x330 DUP8 DUP4 DUP7 DUP7 PUSH2 0xDF2 JUMP JUMPDEST ISZERO PUSH2 0x6BB JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP3 POP PUSH2 0x52F SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x6D7 PUSH2 0xE1E JUMP JUMPDEST PUSH2 0x6E1 DUP5 DUP5 PUSH2 0xE83 JUMP JUMPDEST SWAP1 POP PUSH2 0x6F0 DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xEE0 JUMP JUMPDEST PUSH2 0x6F9 DUP3 PUSH2 0xF29 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x708 PUSH2 0xF6E JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x7EA JUMPI CALLDATASIZE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x726 JUMPI PUSH2 0x726 PUSH2 0x22E2 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x738 SWAP2 SWAP1 PUSH2 0x22F6 JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x796 PUSH2 0x74B PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x201C JUMP JUMPDEST PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x75D PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x2314 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP POP GAS PUSH2 0xF76 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x7E0 JUMPI DUP4 PUSH1 0x1 SUB PUSH2 0x7B2 JUMPI PUSH2 0x7AD PUSH2 0xF8C JUMP JUMPDEST PUSH2 0x7E0 JUMP JUMPDEST DUP3 PUSH2 0x7BC PUSH0 PUSH2 0xF9D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5A154675 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D7 SWAP3 SWAP2 SWAP1 PUSH2 0x22AF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x70B JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x7F8 PUSH2 0xFCE JUMP JUMPDEST PUSH2 0x801 DUP3 PUSH2 0x1072 JUMP JUMPDEST PUSH2 0x80B DUP3 DUP3 PUSH2 0x10BA JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x820 DUP8 DUP8 DUP8 DUP8 DUP8 GAS PUSH2 0x117B JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP1 PUSH2 0x831 JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x845 DUP5 PUSH2 0x87B JUMP JUMPDEST PUSH2 0x84F JUMPI PUSH0 PUSH2 0x858 JUMP JUMPDEST PUSH4 0x291F193 PUSH1 0xE5 SHL JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x869 PUSH2 0x11D2 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x25EF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x886 PUSH2 0xD1A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP3 POP DUP5 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8D3 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x8F7 SWAP2 SWAP1 PUSH2 0x2356 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x858 JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x95D JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x978 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x986 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x9A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x9CE JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x9D6 PUSH2 0x121B JUMP JUMPDEST PUSH2 0xA23 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH18 0x243CB832B920B1B1B7BAB73A26B4B73A32B9 PUSH1 0x71 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x1223 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xA69 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 DUP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x25CF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD SWAP1 SWAP2 POP ISZERO DUP1 ISZERO PUSH2 0xA9B JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0xADF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1152540DCC4C8E88155B9A5B9A5D1A585B1A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D7 JUMP JUMPDEST PUSH2 0xAE7 PUSH2 0x1235 JUMP JUMPDEST PUSH2 0xAEF PUSH2 0x12F5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0xF PUSH1 0xF8 SHL SWAP13 SWAP4 SWAP12 POP SWAP2 SWAP10 POP CHAINID SWAP9 POP ADDRESS SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB21 PUSH2 0xF6E JUMP JUMPDEST PUSH0 PUSH2 0xB62 DUP6 DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP POP GAS PUSH2 0xF76 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xA69 JUMPI PUSH2 0xA69 PUSH2 0xF8C JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800 SWAP1 POP PUSH0 PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH1 0x40 MLOAD PUSH4 0x1AAB3F0D PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x35567E1A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBF6 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC1A SWAP2 SWAP1 PUSH2 0x2371 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x40 MLOAD SWAP2 SWAP3 POP PUSH2 0xC39 SWAP2 DUP4 SWAP1 PUSH1 0x20 ADD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH0 SHR SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0xC75 DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 ISZERO PUSH2 0xC6F JUMPI DUP9 PUSH2 0x117B JUMP JUMPDEST GAS PUSH2 0x117B JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP1 PUSH2 0xC86 JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH1 0x40 MLOAD PUSH4 0x1AAB3F0D PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x35567E1A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xCF1 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD15 SWAP2 SWAP1 PUSH2 0x2371 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xD25 PUSH2 0x1333 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH0 PUSH2 0xD3A DUP3 PUSH2 0x133F JUMP JUMPDEST DUP1 PUSH2 0x52F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x94CEFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x94CEFED SWAP1 PUSH2 0xDB2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x23B0 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDCE JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x544 SWAP2 SWAP1 PUSH2 0x2356 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH2 0xE02 DUP9 DUP9 DUP9 DUP9 PUSH2 0x13E0 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0xE12 DUP3 DUP3 PUSH2 0x14A8 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6163636F756E743A206E6F742066726F6D20456E747279506F696E7400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D7 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x4 PUSH2 0xE93 PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x2314 JUMP JUMPDEST SWAP1 POP GT ISZERO PUSH2 0xED6 JUMPI PUSH0 PUSH2 0xEB1 PUSH2 0xEAC PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x2314 JUMP JUMPDEST PUSH2 0x1560 JUMP JUMPDEST SWAP1 POP PUSH4 0xF6B31013 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND ADD PUSH2 0xED4 JUMPI PUSH0 SWAP2 POP POP PUSH2 0x52F JUMP JUMPDEST POP JUMPDEST PUSH2 0x6F9 DUP4 DUP4 PUSH2 0x1577 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 LT PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x496E76616C6964206E6F6E6365 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D7 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH0 SWAP1 CALLER SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0xA69 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xA69 JUMP JUMPDEST PUSH2 0xE81 PUSH2 0xE1E JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD DUP8 DUP10 DUP8 CALL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE81 PUSH2 0xF98 PUSH0 PUSH2 0xF9D JUMP JUMPDEST PUSH2 0x1684 JUMP JUMPDEST PUSH1 0x60 RETURNDATASIZE DUP3 ISZERO PUSH2 0xFB1 JUMPI DUP3 DUP2 GT ISZERO PUSH2 0xFB1 JUMPI POP DUP2 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP3 ADD DUP2 ADD PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP2 PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY SWAP4 SWAP3 POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1054 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1048 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x25EF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x107B CALLER PUSH2 0x87B JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x109C JUMPI POP CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ ISZERO JUMPDEST ISZERO PUSH2 0xF26 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47802953 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1114 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1111 SWAP2 DUP2 ADD SWAP1 PUSH2 0x2371 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x113C JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7D7 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x25EF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x116C JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x7D7 JUMP JUMPDEST PUSH2 0x1176 DUP4 DUP4 PUSH2 0x168C JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800 DUP1 SLOAD PUSH0 SWAP2 PUSH1 0x60 SWAP2 DUP2 DUP5 PUSH2 0x11AE DUP4 PUSH2 0x2403 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH2 0x11C1 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x16E1 JUMP JUMPDEST SWAP3 POP SWAP3 POP POP JUMPDEST SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE81 PUSH2 0x1838 JUMP JUMPDEST PUSH2 0x122B PUSH2 0x1838 JUMP JUMPDEST PUSH2 0x80B DUP3 DUP3 PUSH2 0x1881 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x25CF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x1273 SWAP1 PUSH2 0x2427 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x129F SWAP1 PUSH2 0x2427 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x12EA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x12C1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x12EA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x12CD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x25CF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x1273 SWAP1 PUSH2 0x2427 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xD25 ADDRESS PUSH2 0x18E0 JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3CE4A3E9 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x136F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x138A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6608BDF PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x13A5 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x13C0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x52F JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x51945447 PUSH1 0xE0 SHL EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x1419 JUMPI POP PUSH0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x149E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x146A JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1495 JUMPI POP PUSH0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x149E JUMP JUMPDEST SWAP3 POP PUSH0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x14BB JUMPI PUSH2 0x14BB PUSH2 0x245F JUMP JUMPDEST SUB PUSH2 0x14C4 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x14D8 JUMPI PUSH2 0x14D8 PUSH2 0x245F JUMP JUMPDEST SUB PUSH2 0x14F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x150A JUMPI PUSH2 0x150A PUSH2 0x245F JUMP JUMPDEST SUB PUSH2 0x152B JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x7D7 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x153F JUMPI PUSH2 0x153F PUSH2 0x245F JUMP JUMPDEST SUB PUSH2 0x80B JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x7D7 JUMP JUMPDEST PUSH0 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x1571 JUMPI POP PUSH0 PUSH2 0x52F JUMP JUMPDEST POP POP CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x15C5 DUP5 PUSH2 0x158C PUSH2 0x100 DUP9 ADD DUP9 PUSH2 0x2314 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1934 SWAP3 POP POP POP JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x15DE JUMPI PUSH2 0x15DE PUSH2 0x245F JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x15EF JUMPI POP PUSH2 0x15EF DUP3 PUSH2 0x87B JUMP JUMPDEST ISZERO PUSH2 0x15FE JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0x52F JUMP JUMPDEST PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1C DUP6 SWAP1 MSTORE PUSH1 0x3C SWAP1 KECCAK256 PUSH2 0x163E DUP2 PUSH2 0x158C PUSH2 0x100 DUP10 ADD DUP10 PUSH2 0x2314 JUMP JUMPDEST POP SWAP1 SWAP4 POP SWAP2 POP PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1657 JUMPI PUSH2 0x1657 PUSH2 0x245F JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x1668 JUMPI POP PUSH2 0x1668 DUP4 PUSH2 0x87B JUMP JUMPDEST ISZERO PUSH2 0x1678 JUMPI PUSH0 SWAP4 POP POP POP POP PUSH2 0x52F JUMP JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH2 0x1695 DUP3 PUSH2 0x197D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x16D9 JUMPI PUSH2 0x1176 DUP3 DUP3 PUSH2 0x19E0 JUMP JUMPDEST PUSH2 0x80B PUSH2 0x1A52 JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH2 0x16ED CALLER PUSH2 0x87B JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x170E JUMPI POP CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ ISZERO JUMPDEST ISZERO PUSH2 0x172C JUMPI PUSH1 0x40 MLOAD PUSH4 0x47802953 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH0 SUB PUSH2 0x179D JUMPI DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x1752 SWAP3 SWAP2 SWAP1 PUSH2 0x2473 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x178D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1792 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x11C7 JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x17FC JUMPI DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x17C3 SWAP3 SWAP2 SWAP1 PUSH2 0x2473 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP7 DELEGATECALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x178D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1792 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x24B73B30B634B21037B832B930BA34B7B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x7D7 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1889 PUSH2 0x1838 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x25CF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 PUSH2 0x18C2 DUP5 DUP3 PUSH2 0x24C6 JUMP JUMPDEST POP PUSH1 0x3 DUP2 ADD PUSH2 0x18D1 DUP4 DUP3 PUSH2 0x24C6 JUMP JUMPDEST POP PUSH0 DUP1 DUP3 SSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x60 PUSH1 0x4D PUSH1 0x20 DUP4 ADD DUP8 EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1926 SWAP2 SWAP1 PUSH2 0x2580 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x196B JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH0 BYTE PUSH2 0x195D DUP9 DUP3 DUP6 DUP6 PUSH2 0x13E0 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x1976 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x19B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7D7 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x25EF PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x19FC SWAP2 SWAP1 PUSH2 0x25B8 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1A34 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1A39 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1A49 DUP6 DUP4 DUP4 PUSH2 0x1A71 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0xE81 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1A86 JUMPI PUSH2 0x1A81 DUP3 PUSH2 0x1ACD JUMP JUMPDEST PUSH2 0x6F9 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1A9D JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1AC6 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x7D7 JUMP JUMPDEST POP DUP1 PUSH2 0x6F9 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1ADD JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xF26 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1B1A JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1B30 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1B47 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1B65 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1B70 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1B80 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x1B90 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1BB1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1BBD DUP12 DUP3 DUP13 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1BDB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1BE7 DUP12 DUP3 DUP13 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0xF26 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1C20 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6F9 DUP2 PUSH2 0x1BFB JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1C40 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x1C4B DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1C65 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1C71 DUP10 DUP3 DUP11 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1C8F JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1C9B DUP10 DUP3 DUP11 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x1CAF DUP2 PUSH2 0x1AF6 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1CD1 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1CDC DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1CEC DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1D0D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1D19 DUP9 DUP3 DUP10 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D4D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1D66 JUMPI PUSH2 0x1D66 PUSH2 0x1D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1D94 JUMPI PUSH2 0x1D94 PUSH2 0x1D2A JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x1DAB JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DD8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1DF4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1E00 DUP6 DUP3 DUP7 ADD PUSH2 0x1D3E JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E1C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1E31 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 ADD PUSH2 0x120 DUP2 DUP8 SUB SLT ISZERO PUSH2 0x1E43 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1E68 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1E7E JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x1B47 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1EA9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1EBE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1ECA DUP6 DUP3 DUP7 ADD PUSH2 0x1E58 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1EE7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1EF2 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1DF4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x1F1C JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1F35 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1F40 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1F61 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1F6D DUP9 DUP3 DUP10 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x1F80 SWAP1 POP PUSH1 0x60 DUP8 ADD PUSH2 0x1F0C JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x6F9 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x1F8C JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1FDE JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x1FE9 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2003 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x200F DUP7 DUP3 DUP8 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x202C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x6F9 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST PUSH1 0xFF PUSH1 0xF8 SHL DUP9 AND DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x2055 PUSH1 0xE0 DUP4 ADD DUP10 PUSH2 0x1F8C JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2067 DUP2 DUP10 PUSH2 0x1F8C JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD DUP7 SWAP1 MSTORE DUP4 DUP2 SUB PUSH1 0xC0 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP8 ADD SWAP4 POP SWAP1 SWAP2 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x20BC JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x209E JUMP JUMPDEST POP SWAP1 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x20E0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x20EB DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x210C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2118 DUP8 DUP3 DUP9 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x213B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2146 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x2156 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2170 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x217C DUP12 DUP3 DUP13 ADD PUSH2 0x1E58 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x219A JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x21A6 DUP12 DUP3 DUP13 ADD PUSH2 0x1E58 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1BDB JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x21D9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x21E4 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2205 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2211 DUP10 DUP3 DUP11 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x2224 SWAP1 POP PUSH1 0x60 DUP9 ADD PUSH2 0x1F0C JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP2 SWAP5 SWAP4 PUSH1 0x80 SWAP1 SWAP3 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x224E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2259 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x2269 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2291 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x229D DUP10 DUP3 DUP11 ADD PUSH2 0x1B0A JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x858 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1F8C JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x22D7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6F9 DUP2 PUSH2 0x1BFB JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 CALLDATALOAD PUSH1 0x5E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x230A JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2329 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x2342 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1B47 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2366 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x6F9 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2381 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x23D4 SWAP1 DUP4 ADD DUP8 DUP10 PUSH2 0x2388 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x23E7 DUP2 DUP7 DUP9 PUSH2 0x2388 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x2420 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x243B JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x2459 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1176 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x24A7 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xA69 JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x24B3 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24DF JUMPI PUSH2 0x24DF PUSH2 0x1D2A JUMP JUMPDEST PUSH2 0x24F3 DUP2 PUSH2 0x24ED DUP5 SLOAD PUSH2 0x2427 JUMP JUMPDEST DUP5 PUSH2 0x2482 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x2525 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x250E JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xA69 JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2554 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x2534 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x2571 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2592 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x25A5 DUP2 PUSH2 0x1AF6 JUMP JUMPDEST PUSH1 0x40 SWAP5 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP6 SWAP4 SWAP5 POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID LOG1 PUSH11 0x46D94261C7517CC8FF89F6 SHR 0xC 0xE9 CALLDATALOAD SWAP9 0xE3 0xC8 BLOBHASH DUP1 LT GT 0xDE 0xE6 BLOBHASH 0xA6 0xA5 JUMPI 0xD1 STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBCA26469706673582212202D SWAP2 SWAP6 ISZERO CALLDATACOPY SWAP7 0xA6 BYTE BALANCE JUMPI MCOPY SWAP9 0xD6 CHAINID 0xD PUSH14 0x9B6075E2CC83D0732C7382B9A0DE SMOD SWAP15 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ", + "pcMap": { + "0": { + "offset": [ + 147, + 426 + ], + "op": "PUSH1", + "path": "100", + "value": "0x80" + }, + "2": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH1", + "path": "100", + "value": "0x40" + }, + "4": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "MSTORE", + "path": "100" + }, + "5": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH1", + "path": "100", + "value": "0x4" + }, + "7": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "CALLDATASIZE", + "path": "100" + }, + "8": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "LT", + "path": "100" + }, + "9": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x17D" + }, + "12": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "13": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "14": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "CALLDATALOAD", + "path": "100" + }, + "15": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH1", + "path": "100", + "value": "0xE0" + }, + "17": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "SHR", + "path": "100" + }, + "18": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "19": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x84B0196E" + }, + "24": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "GT", + "path": "100" + }, + "25": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0xCD" + }, + "28": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "29": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "30": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xB61D27F6" + }, + "35": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "GT", + "path": "100" + }, + "36": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x87" + }, + "39": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "40": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "41": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xCA3B98BB" + }, + "46": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "GT", + "path": "100" + }, + "47": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x62" + }, + "50": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "51": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "52": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xCA3B98BB" + }, + "57": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "58": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x480" + }, + "61": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "62": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "63": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xD087D288" + }, + "68": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "69": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x493" + }, + "72": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "73": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "74": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xF23A6E61" + }, + "79": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "80": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x4A7" + }, + "83": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "84": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "85": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xFC0C546A" + }, + "90": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "91": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x4D3" + }, + "94": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "95": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "96": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "97": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "REVERT", + "path": "100" + }, + "98": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPDEST", + "path": "100" + }, + "99": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "100": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xB61D27F6" + }, + "105": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "106": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x41F" + }, + "109": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "110": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "111": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xBC197C81" + }, + "116": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "117": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x43E" + }, + "120": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "121": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "122": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xC19D93FB" + }, + "127": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "128": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x46C" + }, + "131": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "132": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "133": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "134": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "REVERT", + "path": "100" + }, + "135": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPDEST", + "path": "100" + }, + "136": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "137": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x84B0196E" + }, + "142": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "143": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x349" + }, + "146": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "147": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "148": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x8F41EC5A" + }, + "153": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "154": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x370" + }, + "157": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "158": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "159": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x9CDF379C" + }, + "164": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "165": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x384" + }, + "168": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "169": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "170": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xAD3CB1CC" + }, + "175": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "176": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x397" + }, + "179": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "180": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "181": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xB0D691FE" + }, + "186": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "187": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x3C7" + }, + "190": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "191": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "192": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0xB479D600" + }, + "197": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "198": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x3ED" + }, + "201": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "202": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "203": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "204": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "REVERT", + "path": "100" + }, + "205": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPDEST", + "path": "100" + }, + "206": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "207": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x34FCD5BE" + }, + "212": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "GT", + "path": "100" + }, + "213": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x138" + }, + "216": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "217": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "218": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x523E3260" + }, + "223": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "GT", + "path": "100" + }, + "224": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x113" + }, + "227": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "228": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "229": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x523E3260" + }, + "234": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "235": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x2E3" + }, + "238": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "239": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "240": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x52D1902D" + }, + "245": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "246": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x302" + }, + "249": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "250": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "251": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x6D70F7AE" + }, + "256": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "257": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x316" + }, + "260": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "261": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "262": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x8129FC1C" + }, + "267": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "268": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x335" + }, + "271": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "272": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "273": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "274": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "REVERT", + "path": "100" + }, + "275": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPDEST", + "path": "100" + }, + "276": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "277": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x34FCD5BE" + }, + "282": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "283": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x291" + }, + "286": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "287": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "288": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x4F1EF286" + }, + "293": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "294": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x2B0" + }, + "297": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "298": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "299": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x51945447" + }, + "304": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "305": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x2C3" + }, + "308": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "309": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "310": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "311": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "REVERT", + "path": "100" + }, + "312": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPDEST", + "path": "100" + }, + "313": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "314": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH3", + "path": "100", + "value": "0x23DE29" + }, + "318": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "319": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x188" + }, + "322": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "323": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "324": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x1FFC9A7" + }, + "329": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "330": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x1AE" + }, + "333": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "334": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "335": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x94CEFED" + }, + "340": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "341": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x1E2" + }, + "344": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "345": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "346": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x150B7A02" + }, + "351": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "352": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x20D" + }, + "355": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "356": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "357": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x1626BA7E" + }, + "362": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "363": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x245" + }, + "366": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "367": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "DUP1", + "path": "100" + }, + "368": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH4", + "path": "100", + "value": "0x19822F7C" + }, + "373": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "EQ", + "path": "100" + }, + "374": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x264" + }, + "377": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "378": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "379": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "380": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "REVERT", + "path": "100" + }, + "381": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPDEST", + "path": "100" + }, + "382": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "CALLDATASIZE", + "path": "100" + }, + "383": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH2", + "path": "100", + "value": "0x184" + }, + "386": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPI", + "path": "100" + }, + "387": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "STOP", + "path": "100" + }, + "388": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "JUMPDEST", + "path": "100" + }, + "389": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "390": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "PUSH0", + "path": "100" + }, + "391": { + "fn": null, + "offset": [ + 147, + 426 + ], + "op": "REVERT", + "path": "100" + }, + "392": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "393": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "CALLVALUE", + "path": "112" + }, + "394": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "DUP1", + "path": "112" + }, + "395": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "ISZERO", + "path": "112" + }, + "396": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x193" + }, + "399": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPI", + "path": "112" + }, + "400": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH0", + "path": "112" + }, + "401": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH0", + "path": "112" + }, + "402": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "REVERT", + "path": "112" + }, + "403": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "404": { + "op": "POP" + }, + "405": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1AC" + }, + "408": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1A2" + }, + "411": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "412": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "414": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1B4E" + }, + "417": { + "fn": "Receiver.tokensReceived", + "jump": "i", + "offset": [ + 1416, + 1603 + ], + "op": "JUMP", + "path": "112" + }, + "418": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "419": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "420": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "421": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "422": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "423": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "424": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "425": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "426": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "427": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMP", + "path": "112" + }, + "428": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "429": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "STOP", + "path": "112" + }, + "430": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPDEST", + "path": "101" + }, + "431": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "CALLVALUE", + "path": "101" + }, + "432": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "DUP1", + "path": "101" + }, + "433": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "ISZERO", + "path": "101" + }, + "434": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1B9" + }, + "437": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPI", + "path": "101" + }, + "438": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH0", + "path": "101" + }, + "439": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH0", + "path": "101" + }, + "440": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "REVERT", + "path": "101" + }, + "441": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPDEST", + "path": "101" + }, + "442": { + "op": "POP" + }, + "443": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1CD" + }, + "446": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1C8" + }, + "449": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "CALLDATASIZE", + "path": "101" + }, + "450": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "452": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1C10" + }, + "455": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "jump": "i", + "offset": [ + 2146, + 2369 + ], + "op": "JUMP", + "path": "101" + }, + "456": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPDEST", + "path": "101" + }, + "457": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH2", + "path": "101", + "value": "0x50A" + }, + "460": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "jump": "i", + "offset": [ + 2146, + 2369 + ], + "op": "JUMP", + "path": "101" + }, + "461": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPDEST", + "path": "101" + }, + "462": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH1", + "path": "101", + "value": "0x40" + }, + "464": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "MLOAD", + "path": "101" + }, + "465": { + "op": "SWAP1" + }, + "466": { + "op": "ISZERO" + }, + "467": { + "op": "ISZERO" + }, + "468": { + "op": "DUP2" + }, + "469": { + "op": "MSTORE" + }, + "470": { + "op": "PUSH1", + "value": "0x20" + }, + "472": { + "op": "ADD" + }, + "473": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPDEST", + "path": "101" + }, + "474": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "PUSH1", + "path": "101", + "value": "0x40" + }, + "476": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "MLOAD", + "path": "101" + }, + "477": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "DUP1", + "path": "101" + }, + "478": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "SWAP2", + "path": "101" + }, + "479": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "SUB", + "path": "101" + }, + "480": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "SWAP1", + "path": "101" + }, + "481": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "RETURN", + "path": "101" + }, + "482": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "483": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1F5" + }, + "486": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1F0" + }, + "489": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "CALLDATASIZE", + "path": "101" + }, + "490": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "492": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1C2B" + }, + "495": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "496": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "497": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x535" + }, + "500": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "501": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "502": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH1", + "path": "101", + "value": "0x40" + }, + "504": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "MLOAD", + "path": "101" + }, + "505": { + "op": "PUSH1", + "value": "0x1" + }, + "507": { + "op": "PUSH1", + "value": "0x1" + }, + "509": { + "op": "PUSH1", + "value": "0xA0" + }, + "511": { + "op": "SHL" + }, + "512": { + "op": "SUB" + }, + "513": { + "op": "SWAP1" + }, + "514": { + "op": "SWAP2" + }, + "515": { + "op": "AND" + }, + "516": { + "op": "DUP2" + }, + "517": { + "op": "MSTORE" + }, + "518": { + "op": "PUSH1", + "value": "0x20" + }, + "520": { + "op": "ADD" + }, + "521": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1D9" + }, + "524": { + "op": "JUMP" + }, + "525": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "526": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "CALLVALUE", + "path": "110" + }, + "527": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "DUP1", + "path": "110" + }, + "528": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "ISZERO", + "path": "110" + }, + "529": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x218" + }, + "532": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPI", + "path": "110" + }, + "533": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH0", + "path": "110" + }, + "534": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH0", + "path": "110" + }, + "535": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "REVERT", + "path": "110" + }, + "536": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "537": { + "op": "POP" + }, + "538": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x22C" + }, + "541": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x227" + }, + "544": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "CALLDATASIZE", + "path": "110" + }, + "545": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "547": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x1CBD" + }, + "550": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "551": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "552": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x54F" + }, + "555": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "556": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "557": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "559": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "MLOAD", + "path": "110" + }, + "560": { + "op": "PUSH1", + "value": "0x1" + }, + "562": { + "op": "PUSH1", + "value": "0x1" + }, + "564": { + "op": "PUSH1", + "value": "0xE0" + }, + "566": { + "op": "SHL" + }, + "567": { + "op": "SUB" + }, + "568": { + "op": "NOT" + }, + "569": { + "op": "SWAP1" + }, + "570": { + "op": "SWAP2" + }, + "571": { + "op": "AND" + }, + "572": { + "op": "DUP2" + }, + "573": { + "op": "MSTORE" + }, + "574": { + "op": "PUSH1", + "value": "0x20" + }, + "576": { + "op": "ADD" + }, + "577": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x1D9" + }, + "580": { + "op": "JUMP" + }, + "581": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "582": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "CALLVALUE", + "path": "111" + }, + "583": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "DUP1", + "path": "111" + }, + "584": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "ISZERO", + "path": "111" + }, + "585": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x250" + }, + "588": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPI", + "path": "111" + }, + "589": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH0", + "path": "111" + }, + "590": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH0", + "path": "111" + }, + "591": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "REVERT", + "path": "111" + }, + "592": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "593": { + "op": "POP" + }, + "594": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x22C" + }, + "597": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x25F" + }, + "600": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "601": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "603": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1DC7" + }, + "606": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "607": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "608": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x5A9" + }, + "611": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "612": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "613": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "CALLVALUE", + "path": "85" + }, + "614": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "DUP1", + "path": "85" + }, + "615": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "ISZERO", + "path": "85" + }, + "616": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x26F" + }, + "619": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPI", + "path": "85" + }, + "620": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH0", + "path": "85" + }, + "621": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH0", + "path": "85" + }, + "622": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "REVERT", + "path": "85" + }, + "623": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "624": { + "op": "POP" + }, + "625": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x283" + }, + "628": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x27E" + }, + "631": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "632": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "634": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1E0A" + }, + "637": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "638": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "639": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x6CE" + }, + "642": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "643": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "644": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "646": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "MLOAD", + "path": "85" + }, + "647": { + "op": "SWAP1" + }, + "648": { + "op": "DUP2" + }, + "649": { + "op": "MSTORE" + }, + "650": { + "op": "PUSH1", + "value": "0x20" + }, + "652": { + "op": "ADD" + }, + "653": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1D9" + }, + "656": { + "op": "JUMP" + }, + "657": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "658": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "CALLVALUE", + "path": "85" + }, + "659": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "DUP1", + "path": "85" + }, + "660": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "ISZERO", + "path": "85" + }, + "661": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x29C" + }, + "664": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPI", + "path": "85" + }, + "665": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH0", + "path": "85" + }, + "666": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH0", + "path": "85" + }, + "667": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "REVERT", + "path": "85" + }, + "668": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "669": { + "op": "POP" + }, + "670": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1AC" + }, + "673": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2AB" + }, + "676": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "677": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "679": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1E98" + }, + "682": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "683": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "684": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x700" + }, + "687": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "688": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "689": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1AC" + }, + "692": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x2BE" + }, + "695": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "CALLDATASIZE", + "path": "68" + }, + "696": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "698": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1ED6" + }, + "701": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "702": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "703": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x7F0" + }, + "706": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "707": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "708": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2D6" + }, + "711": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2D1" + }, + "714": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "715": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "717": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1F21" + }, + "720": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "721": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "722": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x80F" + }, + "725": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "726": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "727": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "729": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "MLOAD", + "path": "111" + }, + "730": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1D9" + }, + "733": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP2", + "path": "111" + }, + "734": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP1", + "path": "111" + }, + "735": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1FBA" + }, + "738": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "739": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "740": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "CALLVALUE", + "path": "113" + }, + "741": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "DUP1", + "path": "113" + }, + "742": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "ISZERO", + "path": "113" + }, + "743": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2EE" + }, + "746": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPI", + "path": "113" + }, + "747": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH0", + "path": "113" + }, + "748": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH0", + "path": "113" + }, + "749": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "REVERT", + "path": "113" + }, + "750": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "751": { + "op": "POP" + }, + "752": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x22C" + }, + "755": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2FD" + }, + "758": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "CALLDATASIZE", + "path": "113" + }, + "759": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH1", + "path": "113", + "value": "0x4" + }, + "761": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x1FCC" + }, + "764": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "765": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "766": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x83B" + }, + "769": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "770": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "771": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "CALLVALUE", + "path": "68" + }, + "772": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "DUP1", + "path": "68" + }, + "773": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "ISZERO", + "path": "68" + }, + "774": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x30D" + }, + "777": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPI", + "path": "68" + }, + "778": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH0", + "path": "68" + }, + "779": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH0", + "path": "68" + }, + "780": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "REVERT", + "path": "68" + }, + "781": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "782": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "POP", + "path": "68" + }, + "783": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x283" + }, + "786": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x860" + }, + "789": { + "fn": "UUPSUpgradeable.proxiableUUID", + "jump": "i", + "offset": [ + 3708, + 3842 + ], + "op": "JUMP", + "path": "68" + }, + "790": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "791": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "CALLVALUE", + "path": "110" + }, + "792": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "DUP1", + "path": "110" + }, + "793": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "ISZERO", + "path": "110" + }, + "794": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x321" + }, + "797": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPI", + "path": "110" + }, + "798": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH0", + "path": "110" + }, + "799": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH0", + "path": "110" + }, + "800": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "REVERT", + "path": "110" + }, + "801": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "802": { + "op": "POP" + }, + "803": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x1CD" + }, + "806": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x330" + }, + "809": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "CALLDATASIZE", + "path": "110" + }, + "810": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "812": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x201C" + }, + "815": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "816": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "817": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x87B" + }, + "820": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "821": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "JUMPDEST", + "path": "100" + }, + "822": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "CALLVALUE", + "path": "100" + }, + "823": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "DUP1", + "path": "100" + }, + "824": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "ISZERO", + "path": "100" + }, + "825": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "PUSH2", + "path": "100", + "value": "0x340" + }, + "828": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "JUMPI", + "path": "100" + }, + "829": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "PUSH0", + "path": "100" + }, + "830": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "PUSH0", + "path": "100" + }, + "831": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "REVERT", + "path": "100" + }, + "832": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "JUMPDEST", + "path": "100" + }, + "833": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "POP", + "path": "100" + }, + "834": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "PUSH2", + "path": "100", + "value": "0x1AC" + }, + "837": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "PUSH2", + "path": "100", + "value": "0x919" + }, + "840": { + "fn": "HyperAccountMinter.initialize", + "jump": "i", + "offset": [ + 292, + 424 + ], + "op": "JUMP", + "path": "100" + }, + "841": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "842": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "CALLVALUE", + "path": "75" + }, + "843": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "DUP1", + "path": "75" + }, + "844": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "ISZERO", + "path": "75" + }, + "845": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x354" + }, + "848": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPI", + "path": "75" + }, + "849": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH0", + "path": "75" + }, + "850": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH0", + "path": "75" + }, + "851": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "REVERT", + "path": "75" + }, + "852": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "853": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "POP", + "path": "75" + }, + "854": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x35D" + }, + "857": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0xA70" + }, + "860": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "861": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "862": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "864": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "MLOAD", + "path": "75" + }, + "865": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1D9" + }, + "868": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP8", + "path": "75" + }, + "869": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP7", + "path": "75" + }, + "870": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP6", + "path": "75" + }, + "871": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP5", + "path": "75" + }, + "872": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP4", + "path": "75" + }, + "873": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP3", + "path": "75" + }, + "874": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP2", + "path": "75" + }, + "875": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP1", + "path": "75" + }, + "876": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2037" + }, + "879": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "880": { + "offset": [ + 737, + 786 + ], + "op": "JUMPDEST", + "path": "109" + }, + "881": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "CALLVALUE", + "path": "109" + }, + "882": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "DUP1", + "path": "109" + }, + "883": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "ISZERO", + "path": "109" + }, + "884": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "PUSH2", + "path": "109", + "value": "0x37B" + }, + "887": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "JUMPI", + "path": "109" + }, + "888": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "PUSH0", + "path": "109" + }, + "889": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "PUSH0", + "path": "109" + }, + "890": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "REVERT", + "path": "109" + }, + "891": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "JUMPDEST", + "path": "109" + }, + "892": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "POP", + "path": "109" + }, + "893": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "PUSH2", + "path": "109", + "value": "0x283" + }, + "896": { + "offset": [ + 785, + 786 + ], + "op": "PUSH1", + "path": "109", + "value": "0x1" + }, + "898": { + "offset": [ + 737, + 786 + ], + "op": "DUP2", + "path": "109" + }, + "899": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "JUMP", + "path": "109" + }, + "900": { + "offset": [ + 679, + 731 + ], + "op": "JUMPDEST", + "path": "109" + }, + "901": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "CALLVALUE", + "path": "109" + }, + "902": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "DUP1", + "path": "109" + }, + "903": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "ISZERO", + "path": "109" + }, + "904": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "PUSH2", + "path": "109", + "value": "0x38F" + }, + "907": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "JUMPI", + "path": "109" + }, + "908": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "909": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "910": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "REVERT", + "path": "109" + }, + "911": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "JUMPDEST", + "path": "109" + }, + "912": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "POP", + "path": "109" + }, + "913": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "PUSH2", + "path": "109", + "value": "0x283" + }, + "916": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "917": { + "offset": [ + 679, + 731 + ], + "op": "DUP2", + "path": "109" + }, + "918": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "JUMP", + "path": "109" + }, + "919": { + "offset": [ + 1819, + 1877 + ], + "op": "JUMPDEST", + "path": "68" + }, + "920": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "CALLVALUE", + "path": "68" + }, + "921": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "922": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "ISZERO", + "path": "68" + }, + "923": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH2", + "path": "68", + "value": "0x3A2" + }, + "926": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "JUMPI", + "path": "68" + }, + "927": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH0", + "path": "68" + }, + "928": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH0", + "path": "68" + }, + "929": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "REVERT", + "path": "68" + }, + "930": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "JUMPDEST", + "path": "68" + }, + "931": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "POP", + "path": "68" + }, + "932": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH2", + "path": "68", + "value": "0x2D6" + }, + "935": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "937": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "MLOAD", + "path": "68" + }, + "938": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "939": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "941": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "ADD", + "path": "68" + }, + "942": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "944": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "945": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "946": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x5" + }, + "948": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "949": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "950": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x20" + }, + "952": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "ADD", + "path": "68" + }, + "953": { + "op": "PUSH5", + "value": "0x352E302E3" + }, + "959": { + "op": "PUSH1", + "value": "0xDC" + }, + "961": { + "op": "SHL" + }, + "962": { + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "963": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "964": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "POP", + "path": "68" + }, + "965": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "966": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "JUMP", + "path": "68" + }, + "967": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPDEST", + "path": "109" + }, + "968": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "CALLVALUE", + "path": "109" + }, + "969": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "DUP1", + "path": "109" + }, + "970": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "ISZERO", + "path": "109" + }, + "971": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH2", + "path": "109", + "value": "0x3D2" + }, + "974": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPI", + "path": "109" + }, + "975": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH0", + "path": "109" + }, + "976": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH0", + "path": "109" + }, + "977": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "REVERT", + "path": "109" + }, + "978": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPDEST", + "path": "109" + }, + "979": { + "op": "POP" + }, + "980": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "1001": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH2", + "path": "109", + "value": "0x1F5" + }, + "1004": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMP", + "path": "109" + }, + "1005": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1006": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "CALLVALUE", + "path": "101" + }, + "1007": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "DUP1", + "path": "101" + }, + "1008": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "ISZERO", + "path": "101" + }, + "1009": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH2", + "path": "101", + "value": "0x3F8" + }, + "1012": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPI", + "path": "101" + }, + "1013": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH0", + "path": "101" + }, + "1014": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH0", + "path": "101" + }, + "1015": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "REVERT", + "path": "101" + }, + "1016": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1017": { + "op": "POP" + }, + "1018": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2124, + 2133 + ], + "op": "PUSH32", + "path": "101", + "statement": 0, + "value": "0x0" + }, + "1051": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1F5" + }, + "1054": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMP", + "path": "101" + }, + "1055": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1056": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "CALLVALUE", + "path": "85" + }, + "1057": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "DUP1", + "path": "85" + }, + "1058": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "ISZERO", + "path": "85" + }, + "1059": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x42A" + }, + "1062": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPI", + "path": "85" + }, + "1063": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH0", + "path": "85" + }, + "1064": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH0", + "path": "85" + }, + "1065": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "REVERT", + "path": "85" + }, + "1066": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1067": { + "op": "POP" + }, + "1068": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1AC" + }, + "1071": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x439" + }, + "1074": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "1075": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "1077": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x20CD" + }, + "1080": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1383, + 1638 + ], + "op": "JUMP", + "path": "85" + }, + "1081": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1082": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0xB19" + }, + "1085": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1383, + 1638 + ], + "op": "JUMP", + "path": "85" + }, + "1086": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1087": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "CALLVALUE", + "path": "112" + }, + "1088": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "DUP1", + "path": "112" + }, + "1089": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "ISZERO", + "path": "112" + }, + "1090": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x449" + }, + "1093": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPI", + "path": "112" + }, + "1094": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH0", + "path": "112" + }, + "1095": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH0", + "path": "112" + }, + "1096": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "REVERT", + "path": "112" + }, + "1097": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1098": { + "op": "POP" + }, + "1099": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x22C" + }, + "1102": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x458" + }, + "1105": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "1106": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "1108": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x2124" + }, + "1111": { + "fn": "Receiver.onERC1155BatchReceived", + "jump": "i", + "offset": [ + 931, + 1189 + ], + "op": "JUMP", + "path": "112" + }, + "1112": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1113": { + "op": "PUSH4", + "value": "0xBC197C81" + }, + "1118": { + "op": "PUSH1", + "value": "0xE0" + }, + "1120": { + "op": "SHL" + }, + "1121": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "SWAP9", + "path": "112" + }, + "1122": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "SWAP8", + "path": "112" + }, + "1123": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1124": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1125": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1126": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1127": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1128": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1129": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1130": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1131": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMP", + "path": "112" + }, + "1132": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1133": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "CALLVALUE", + "path": "113" + }, + "1134": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "DUP1", + "path": "113" + }, + "1135": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "ISZERO", + "path": "113" + }, + "1136": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0x477" + }, + "1139": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPI", + "path": "113" + }, + "1140": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH0", + "path": "113" + }, + "1141": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH0", + "path": "113" + }, + "1142": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "REVERT", + "path": "113" + }, + "1143": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1144": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "POP", + "path": "113" + }, + "1145": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0x283" + }, + "1148": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0xB71" + }, + "1151": { + "fn": "TokenBoundMech.state", + "jump": "i", + "offset": [ + 2128, + 2485 + ], + "op": "JUMP", + "path": "113" + }, + "1152": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1153": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2D6" + }, + "1156": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x48E" + }, + "1159": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "1160": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "1162": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x21C4" + }, + "1165": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "1166": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1167": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0xC58" + }, + "1170": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "1171": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1172": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "CALLVALUE", + "path": "85" + }, + "1173": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "DUP1", + "path": "85" + }, + "1174": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "ISZERO", + "path": "85" + }, + "1175": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0x49E" + }, + "1178": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPI", + "path": "85" + }, + "1179": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH0", + "path": "85" + }, + "1180": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH0", + "path": "85" + }, + "1181": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "REVERT", + "path": "85" + }, + "1182": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1183": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "POP", + "path": "85" + }, + "1184": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0x283" + }, + "1187": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0xC91" + }, + "1190": { + "fn": "BaseAccount.getNonce", + "jump": "i", + "offset": [ + 981, + 1102 + ], + "op": "JUMP", + "path": "85" + }, + "1191": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1192": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "CALLVALUE", + "path": "112" + }, + "1193": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "DUP1", + "path": "112" + }, + "1194": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "ISZERO", + "path": "112" + }, + "1195": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x4B2" + }, + "1198": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPI", + "path": "112" + }, + "1199": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH0", + "path": "112" + }, + "1200": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH0", + "path": "112" + }, + "1201": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "REVERT", + "path": "112" + }, + "1202": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1203": { + "op": "POP" + }, + "1204": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x22C" + }, + "1207": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x4C1" + }, + "1210": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "1211": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "1213": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x2239" + }, + "1216": { + "fn": "Receiver.onERC1155Received", + "jump": "i", + "offset": [ + 699, + 925 + ], + "op": "JUMP", + "path": "112" + }, + "1217": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1218": { + "op": "PUSH4", + "value": "0xF23A6E61" + }, + "1223": { + "op": "PUSH1", + "value": "0xE0" + }, + "1225": { + "op": "SHL" + }, + "1226": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "SWAP7", + "path": "112" + }, + "1227": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "SWAP6", + "path": "112" + }, + "1228": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1229": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1230": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1231": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1232": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1233": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1234": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMP", + "path": "112" + }, + "1235": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1236": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "CALLVALUE", + "path": "113" + }, + "1237": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "DUP1", + "path": "113" + }, + "1238": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "ISZERO", + "path": "113" + }, + "1239": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x4DE" + }, + "1242": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPI", + "path": "113" + }, + "1243": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH0", + "path": "113" + }, + "1244": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH0", + "path": "113" + }, + "1245": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "REVERT", + "path": "113" + }, + "1246": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1247": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "POP", + "path": "113" + }, + "1248": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x4E7" + }, + "1251": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0xD1A" + }, + "1254": { + "fn": "TokenBoundMech.token", + "jump": "i", + "offset": [ + 2491, + 2635 + ], + "op": "JUMP", + "path": "113" + }, + "1255": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1256": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "1258": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "DUP1", + "path": "113" + }, + "1259": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "MLOAD", + "path": "113" + }, + "1260": { + "op": "SWAP4" + }, + "1261": { + "op": "DUP5" + }, + "1262": { + "op": "MSTORE" + }, + "1263": { + "op": "PUSH1", + "value": "0x1" + }, + "1265": { + "op": "PUSH1", + "value": "0x1" + }, + "1267": { + "op": "PUSH1", + "value": "0xA0" + }, + "1269": { + "op": "SHL" + }, + "1270": { + "op": "SUB" + }, + "1271": { + "op": "SWAP1" + }, + "1272": { + "op": "SWAP3" + }, + "1273": { + "op": "AND" + }, + "1274": { + "op": "PUSH1", + "value": "0x20" + }, + "1276": { + "op": "DUP5" + }, + "1277": { + "op": "ADD" + }, + "1278": { + "op": "MSTORE" + }, + "1279": { + "op": "SWAP1" + }, + "1280": { + "op": "DUP3" + }, + "1281": { + "op": "ADD" + }, + "1282": { + "op": "MSTORE" + }, + "1283": { + "op": "PUSH1", + "value": "0x60" + }, + "1285": { + "op": "ADD" + }, + "1286": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x1D9" + }, + "1289": { + "op": "JUMP" + }, + "1290": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1291": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2247, + 2251 + ], + "op": "PUSH0", + "path": "101" + }, + "1292": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2306 + ], + "op": "PUSH2", + "path": "101", + "statement": 1, + "value": "0x514" + }, + "1295": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2294, + 2305 + ], + "op": "DUP3", + "path": "101" + }, + "1296": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2293 + ], + "op": "PUSH2", + "path": "101", + "value": "0xD30" + }, + "1299": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "jump": "i", + "offset": [ + 2270, + 2306 + ], + "op": "JUMP", + "path": "101" + }, + "1300": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2306 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1301": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "DUP1", + "path": "101" + }, + "1302": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "PUSH2", + "path": "101", + "value": "0x52F" + }, + "1305": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "JUMPI", + "path": "101" + }, + "1306": { + "op": "POP" + }, + "1307": { + "op": "PUSH1", + "value": "0x1" + }, + "1309": { + "op": "PUSH1", + "value": "0x1" + }, + "1311": { + "op": "PUSH1", + "value": "0xE0" + }, + "1313": { + "op": "SHL" + }, + "1314": { + "op": "SUB" + }, + "1315": { + "op": "NOT" + }, + "1316": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "DUP3", + "path": "101" + }, + "1317": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "AND", + "path": "101" + }, + "1318": { + "op": "PUSH4", + "value": "0x3C1CC5F1" + }, + "1323": { + "op": "PUSH1", + "value": "0xE0" + }, + "1325": { + "op": "SHL" + }, + "1326": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "EQ", + "path": "101" + }, + "1327": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1328": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2263, + 2362 + ], + "op": "SWAP3", + "path": "101" + }, + "1329": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "SWAP2", + "path": "101" + }, + "1330": { + "op": "POP" + }, + "1331": { + "op": "POP" + }, + "1332": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "jump": "o", + "offset": [ + 2146, + 2369 + ], + "op": "JUMP", + "path": "101" + }, + "1333": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1334": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2527, + 2538 + ], + "op": "PUSH0", + "path": "101" + }, + "1335": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2608 + ], + "op": "PUSH2", + "path": "101", + "statement": 2, + "value": "0x544" + }, + "1338": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2567, + 2569 + ], + "op": "DUP8", + "path": "101" + }, + "1339": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2571, + 2575 + ], + "op": "DUP8", + "path": "101" + }, + "1340": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2571, + 2575 + ], + "op": "DUP8", + "path": "101" + }, + "1341": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2577, + 2591 + ], + "op": "DUP8", + "path": "101" + }, + "1342": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2577, + 2591 + ], + "op": "DUP8", + "path": "101" + }, + "1343": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2593, + 2607 + ], + "op": "DUP8", + "path": "101" + }, + "1344": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2566 + ], + "op": "PUSH2", + "path": "101", + "value": "0xD5A" + }, + "1347": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2561, + 2608 + ], + "op": "JUMP", + "path": "101" + }, + "1348": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2608 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1349": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2554, + 2608 + ], + "op": "SWAP8", + "path": "101" + }, + "1350": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "SWAP7", + "path": "101" + }, + "1351": { + "op": "POP" + }, + "1352": { + "op": "POP" + }, + "1353": { + "op": "POP" + }, + "1354": { + "op": "POP" + }, + "1355": { + "op": "POP" + }, + "1356": { + "op": "POP" + }, + "1357": { + "op": "POP" + }, + "1358": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "o", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "1359": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1360": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 740, + 746 + ], + "op": "PUSH0", + "path": "110" + }, + "1361": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 765, + 791 + ], + "op": "PUSH0", + "path": "110" + }, + "1362": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 793, + 813 + ], + "op": "PUSH0", + "path": "110" + }, + "1363": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 824 + ], + "op": "PUSH2", + "path": "110", + "value": "0x55A" + }, + "1366": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 822 + ], + "op": "PUSH2", + "path": "110", + "value": "0xD1A" + }, + "1369": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 817, + 824 + ], + "op": "JUMP", + "path": "110" + }, + "1370": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 824 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1371": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP1", + "path": "110" + }, + "1372": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP4", + "path": "110" + }, + "1373": { + "op": "POP" + }, + "1374": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP2", + "path": "110" + }, + "1375": { + "op": "POP" + }, + "1376": { + "op": "POP" + }, + "1377": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 849 + ], + "op": "CALLER", + "path": "110", + "statement": 3 + }, + "1378": { + "op": "PUSH1", + "value": "0x1" + }, + "1380": { + "op": "PUSH1", + "value": "0x1" + }, + "1382": { + "op": "PUSH1", + "value": "0xA0" + }, + "1384": { + "op": "SHL" + }, + "1385": { + "op": "SUB" + }, + "1386": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "DUP4", + "path": "110" + }, + "1387": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "AND", + "path": "110" + }, + "1388": { + "branch": 72, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "EQ", + "path": "110" + }, + "1389": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "DUP1", + "path": "110" + }, + "1390": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "ISZERO", + "path": "110" + }, + "1391": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "PUSH2", + "path": "110", + "value": "0x577" + }, + "1394": { + "branch": 72, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "JUMPI", + "path": "110" + }, + "1395": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "POP", + "path": "110" + }, + "1396": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 894, + 906 + ], + "op": "DUP1", + "path": "110" + }, + "1397": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 875, + 890 + ], + "op": "DUP7", + "path": "110" + }, + "1398": { + "branch": 73, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 875, + 906 + ], + "op": "EQ", + "path": "110" + }, + "1399": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1400": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "ISZERO", + "path": "110" + }, + "1401": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "PUSH2", + "path": "110", + "value": "0x595" + }, + "1404": { + "branch": 73, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "JUMPI", + "path": "110" + }, + "1405": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "1407": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MLOAD", + "path": "110" + }, + "1408": { + "op": "PUSH4", + "value": "0xB79E3F3F" + }, + "1413": { + "op": "PUSH1", + "value": "0xE0" + }, + "1415": { + "op": "SHL" + }, + "1416": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "DUP2", + "path": "110" + }, + "1417": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MSTORE", + "path": "110" + }, + "1418": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "1420": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "ADD", + "path": "110" + }, + "1421": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "1423": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MLOAD", + "path": "110" + }, + "1424": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "DUP1", + "path": "110" + }, + "1425": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SWAP2", + "path": "110" + }, + "1426": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SUB", + "path": "110" + }, + "1427": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SWAP1", + "path": "110" + }, + "1428": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "REVERT", + "path": "110" + }, + "1429": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1430": { + "op": "POP" + }, + "1431": { + "op": "PUSH4", + "value": "0xA85BD01" + }, + "1436": { + "op": "PUSH1", + "value": "0xE1" + }, + "1438": { + "op": "SHL" + }, + "1439": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 973, + 1003 + ], + "op": "SWAP8", + "path": "110", + "statement": 4 + }, + "1440": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "SWAP7", + "path": "110" + }, + "1441": { + "op": "POP" + }, + "1442": { + "op": "POP" + }, + "1443": { + "op": "POP" + }, + "1444": { + "op": "POP" + }, + "1445": { + "op": "POP" + }, + "1446": { + "op": "POP" + }, + "1447": { + "op": "POP" + }, + "1448": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "o", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "1449": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1450": { + "fn": "Mech.isValidSignature", + "offset": [ + 2360, + 2377 + ], + "op": "PUSH0", + "path": "111" + }, + "1451": { + "fn": "Mech.isValidSignature", + "offset": [ + 2393, + 2402 + ], + "op": "PUSH0", + "path": "111" + }, + "1452": { + "fn": "Mech.isValidSignature", + "offset": [ + 2412, + 2421 + ], + "op": "PUSH0", + "path": "111" + }, + "1453": { + "fn": "Mech.isValidSignature", + "offset": [ + 2431, + 2438 + ], + "op": "PUSH0", + "path": "111" + }, + "1454": { + "fn": "Mech.isValidSignature", + "offset": [ + 2460, + 2486 + ], + "op": "PUSH2", + "path": "111", + "statement": 5, + "value": "0x5C9" + }, + "1457": { + "fn": "Mech.isValidSignature", + "offset": [ + 2476, + 2485 + ], + "op": "DUP6", + "path": "111" + }, + "1458": { + "fn": "Mech._splitSignature", + "offset": [ + 6792, + 6796 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1460": { + "fn": "Mech._splitSignature", + "offset": [ + 6777, + 6797 + ], + "op": "DUP2", + "path": "111" + }, + "1461": { + "fn": "Mech._splitSignature", + "offset": [ + 6777, + 6797 + ], + "op": "ADD", + "path": "111" + }, + "1462": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "MLOAD", + "path": "111" + }, + "1463": { + "fn": "Mech._splitSignature", + "offset": [ + 6837, + 6841 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1465": { + "fn": "Mech._splitSignature", + "offset": [ + 6822, + 6842 + ], + "op": "DUP3", + "path": "111" + }, + "1466": { + "fn": "Mech._splitSignature", + "offset": [ + 6822, + 6842 + ], + "op": "ADD", + "path": "111" + }, + "1467": { + "fn": "Mech._splitSignature", + "offset": [ + 6816, + 6843 + ], + "op": "MLOAD", + "path": "111" + }, + "1468": { + "fn": "Mech._splitSignature", + "offset": [ + 6890, + 6894 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "1470": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "SWAP1", + "path": "111" + }, + "1471": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "SWAP3", + "path": "111" + }, + "1472": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "ADD", + "path": "111" + }, + "1473": { + "fn": "Mech._splitSignature", + "offset": [ + 6869, + 6896 + ], + "op": "MLOAD", + "path": "111" + }, + "1474": { + "fn": "Mech._splitSignature", + "offset": [ + 6472, + 6479 + ], + "op": "PUSH0", + "path": "111" + }, + "1475": { + "fn": "Mech._splitSignature", + "offset": [ + 6861, + 6897 + ], + "op": "BYTE", + "path": "111" + }, + "1476": { + "fn": "Mech._splitSignature", + "offset": [ + 6861, + 6897 + ], + "op": "SWAP3", + "path": "111" + }, + "1477": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "SWAP1", + "path": "111" + }, + "1478": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "SWAP2", + "path": "111" + }, + "1479": { + "fn": "Mech._splitSignature", + "offset": [ + 6816, + 6843 + ], + "op": "SWAP1", + "path": "111" + }, + "1480": { + "fn": "Mech._splitSignature", + "offset": [ + 6400, + 6913 + ], + "op": "JUMP", + "path": "111" + }, + "1481": { + "fn": "Mech.isValidSignature", + "offset": [ + 2460, + 2486 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1482": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP1", + "path": "111" + }, + "1483": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP5", + "path": "111" + }, + "1484": { + "op": "POP" + }, + "1485": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP3", + "path": "111" + }, + "1486": { + "op": "POP" + }, + "1487": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP1", + "path": "111" + }, + "1488": { + "op": "POP" + }, + "1489": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "1491": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "DUP2", + "path": "111" + }, + "1492": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "AND", + "path": "111" + }, + "1493": { + "fn": "Mech.isValidSignature", + "offset": [ + 2506, + 2507 + ], + "op": "PUSH0", + "path": "111" + }, + "1494": { + "branch": 81, + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "SUB", + "path": "111" + }, + "1495": { + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "PUSH2", + "path": "111", + "value": "0x694" + }, + "1498": { + "branch": 81, + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "JUMPI", + "path": "111" + }, + "1499": { + "fn": "Mech.isValidSignature", + "offset": [ + 2688, + 2689 + ], + "op": "DUP3", + "path": "111" + }, + "1500": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "DUP6", + "path": "111" + }, + "1501": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "DUP4", + "path": "111" + }, + "1502": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "ADD", + "path": "111" + }, + "1503": { + "fn": "Mech.isValidSignature", + "offset": [ + 3030, + 3034 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1505": { + "fn": "Mech.isValidSignature", + "offset": [ + 3007, + 3035 + ], + "op": "ADD", + "path": "111" + }, + "1506": { + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3227 + ], + "op": "PUSH2", + "path": "111", + "value": "0x5EA" + }, + "1509": { + "fn": "Mech.isValidSignature", + "offset": [ + 2688, + 2689 + ], + "op": "DUP3", + "path": "111" + }, + "1510": { + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3210 + ], + "op": "PUSH2", + "path": "111", + "value": "0x87B" + }, + "1513": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3200, + 3227 + ], + "op": "JUMP", + "path": "111" + }, + "1514": { + "branch": 82, + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3227 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1515": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3227 + ], + "op": "ISZERO", + "path": "111" + }, + "1516": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "DUP1", + "path": "111" + }, + "1517": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "ISZERO", + "path": "111" + }, + "1518": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "PUSH2", + "path": "111", + "value": "0x600" + }, + "1521": { + "branch": 82, + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "JUMPI", + "path": "111" + }, + "1522": { + "op": "POP" + }, + "1523": { + "op": "PUSH1", + "value": "0x1" + }, + "1525": { + "op": "PUSH1", + "value": "0x1" + }, + "1527": { + "op": "PUSH1", + "value": "0xA0" + }, + "1529": { + "op": "SHL" + }, + "1530": { + "op": "SUB" + }, + "1531": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "DUP3", + "path": "111" + }, + "1532": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "AND", + "path": "111" + }, + "1533": { + "fn": "Mech.isValidSignature", + "offset": [ + 3258, + 3262 + ], + "op": "ADDRESS", + "path": "111" + }, + "1534": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "EQ", + "path": "111" + }, + "1535": { + "branch": 83, + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "ISZERO", + "path": "111" + }, + "1536": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1537": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "ISZERO", + "path": "111" + }, + "1538": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "PUSH2", + "path": "111", + "value": "0x61B" + }, + "1541": { + "branch": 83, + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "JUMPI", + "path": "111" + }, + "1542": { + "op": "POP" + }, + "1543": { + "op": "PUSH1", + "value": "0x1" + }, + "1545": { + "op": "PUSH1", + "value": "0x1" + }, + "1547": { + "op": "PUSH1", + "value": "0xE0" + }, + "1549": { + "op": "SHL" + }, + "1550": { + "op": "SUB" + }, + "1551": { + "op": "NOT" + }, + "1552": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "SWAP5", + "path": "111", + "statement": 6 + }, + "1553": { + "op": "POP" + }, + "1554": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "PUSH2", + "path": "111", + "value": "0x52F" + }, + "1557": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "SWAP4", + "path": "111" + }, + "1558": { + "op": "POP" + }, + "1559": { + "op": "POP" + }, + "1560": { + "op": "POP" + }, + "1561": { + "op": "POP" + }, + "1562": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "JUMP", + "path": "111" + }, + "1563": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1564": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "statement": 7, + "value": "0x40" + }, + "1566": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1567": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "1572": { + "op": "PUSH1", + "value": "0xE1" + }, + "1574": { + "op": "SHL" + }, + "1575": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1576": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MSTORE", + "path": "111" + }, + "1577": { + "op": "PUSH1", + "value": "0x1" + }, + "1579": { + "op": "PUSH1", + "value": "0x1" + }, + "1581": { + "op": "PUSH1", + "value": "0xA0" + }, + "1583": { + "op": "SHL" + }, + "1584": { + "op": "SUB" + }, + "1585": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "DUP4", + "path": "111" + }, + "1586": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "AND", + "path": "111" + }, + "1587": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "SWAP1", + "path": "111" + }, + "1588": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "PUSH4", + "path": "111", + "value": "0x1626BA7E" + }, + "1593": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "SWAP1", + "path": "111" + }, + "1594": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x649" + }, + "1597": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1598": { + "fn": "Mech.isValidSignature", + "offset": [ + 3379, + 3383 + ], + "op": "DUP12", + "path": "111" + }, + "1599": { + "fn": "Mech.isValidSignature", + "offset": [ + 3379, + 3383 + ], + "op": "SWAP1", + "path": "111" + }, + "1600": { + "fn": "Mech.isValidSignature", + "offset": [ + 3385, + 3402 + ], + "op": "DUP6", + "path": "111" + }, + "1601": { + "fn": "Mech.isValidSignature", + "offset": [ + 3385, + 3402 + ], + "op": "SWAP1", + "path": "111" + }, + "1602": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "1604": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1605": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x22AF" + }, + "1608": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3336, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "1609": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1610": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1612": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1614": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1615": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1616": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP4", + "path": "111" + }, + "1617": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SUB", + "path": "111" + }, + "1618": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1619": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP7", + "path": "111" + }, + "1620": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "GAS", + "path": "111" + }, + "1621": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "STATICCALL", + "path": "111" + }, + "1622": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ISZERO", + "path": "111" + }, + "1623": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1624": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ISZERO", + "path": "111" + }, + "1625": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x664" + }, + "1628": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPI", + "path": "111" + }, + "1629": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1630": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1631": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1632": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "1633": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1634": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1635": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "REVERT", + "path": "111" + }, + "1636": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1637": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1638": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1639": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1640": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1641": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1643": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1644": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1645": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "1647": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "NOT", + "path": "111" + }, + "1648": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "1650": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP3", + "path": "111" + }, + "1651": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1652": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "AND", + "path": "111" + }, + "1653": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP3", + "path": "111" + }, + "1654": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1655": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1656": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1658": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MSTORE", + "path": "111" + }, + "1659": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1660": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1661": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1662": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1663": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x688" + }, + "1666": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP2", + "path": "111" + }, + "1667": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1668": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x22C7" + }, + "1671": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3336, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "1672": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1673": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "SWAP6", + "path": "111" + }, + "1674": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1675": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1676": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1677": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1678": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1679": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1680": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x52F" + }, + "1683": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "1684": { + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1685": { + "fn": "Mech.isValidSignature", + "offset": [ + 3480, + 3520 + ], + "op": "PUSH2", + "path": "111", + "value": "0x6A3" + }, + "1688": { + "fn": "Mech.isValidSignature", + "offset": [ + 3491, + 3519 + ], + "op": "PUSH2", + "path": "111", + "value": "0x330" + }, + "1691": { + "fn": "Mech.isValidSignature", + "offset": [ + 3505, + 3509 + ], + "op": "DUP8", + "path": "111" + }, + "1692": { + "fn": "Mech.isValidSignature", + "offset": [ + 3511, + 3512 + ], + "op": "DUP4", + "path": "111" + }, + "1693": { + "fn": "Mech.isValidSignature", + "offset": [ + 3514, + 3515 + ], + "op": "DUP7", + "path": "111" + }, + "1694": { + "fn": "Mech.isValidSignature", + "offset": [ + 3517, + 3518 + ], + "op": "DUP7", + "path": "111" + }, + "1695": { + "fn": "Mech.isValidSignature", + "offset": [ + 3491, + 3504 + ], + "op": "PUSH2", + "path": "111", + "value": "0xDF2" + }, + "1698": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3491, + 3519 + ], + "op": "JUMP", + "path": "111" + }, + "1699": { + "branch": 84, + "fn": "Mech.isValidSignature", + "offset": [ + 3480, + 3520 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1700": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "ISZERO", + "path": "111" + }, + "1701": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "PUSH2", + "path": "111", + "value": "0x6BB" + }, + "1704": { + "branch": 84, + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "JUMPI", + "path": "111" + }, + "1705": { + "op": "POP" + }, + "1706": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "1711": { + "op": "PUSH1", + "value": "0xE1" + }, + "1713": { + "op": "SHL" + }, + "1714": { + "fn": "Mech.isValidSignature", + "offset": [ + 3547, + 3565 + ], + "op": "SWAP3", + "path": "111", + "statement": 8 + }, + "1715": { + "op": "POP" + }, + "1716": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "PUSH2", + "path": "111", + "value": "0x52F" + }, + "1719": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "SWAP2", + "path": "111" + }, + "1720": { + "op": "POP" + }, + "1721": { + "op": "POP" + }, + "1722": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "JUMP", + "path": "111" + }, + "1723": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1724": { + "op": "POP" + }, + "1725": { + "op": "PUSH1", + "value": "0x1" + }, + "1727": { + "op": "PUSH1", + "value": "0x1" + }, + "1729": { + "op": "PUSH1", + "value": "0xE0" + }, + "1731": { + "op": "SHL" + }, + "1732": { + "op": "SUB" + }, + "1733": { + "op": "NOT" + }, + "1734": { + "fn": "Mech.isValidSignature", + "offset": [ + 3600, + 3617 + ], + "op": "SWAP6", + "path": "111", + "statement": 9 + }, + "1735": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "SWAP5", + "path": "111" + }, + "1736": { + "op": "POP" + }, + "1737": { + "op": "POP" + }, + "1738": { + "op": "POP" + }, + "1739": { + "op": "POP" + }, + "1740": { + "op": "POP" + }, + "1741": { + "fn": "Mech.isValidSignature", + "jump": "o", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "1742": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1743": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2662, + 2684 + ], + "op": "PUSH0", + "path": "85" + }, + "1744": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2720 + ], + "op": "PUSH2", + "path": "85", + "statement": 10, + "value": "0x6D7" + }, + "1747": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2718 + ], + "op": "PUSH2", + "path": "85", + "value": "0xE1E" + }, + "1750": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2696, + 2720 + ], + "op": "JUMP", + "path": "85" + }, + "1751": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2720 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1752": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2785 + ], + "op": "PUSH2", + "path": "85", + "statement": 11, + "value": "0x6E1" + }, + "1755": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2766, + 2772 + ], + "op": "DUP5", + "path": "85" + }, + "1756": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2774, + 2784 + ], + "op": "DUP5", + "path": "85" + }, + "1757": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2765 + ], + "op": "PUSH2", + "path": "85", + "value": "0xE83" + }, + "1760": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2747, + 2785 + ], + "op": "JUMP", + "path": "85" + }, + "1761": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2785 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1762": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2730, + 2785 + ], + "op": "SWAP1", + "path": "85" + }, + "1763": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2730, + 2785 + ], + "op": "POP", + "path": "85" + }, + "1764": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2823 + ], + "op": "PUSH2", + "path": "85", + "statement": 12, + "value": "0x6F0" + }, + "1767": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2816 + ], + "op": "DUP5", + "path": "85" + }, + "1768": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "1770": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "ADD", + "path": "85" + }, + "1771": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "CALLDATALOAD", + "path": "85" + }, + "1772": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2809 + ], + "op": "PUSH2", + "path": "85", + "value": "0xEE0" + }, + "1775": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2795, + 2823 + ], + "op": "JUMP", + "path": "85" + }, + "1776": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2823 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1777": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2865 + ], + "op": "PUSH2", + "path": "85", + "statement": 13, + "value": "0x6F9" + }, + "1780": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2845, + 2864 + ], + "op": "DUP3", + "path": "85" + }, + "1781": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2844 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF29" + }, + "1784": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2833, + 2865 + ], + "op": "JUMP", + "path": "85" + }, + "1785": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2865 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1786": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "SWAP4", + "path": "85" + }, + "1787": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "SWAP3", + "path": "85" + }, + "1788": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "1789": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "1790": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "1791": { + "fn": "BaseAccount.validateUserOp", + "jump": "o", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "1792": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1793": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1979 + ], + "op": "PUSH2", + "path": "85", + "statement": 14, + "value": "0x708" + }, + "1796": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1977 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF6E" + }, + "1799": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1959, + 1979 + ], + "op": "JUMP", + "path": "85" + }, + "1800": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1979 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1801": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2012, + 2017 + ], + "op": "DUP1", + "path": "85" + }, + "1802": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1990, + 2009 + ], + "op": "PUSH0", + "path": "85" + }, + "1803": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1804": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2058, + 2069 + ], + "op": "DUP2", + "path": "85" + }, + "1805": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2054, + 2055 + ], + "op": "DUP2", + "path": "85" + }, + "1806": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2054, + 2069 + ], + "op": "LT", + "path": "85" + }, + "1807": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "ISZERO", + "path": "85" + }, + "1808": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "PUSH2", + "path": "85", + "value": "0x7EA" + }, + "1811": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPI", + "path": "85" + }, + "1812": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2108 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "1813": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2116 + ], + "op": "DUP5", + "path": "85" + }, + "1814": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2116 + ], + "op": "DUP5", + "path": "85" + }, + "1815": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2117, + 2118 + ], + "op": "DUP4", + "path": "85" + }, + "1816": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "1817": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "1818": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "LT", + "path": "85" + }, + "1819": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x726" + }, + "1822": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPI", + "path": "85" + }, + "1823": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x726" + }, + "1826": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x22E2" + }, + "1829": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2111, + 2119 + ], + "op": "JUMP", + "path": "85" + }, + "1830": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1831": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "1832": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "POP", + "path": "85" + }, + "1833": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "1835": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "MUL", + "path": "85" + }, + "1836": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "1837": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "ADD", + "path": "85" + }, + "1838": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "1839": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x738" + }, + "1842": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP2", + "path": "85" + }, + "1843": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "1844": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x22F6" + }, + "1847": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2111, + 2119 + ], + "op": "JUMP", + "path": "85" + }, + "1848": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1849": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "1850": { + "op": "POP" + }, + "1851": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2140 + ], + "op": "PUSH0", + "path": "85" + }, + "1852": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH2", + "path": "85", + "value": "0x796" + }, + "1855": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH2", + "path": "85", + "value": "0x74B" + }, + "1858": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "1860": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "DUP5", + "path": "85" + }, + "1861": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "ADD", + "path": "85" + }, + "1862": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2119 + ], + "op": "DUP5", + "path": "85" + }, + "1863": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH2", + "path": "85", + "value": "0x201C" + }, + "1866": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2153, + 2164 + ], + "op": "JUMP", + "path": "85" + }, + "1867": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1868": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "1870": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "DUP5", + "path": "85" + }, + "1871": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "ADD", + "path": "85" + }, + "1872": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "CALLDATALOAD", + "path": "85" + }, + "1873": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH2", + "path": "85", + "value": "0x75D" + }, + "1876": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "1878": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "DUP7", + "path": "85" + }, + "1879": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "ADD", + "path": "85" + }, + "1880": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2170 + ], + "op": "DUP7", + "path": "85" + }, + "1881": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2314" + }, + "1884": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2178, + 2187 + ], + "op": "JUMP", + "path": "85" + }, + "1885": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1886": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "1887": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "1888": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "1890": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "1891": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "1893": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "1894": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "1895": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DIV", + "path": "85" + }, + "1896": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MUL", + "path": "85" + }, + "1897": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "1899": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "1900": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "1902": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MLOAD", + "path": "85" + }, + "1903": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "1904": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "1905": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "1906": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "1908": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "1909": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "1910": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP4", + "path": "85" + }, + "1911": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP3", + "path": "85" + }, + "1912": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "1913": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "1914": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "1915": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "1916": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "1917": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "1919": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "1920": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP4", + "path": "85" + }, + "1921": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP4", + "path": "85" + }, + "1922": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "1923": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP3", + "path": "85" + }, + "1924": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP5", + "path": "85" + }, + "1925": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "CALLDATACOPY", + "path": "85" + }, + "1926": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH0", + "path": "85" + }, + "1927": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP3", + "path": "85" + }, + "1928": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "1929": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "1930": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "1931": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "1932": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "1933": { + "op": "POP" + }, + "1934": { + "op": "POP" + }, + "1935": { + "op": "POP" + }, + "1936": { + "op": "POP" + }, + "1937": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2189, + 2198 + ], + "op": "GAS", + "path": "85" + }, + "1938": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2152 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF76" + }, + "1941": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2143, + 2199 + ], + "op": "JUMP", + "path": "85" + }, + "1942": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1943": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "1944": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2199 + ], + "op": "POP", + "path": "85" + }, + "1945": { + "branch": 65, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2218, + 2220 + ], + "op": "DUP1", + "path": "85" + }, + "1946": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2213, + 2436 + ], + "op": "PUSH2", + "path": "85", + "value": "0x7E0" + }, + "1949": { + "branch": 65, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2213, + 2436 + ], + "op": "JUMPI", + "path": "85" + }, + "1950": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2244, + 2255 + ], + "op": "DUP4", + "path": "85" + }, + "1951": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2259, + 2260 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1" + }, + "1953": { + "branch": 66, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2244, + 2260 + ], + "op": "SUB", + "path": "85" + }, + "1954": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "PUSH2", + "path": "85", + "value": "0x7B2" + }, + "1957": { + "branch": 66, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPI", + "path": "85" + }, + "1958": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2311 + ], + "op": "PUSH2", + "path": "85", + "statement": 15, + "value": "0x7AD" + }, + "1961": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2309 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF8C" + }, + "1964": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2284, + 2311 + ], + "op": "JUMP", + "path": "85" + }, + "1965": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2311 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1966": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "PUSH2", + "path": "85", + "value": "0x7E0" + }, + "1969": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMP", + "path": "85" + }, + "1970": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1971": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2378, + 2379 + ], + "op": "DUP3", + "path": "85" + }, + "1972": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2402 + ], + "op": "PUSH2", + "path": "85", + "value": "0x7BC" + }, + "1975": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2400, + 2401 + ], + "op": "PUSH0", + "path": "85" + }, + "1976": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2399 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF9D" + }, + "1979": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2381, + 2402 + ], + "op": "JUMP", + "path": "85" + }, + "1980": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2402 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1981": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "1983": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MLOAD", + "path": "85" + }, + "1984": { + "op": "PUSH4", + "value": "0x5A154675" + }, + "1989": { + "op": "PUSH1", + "value": "0xE0" + }, + "1991": { + "op": "SHL" + }, + "1992": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "DUP2", + "path": "85" + }, + "1993": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MSTORE", + "path": "85" + }, + "1994": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "1996": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "ADD", + "path": "85" + }, + "1997": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH2", + "path": "85", + "value": "0x7D7" + }, + "2000": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP3", + "path": "85" + }, + "2001": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP2", + "path": "85" + }, + "2002": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP1", + "path": "85" + }, + "2003": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH2", + "path": "85", + "value": "0x22AF" + }, + "2006": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2365, + 2403 + ], + "op": "JUMP", + "path": "85" + }, + "2007": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2008": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2010": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MLOAD", + "path": "85" + }, + "2011": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "DUP1", + "path": "85" + }, + "2012": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP2", + "path": "85" + }, + "2013": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SUB", + "path": "85" + }, + "2014": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP1", + "path": "85" + }, + "2015": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "REVERT", + "path": "85" + }, + "2016": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2017": { + "op": "POP" + }, + "2018": { + "op": "POP" + }, + "2019": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2071, + 2074 + ], + "op": "PUSH1", + "path": "85", + "statement": 16, + "value": "0x1" + }, + "2021": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2071, + 2074 + ], + "op": "ADD", + "path": "85" + }, + "2022": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "PUSH2", + "path": "85", + "value": "0x70B" + }, + "2025": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMP", + "path": "85" + }, + "2026": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2027": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "POP", + "path": "85" + }, + "2028": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1949, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2029": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2030": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2031": { + "fn": "BaseAccount.executeBatch", + "jump": "o", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "2032": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2033": { + "offset": [ + 2655, + 2668 + ], + "op": "PUSH2", + "path": "68", + "value": "0x7F8" + }, + "2036": { + "offset": [ + 2655, + 2666 + ], + "op": "PUSH2", + "path": "68", + "value": "0xFCE" + }, + "2039": { + "jump": "i", + "offset": [ + 2655, + 2668 + ], + "op": "JUMP", + "path": "68" + }, + "2040": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 2655, + 2668 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2041": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4312 + ], + "op": "PUSH2", + "path": "68", + "statement": 17, + "value": "0x801" + }, + "2044": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4294, + 4311 + ], + "op": "DUP3", + "path": "68" + }, + "2045": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4293 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1072" + }, + "2048": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4276, + 4312 + ], + "op": "JUMP", + "path": "68" + }, + "2049": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4312 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2050": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4368 + ], + "op": "PUSH2", + "path": "68", + "statement": 18, + "value": "0x80B" + }, + "2053": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4344, + 4361 + ], + "op": "DUP3", + "path": "68" + }, + "2054": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4363, + 4367 + ], + "op": "DUP3", + "path": "68" + }, + "2055": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4343 + ], + "op": "PUSH2", + "path": "68", + "value": "0x10BA" + }, + "2058": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4322, + 4368 + ], + "op": "JUMP", + "path": "68" + }, + "2059": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4368 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2060": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "POP", + "path": "68" + }, + "2061": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "POP", + "path": "68" + }, + "2062": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "o", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "2063": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2064": { + "fn": "Mech.execute", + "offset": [ + 5911, + 5934 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "2066": { + "fn": "Mech.execute", + "offset": [ + 5950, + 5962 + ], + "op": "PUSH0", + "path": "111" + }, + "2067": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6040 + ], + "op": "PUSH2", + "path": "111", + "statement": 19, + "value": "0x820" + }, + "2070": { + "fn": "Mech.execute", + "offset": [ + 6002, + 6004 + ], + "op": "DUP8", + "path": "111" + }, + "2071": { + "fn": "Mech.execute", + "offset": [ + 6006, + 6011 + ], + "op": "DUP8", + "path": "111" + }, + "2072": { + "fn": "Mech.execute", + "offset": [ + 6013, + 6017 + ], + "op": "DUP8", + "path": "111" + }, + "2073": { + "fn": "Mech.execute", + "offset": [ + 6013, + 6017 + ], + "op": "DUP8", + "path": "111" + }, + "2074": { + "fn": "Mech.execute", + "offset": [ + 6019, + 6028 + ], + "op": "DUP8", + "path": "111" + }, + "2075": { + "fn": "Mech.execute", + "offset": [ + 6030, + 6039 + ], + "op": "GAS", + "path": "111" + }, + "2076": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6001 + ], + "op": "PUSH2", + "path": "111", + "value": "0x117B" + }, + "2079": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5996, + 6040 + ], + "op": "JUMP", + "path": "111" + }, + "2080": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6040 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2081": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "SWAP3", + "path": "111" + }, + "2082": { + "op": "POP" + }, + "2083": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "SWAP1", + "path": "111" + }, + "2084": { + "op": "POP" + }, + "2085": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "DUP1", + "path": "111" + }, + "2086": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "PUSH2", + "path": "111", + "statement": 20, + "value": "0x831" + }, + "2089": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "JUMPI", + "path": "111" + }, + "2090": { + "fn": "Mech.execute", + "offset": [ + 6218, + 6228 + ], + "op": "DUP2", + "path": "111" + }, + "2091": { + "fn": "Mech.execute", + "offset": [ + 6212, + 6229 + ], + "op": "MLOAD", + "path": "111" + }, + "2092": { + "fn": "Mech.execute", + "offset": [ + 6205, + 6209 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "2094": { + "fn": "Mech.execute", + "offset": [ + 6193, + 6203 + ], + "op": "DUP4", + "path": "111" + }, + "2095": { + "fn": "Mech.execute", + "offset": [ + 6189, + 6210 + ], + "op": "ADD", + "path": "111" + }, + "2096": { + "fn": "Mech.execute", + "offset": [ + 6182, + 6230 + ], + "op": "REVERT", + "path": "111" + }, + "2097": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2098": { + "fn": "Mech.execute", + "offset": [ + 5940, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2099": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP6", + "path": "111" + }, + "2100": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP5", + "path": "111" + }, + "2101": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2102": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2103": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2104": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2105": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2106": { + "fn": "Mech.execute", + "jump": "o", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "2107": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2108": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3077, + 3094 + ], + "op": "PUSH0", + "path": "113" + }, + "2109": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3131 + ], + "op": "PUSH2", + "path": "113", + "statement": 21, + "value": "0x845" + }, + "2112": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3124, + 3130 + ], + "op": "DUP5", + "path": "113" + }, + "2113": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3123 + ], + "op": "PUSH2", + "path": "113", + "value": "0x87B" + }, + "2116": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 3113, + 3131 + ], + "op": "JUMP", + "path": "113" + }, + "2117": { + "branch": 90, + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3131 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2118": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "PUSH2", + "path": "113", + "value": "0x84F" + }, + "2121": { + "branch": 90, + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPI", + "path": "113" + }, + "2122": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3182, + 3183 + ], + "op": "PUSH0", + "path": "113" + }, + "2123": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "PUSH2", + "path": "113", + "value": "0x858" + }, + "2126": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMP", + "path": "113" + }, + "2127": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2128": { + "op": "PUSH4", + "value": "0x291F193" + }, + "2133": { + "op": "PUSH1", + "value": "0xE5" + }, + "2135": { + "op": "SHL" + }, + "2136": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2137": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3106, + 3184 + ], + "op": "SWAP5", + "path": "113" + }, + "2138": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "SWAP4", + "path": "113" + }, + "2139": { + "op": "POP" + }, + "2140": { + "op": "POP" + }, + "2141": { + "op": "POP" + }, + "2142": { + "op": "POP" + }, + "2143": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "o", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "2144": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2145": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3777, + 3784 + ], + "op": "PUSH0", + "path": "68" + }, + "2146": { + "offset": [ + 2926, + 2946 + ], + "op": "PUSH2", + "path": "68", + "value": "0x869" + }, + "2149": { + "offset": [ + 2926, + 2944 + ], + "op": "PUSH2", + "path": "68", + "value": "0x11D2" + }, + "2152": { + "jump": "i", + "offset": [ + 2926, + 2946 + ], + "op": "JUMP", + "path": "68" + }, + "2153": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 2926, + 2946 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2154": { + "op": "POP" + }, + "2155": { + "op": "PUSH0" + }, + "2156": { + "op": "MLOAD" + }, + "2157": { + "op": "PUSH1", + "value": "0x20" + }, + "2159": { + "op": "PUSH2", + "value": "0x25EF" + }, + "2162": { + "op": "PUSH0" + }, + "2163": { + "op": "CODECOPY" + }, + "2164": { + "op": "PUSH0" + }, + "2165": { + "op": "MLOAD" + }, + "2166": { + "op": "SWAP1" + }, + "2167": { + "op": "PUSH0" + }, + "2168": { + "op": "MSTORE" + }, + "2169": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "SWAP1", + "path": "68" + }, + "2170": { + "fn": "UUPSUpgradeable.proxiableUUID", + "jump": "o", + "offset": [ + 3708, + 3842 + ], + "op": "JUMP", + "path": "68" + }, + "2171": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2172": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 420, + 424 + ], + "op": "PUSH0", + "path": "110" + }, + "2173": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 439, + 460 + ], + "op": "PUSH0", + "path": "110" + }, + "2174": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 462, + 477 + ], + "op": "PUSH0", + "path": "110" + }, + "2175": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 488 + ], + "op": "PUSH2", + "path": "110", + "value": "0x886" + }, + "2178": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 486 + ], + "op": "PUSH2", + "path": "110", + "value": "0xD1A" + }, + "2181": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 481, + 488 + ], + "op": "JUMP", + "path": "110" + }, + "2182": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 488 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2183": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "statement": 22, + "value": "0x40" + }, + "2185": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2186": { + "op": "PUSH4", + "value": "0x31A9108F" + }, + "2191": { + "op": "PUSH1", + "value": "0xE1" + }, + "2193": { + "op": "SHL" + }, + "2194": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2195": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MSTORE", + "path": "110" + }, + "2196": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "2198": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2199": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2200": { + "op": "DUP3" + }, + "2201": { + "op": "SWAP1" + }, + "2202": { + "op": "MSTORE" + }, + "2203": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP2", + "path": "110" + }, + "2204": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP5", + "path": "110" + }, + "2205": { + "op": "POP" + }, + "2206": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP3", + "path": "110" + }, + "2207": { + "op": "POP" + }, + "2208": { + "op": "PUSH1", + "value": "0x1" + }, + "2210": { + "op": "PUSH1", + "value": "0x1" + }, + "2212": { + "op": "PUSH1", + "value": "0xA0" + }, + "2214": { + "op": "SHL" + }, + "2215": { + "op": "SUB" + }, + "2216": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "DUP1", + "path": "110" + }, + "2217": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "DUP8", + "path": "110" + }, + "2218": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "AND", + "path": "110" + }, + "2219": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "SWAP3", + "path": "110" + }, + "2220": { + "op": "POP" + }, + "2221": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "DUP5", + "path": "110" + }, + "2222": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "AND", + "path": "110" + }, + "2223": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "SWAP1", + "path": "110" + }, + "2224": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "PUSH4", + "path": "110", + "value": "0x6352211E" + }, + "2229": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "SWAP1", + "path": "110" + }, + "2230": { + "op": "PUSH1", + "value": "0x24" + }, + "2232": { + "op": "ADD" + }, + "2233": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x20" + }, + "2235": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2237": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2238": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2239": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP4", + "path": "110" + }, + "2240": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SUB", + "path": "110" + }, + "2241": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2242": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP7", + "path": "110" + }, + "2243": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "GAS", + "path": "110" + }, + "2244": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "STATICCALL", + "path": "110" + }, + "2245": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ISZERO", + "path": "110" + }, + "2246": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2247": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ISZERO", + "path": "110" + }, + "2248": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0x8D3" + }, + "2251": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPI", + "path": "110" + }, + "2252": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2253": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2254": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2255": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATACOPY", + "path": "110" + }, + "2256": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2257": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2258": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "REVERT", + "path": "110" + }, + "2259": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2260": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2261": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2262": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2263": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2264": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2266": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2267": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2268": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x1F" + }, + "2270": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "NOT", + "path": "110" + }, + "2271": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x1F" + }, + "2273": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP3", + "path": "110" + }, + "2274": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2275": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "AND", + "path": "110" + }, + "2276": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP3", + "path": "110" + }, + "2277": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2278": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2279": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2281": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MSTORE", + "path": "110" + }, + "2282": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2283": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2284": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2285": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP1", + "path": "110" + }, + "2286": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0x8F7" + }, + "2289": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP2", + "path": "110" + }, + "2290": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP1", + "path": "110" + }, + "2291": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0x2356" + }, + "2294": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 505, + 544 + ], + "op": "JUMP", + "path": "110" + }, + "2295": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2296": { + "op": "PUSH1", + "value": "0x1" + }, + "2298": { + "op": "PUSH1", + "value": "0x1" + }, + "2300": { + "op": "PUSH1", + "value": "0xA0" + }, + "2302": { + "op": "SHL" + }, + "2303": { + "op": "SUB" + }, + "2304": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "AND", + "path": "110" + }, + "2305": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "EQ", + "path": "110" + }, + "2306": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "DUP1", + "path": "110" + }, + "2307": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2308": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "PUSH2", + "path": "110", + "value": "0x858" + }, + "2311": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "JUMPI", + "path": "110" + }, + "2312": { + "op": "POP" + }, + "2313": { + "op": "POP" + }, + "2314": { + "op": "POP" + }, + "2315": { + "op": "POP" + }, + "2316": { + "op": "PUSH1", + "value": "0x1" + }, + "2318": { + "op": "PUSH1", + "value": "0x1" + }, + "2320": { + "op": "PUSH1", + "value": "0xA0" + }, + "2322": { + "op": "SHL" + }, + "2323": { + "op": "SUB" + }, + "2324": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "AND", + "path": "110" + }, + "2325": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2326": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2327": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "SWAP1", + "path": "110" + }, + "2328": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "o", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "2329": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 292, + 424 + ], + "op": "JUMPDEST", + "path": "100" + }, + "2330": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 8870, + 8891 + ], + "op": "PUSH32", + "path": "67", + "value": "0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + "2363": { + "offset": [ + 4302, + 4317 + ], + "op": "DUP1", + "path": "67" + }, + "2364": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "SLOAD", + "path": "67" + }, + "2365": { + "op": "PUSH1", + "value": "0x1" + }, + "2367": { + "op": "PUSH1", + "value": "0x40" + }, + "2369": { + "op": "SHL" + }, + "2370": { + "offset": [ + 4302, + 4317 + ], + "op": "DUP2", + "path": "67" + }, + "2371": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "DIV", + "path": "67" + }, + "2372": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "PUSH1", + "path": "67", + "value": "0xFF" + }, + "2374": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "AND", + "path": "67" + }, + "2375": { + "offset": [ + 4301, + 4317 + ], + "op": "ISZERO", + "path": "67" + }, + "2376": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4301, + 4317 + ], + "op": "SWAP1", + "path": "67" + }, + "2377": { + "op": "PUSH1", + "value": "0x1" + }, + "2379": { + "op": "PUSH1", + "value": "0x1" + }, + "2381": { + "op": "PUSH1", + "value": "0x40" + }, + "2383": { + "op": "SHL" + }, + "2384": { + "op": "SUB" + }, + "2385": { + "offset": [ + 4348, + 4362 + ], + "op": "AND", + "path": "67" + }, + "2386": { + "offset": [ + 4158, + 4188 + ], + "op": "PUSH0", + "path": "67" + }, + "2387": { + "offset": [ + 4726, + 4742 + ], + "op": "DUP2", + "path": "67" + }, + "2388": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4742 + ], + "op": "ISZERO", + "path": "67" + }, + "2389": { + "offset": [ + 4726, + 4760 + ], + "op": "DUP1", + "path": "67" + }, + "2390": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "ISZERO", + "path": "67" + }, + "2391": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "PUSH2", + "path": "67", + "value": "0x95D" + }, + "2394": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "JUMPI", + "path": "67" + }, + "2395": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "POP", + "path": "67" + }, + "2396": { + "offset": [ + 4746, + 4760 + ], + "op": "DUP3", + "path": "67" + }, + "2397": { + "offset": [ + 4726, + 4760 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2398": { + "offset": [ + 4706, + 4760 + ], + "op": "SWAP1", + "path": "67" + }, + "2399": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4706, + 4760 + ], + "op": "POP", + "path": "67" + }, + "2400": { + "offset": [ + 4770, + 4787 + ], + "op": "PUSH0", + "path": "67" + }, + "2401": { + "offset": [ + 4790, + 4801 + ], + "op": "DUP3", + "path": "67" + }, + "2402": { + "op": "PUSH1", + "value": "0x1" + }, + "2404": { + "op": "PUSH1", + "value": "0x1" + }, + "2406": { + "op": "PUSH1", + "value": "0x40" + }, + "2408": { + "op": "SHL" + }, + "2409": { + "op": "SUB" + }, + "2410": { + "offset": [ + 4790, + 4806 + ], + "op": "AND", + "path": "67" + }, + "2411": { + "offset": [ + 4805, + 4806 + ], + "op": "PUSH1", + "path": "67", + "value": "0x1" + }, + "2413": { + "offset": [ + 4790, + 4806 + ], + "op": "EQ", + "path": "67" + }, + "2414": { + "offset": [ + 4790, + 4840 + ], + "op": "DUP1", + "path": "67" + }, + "2415": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "ISZERO", + "path": "67" + }, + "2416": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "PUSH2", + "path": "67", + "value": "0x978" + }, + "2419": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "JUMPI", + "path": "67" + }, + "2420": { + "op": "POP" + }, + "2421": { + "offset": [ + 4818, + 4822 + ], + "op": "ADDRESS", + "path": "67" + }, + "2422": { + "offset": [ + 4810, + 4835 + ], + "op": "EXTCODESIZE", + "path": "67" + }, + "2423": { + "offset": [ + 4810, + 4840 + ], + "op": "ISZERO", + "path": "67" + }, + "2424": { + "offset": [ + 4790, + 4840 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2425": { + "offset": [ + 4770, + 4840 + ], + "op": "SWAP1", + "path": "67" + }, + "2426": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4770, + 4840 + ], + "op": "POP", + "path": "67" + }, + "2427": { + "offset": [ + 4856, + 4868 + ], + "op": "DUP2", + "path": "67" + }, + "2428": { + "offset": [ + 4855, + 4868 + ], + "op": "ISZERO", + "path": "67" + }, + "2429": { + "offset": [ + 4855, + 4885 + ], + "op": "DUP1", + "path": "67" + }, + "2430": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "ISZERO", + "path": "67" + }, + "2431": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "PUSH2", + "path": "67", + "value": "0x986" + }, + "2434": { + "offset": [ + 4855, + 4885 + ], + "op": "JUMPI", + "path": "67" + }, + "2435": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "POP", + "path": "67" + }, + "2436": { + "offset": [ + 4873, + 4885 + ], + "op": "DUP1", + "path": "67" + }, + "2437": { + "offset": [ + 4872, + 4885 + ], + "op": "ISZERO", + "path": "67" + }, + "2438": { + "offset": [ + 4855, + 4885 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2439": { + "offset": [ + 4851, + 4942 + ], + "op": "ISZERO", + "path": "67" + }, + "2440": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4851, + 4942 + ], + "op": "PUSH2", + "path": "67", + "value": "0x9A4" + }, + "2443": { + "offset": [ + 4851, + 4942 + ], + "op": "JUMPI", + "path": "67" + }, + "2444": { + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2446": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MLOAD", + "path": "67" + }, + "2447": { + "op": "PUSH4", + "value": "0xF92EE8A9" + }, + "2452": { + "op": "PUSH1", + "value": "0xE0" + }, + "2454": { + "op": "SHL" + }, + "2455": { + "offset": [ + 4908, + 4931 + ], + "op": "DUP2", + "path": "67" + }, + "2456": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MSTORE", + "path": "67" + }, + "2457": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x4" + }, + "2459": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "ADD", + "path": "67" + }, + "2460": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2462": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MLOAD", + "path": "67" + }, + "2463": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "DUP1", + "path": "67" + }, + "2464": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SWAP2", + "path": "67" + }, + "2465": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SUB", + "path": "67" + }, + "2466": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SWAP1", + "path": "67" + }, + "2467": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "REVERT", + "path": "67" + }, + "2468": { + "offset": [ + 4851, + 4942 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2469": { + "offset": [ + 4951, + 4969 + ], + "op": "DUP5", + "path": "67" + }, + "2470": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "SLOAD", + "path": "67" + }, + "2471": { + "op": "PUSH8", + "value": "0xFFFFFFFFFFFFFFFF" + }, + "2480": { + "op": "NOT" + }, + "2481": { + "offset": [ + 4951, + 4969 + ], + "op": "AND", + "path": "67" + }, + "2482": { + "offset": [ + 4968, + 4969 + ], + "op": "PUSH1", + "path": "67", + "value": "0x1" + }, + "2484": { + "offset": [ + 4951, + 4969 + ], + "op": "OR", + "path": "67" + }, + "2485": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "DUP6", + "path": "67" + }, + "2486": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "SSTORE", + "path": "67" + }, + "2487": { + "offset": [ + 4979, + 5046 + ], + "op": "DUP4", + "path": "67" + }, + "2488": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "ISZERO", + "path": "67" + }, + "2489": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "PUSH2", + "path": "67", + "value": "0x9CE" + }, + "2492": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "JUMPI", + "path": "67" + }, + "2493": { + "offset": [ + 5013, + 5035 + ], + "op": "DUP5", + "path": "67" + }, + "2494": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "SLOAD", + "path": "67" + }, + "2495": { + "op": "PUSH1", + "value": "0xFF" + }, + "2497": { + "op": "PUSH1", + "value": "0x40" + }, + "2499": { + "op": "SHL" + }, + "2500": { + "op": "NOT" + }, + "2501": { + "offset": [ + 5013, + 5035 + ], + "op": "AND", + "path": "67" + }, + "2502": { + "op": "PUSH1", + "value": "0x1" + }, + "2504": { + "op": "PUSH1", + "value": "0x40" + }, + "2506": { + "op": "SHL" + }, + "2507": { + "offset": [ + 5013, + 5035 + ], + "op": "OR", + "path": "67" + }, + "2508": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "DUP6", + "path": "67" + }, + "2509": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "SSTORE", + "path": "67" + }, + "2510": { + "offset": [ + 4979, + 5046 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2511": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 343, + 367 + ], + "op": "PUSH2", + "path": "100", + "statement": 23, + "value": "0x9D6" + }, + "2514": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 343, + 365 + ], + "op": "PUSH2", + "path": "100", + "value": "0x121B" + }, + "2517": { + "fn": "HyperAccountMinter.initialize", + "jump": "i", + "offset": [ + 343, + 367 + ], + "op": "JUMP", + "path": "100" + }, + "2518": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 343, + 367 + ], + "op": "JUMPDEST", + "path": "100" + }, + "2519": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH2", + "path": "100", + "statement": 24, + "value": "0xA23" + }, + "2522": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x40" + }, + "2524": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "MLOAD", + "path": "100" + }, + "2525": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "DUP1", + "path": "100" + }, + "2526": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x40" + }, + "2528": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "ADD", + "path": "100" + }, + "2529": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x40" + }, + "2531": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "MSTORE", + "path": "100" + }, + "2532": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "DUP1", + "path": "100" + }, + "2533": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x12" + }, + "2535": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "DUP2", + "path": "100" + }, + "2536": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "MSTORE", + "path": "100" + }, + "2537": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x20" + }, + "2539": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "ADD", + "path": "100" + }, + "2540": { + "op": "PUSH18", + "value": "0x243CB832B920B1B1B7BAB73A26B4B73A32B9" + }, + "2559": { + "op": "PUSH1", + "value": "0x71" + }, + "2561": { + "op": "SHL" + }, + "2562": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "DUP2", + "path": "100" + }, + "2563": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "MSTORE", + "path": "100" + }, + "2564": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "POP", + "path": "100" + }, + "2565": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x40" + }, + "2567": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "MLOAD", + "path": "100" + }, + "2568": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "DUP1", + "path": "100" + }, + "2569": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x40" + }, + "2571": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "ADD", + "path": "100" + }, + "2572": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x40" + }, + "2574": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "MSTORE", + "path": "100" + }, + "2575": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "DUP1", + "path": "100" + }, + "2576": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x1" + }, + "2578": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "DUP2", + "path": "100" + }, + "2579": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "MSTORE", + "path": "100" + }, + "2580": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "PUSH1", + "path": "100", + "value": "0x20" + }, + "2582": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "ADD", + "path": "100" + }, + "2583": { + "op": "PUSH1", + "value": "0x31" + }, + "2585": { + "op": "PUSH1", + "value": "0xF8" + }, + "2587": { + "op": "SHL" + }, + "2588": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "DUP2", + "path": "100" + }, + "2589": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "MSTORE", + "path": "100" + }, + "2590": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "POP", + "path": "100" + }, + "2591": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 390 + ], + "op": "PUSH2", + "path": "100", + "value": "0x1223" + }, + "2594": { + "fn": "HyperAccountMinter.initialize", + "jump": "i", + "offset": [ + 377, + 417 + ], + "op": "JUMP", + "path": "100" + }, + "2595": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 377, + 417 + ], + "op": "JUMPDEST", + "path": "100" + }, + "2596": { + "offset": [ + 5070, + 5084 + ], + "op": "DUP4", + "path": "67" + }, + "2597": { + "offset": [ + 5066, + 5167 + ], + "op": "ISZERO", + "path": "67" + }, + "2598": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5066, + 5167 + ], + "op": "PUSH2", + "path": "67", + "value": "0xA69" + }, + "2601": { + "offset": [ + 5066, + 5167 + ], + "op": "JUMPI", + "path": "67" + }, + "2602": { + "offset": [ + 5100, + 5123 + ], + "op": "DUP5", + "path": "67" + }, + "2603": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "SLOAD", + "path": "67" + }, + "2604": { + "op": "PUSH1", + "value": "0xFF" + }, + "2606": { + "op": "PUSH1", + "value": "0x40" + }, + "2608": { + "op": "SHL" + }, + "2609": { + "op": "NOT" + }, + "2610": { + "offset": [ + 5100, + 5123 + ], + "op": "AND", + "path": "67" + }, + "2611": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "DUP6", + "path": "67" + }, + "2612": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "SSTORE", + "path": "67" + }, + "2613": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2615": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "MLOAD", + "path": "67" + }, + "2616": { + "op": "PUSH1", + "value": "0x1" + }, + "2618": { + "op": "DUP2" + }, + "2619": { + "op": "MSTORE" + }, + "2620": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH32", + "path": "67", + "value": "0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2" + }, + "2653": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP1", + "path": "67" + }, + "2654": { + "op": "PUSH1", + "value": "0x20" + }, + "2656": { + "op": "ADD" + }, + "2657": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2659": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "MLOAD", + "path": "67" + }, + "2660": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "DUP1", + "path": "67" + }, + "2661": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP2", + "path": "67" + }, + "2662": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SUB", + "path": "67" + }, + "2663": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP1", + "path": "67" + }, + "2664": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "LOG1", + "path": "67" + }, + "2665": { + "offset": [ + 5066, + 5167 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2666": { + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2667": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2668": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2669": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2670": { + "fn": "HyperAccountMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2671": { + "fn": "HyperAccountMinter.initialize", + "jump": "o", + "offset": [ + 292, + 424 + ], + "op": "JUMP", + "path": "100" + }, + "2672": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "2673": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "PUSH0", + "path": "75" + }, + "2674": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "2676": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "DUP1", + "path": "75" + }, + "2677": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP3", + "path": "75" + }, + "2678": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP1", + "path": "75" + }, + "2679": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP1", + "path": "75" + }, + "2680": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "DUP4", + "path": "75" + }, + "2681": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP2", + "path": "75" + }, + "2682": { + "op": "PUSH0" + }, + "2683": { + "op": "MLOAD" + }, + "2684": { + "op": "PUSH1", + "value": "0x20" + }, + "2686": { + "op": "PUSH2", + "value": "0x25CF" + }, + "2689": { + "op": "PUSH0" + }, + "2690": { + "op": "CODECOPY" + }, + "2691": { + "op": "PUSH0" + }, + "2692": { + "op": "MLOAD" + }, + "2693": { + "op": "SWAP1" + }, + "2694": { + "op": "PUSH0" + }, + "2695": { + "op": "MSTORE" + }, + "2696": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5790 + ], + "op": "DUP1", + "path": "75", + "statement": 25 + }, + "2697": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5790 + ], + "op": "SLOAD", + "path": "75" + }, + "2698": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5511, + 5556 + ], + "op": "SWAP1", + "path": "75" + }, + "2699": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5511, + 5556 + ], + "op": "SWAP2", + "path": "75" + }, + "2700": { + "op": "POP" + }, + "2701": { + "branch": 70, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5795 + ], + "op": "ISZERO", + "path": "75" + }, + "2702": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "DUP1", + "path": "75" + }, + "2703": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "ISZERO", + "path": "75" + }, + "2704": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "PUSH2", + "path": "75", + "value": "0xA9B" + }, + "2707": { + "branch": 70, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "JUMPI", + "path": "75" + }, + "2708": { + "op": "POP" + }, + "2709": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1" + }, + "2711": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "DUP2", + "path": "75" + }, + "2712": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "ADD", + "path": "75" + }, + "2713": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "SLOAD", + "path": "75" + }, + "2714": { + "branch": 71, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5820 + ], + "op": "ISZERO", + "path": "75" + }, + "2715": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "JUMPDEST", + "path": "75" + }, + "2716": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH2", + "path": "75", + "value": "0xADF" + }, + "2719": { + "branch": 71, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "JUMPI", + "path": "75" + }, + "2720": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "2722": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "MLOAD", + "path": "75" + }, + "2723": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "2727": { + "op": "PUSH1", + "value": "0xE5" + }, + "2729": { + "op": "SHL" + }, + "2730": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "DUP2", + "path": "75" + }, + "2731": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "MSTORE", + "path": "75" + }, + "2732": { + "op": "PUSH1", + "value": "0x20" + }, + "2734": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH1", + "path": "75", + "value": "0x4" + }, + "2736": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "DUP3", + "path": "75" + }, + "2737": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "ADD", + "path": "75" + }, + "2738": { + "op": "MSTORE" + }, + "2739": { + "op": "PUSH1", + "value": "0x15" + }, + "2741": { + "op": "PUSH1", + "value": "0x24" + }, + "2743": { + "op": "DUP3" + }, + "2744": { + "op": "ADD" + }, + "2745": { + "op": "MSTORE" + }, + "2746": { + "op": "PUSH21", + "value": "0x1152540DCC4C8E88155B9A5B9A5D1A585B1A5E9959" + }, + "2768": { + "op": "PUSH1", + "value": "0x5A" + }, + "2770": { + "op": "SHL" + }, + "2771": { + "op": "PUSH1", + "value": "0x44" + }, + "2773": { + "op": "DUP3" + }, + "2774": { + "op": "ADD" + }, + "2775": { + "op": "MSTORE" + }, + "2776": { + "op": "PUSH1", + "value": "0x64" + }, + "2778": { + "op": "ADD" + }, + "2779": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH2", + "path": "75", + "value": "0x7D7" + }, + "2782": { + "op": "JUMP" + }, + "2783": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "JUMPDEST", + "path": "75" + }, + "2784": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5921 + ], + "op": "PUSH2", + "path": "75", + "statement": 26, + "value": "0xAE7" + }, + "2787": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5919 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1235" + }, + "2790": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5908, + 5921 + ], + "op": "JUMP", + "path": "75" + }, + "2791": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5921 + ], + "op": "JUMPDEST", + "path": "75" + }, + "2792": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5951 + ], + "op": "PUSH2", + "path": "75", + "value": "0xAEF" + }, + "2795": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5949 + ], + "op": "PUSH2", + "path": "75", + "value": "0x12F5" + }, + "2798": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5935, + 5951 + ], + "op": "JUMP", + "path": "75" + }, + "2799": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5951 + ], + "op": "JUMPDEST", + "path": "75" + }, + "2800": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "2802": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP1", + "path": "75" + }, + "2803": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MLOAD", + "path": "75" + }, + "2804": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6027, + 6028 + ], + "op": "PUSH0", + "path": "75" + }, + "2805": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP1", + "path": "75" + }, + "2806": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP3", + "path": "75" + }, + "2807": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MSTORE", + "path": "75" + }, + "2808": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "2810": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP3", + "path": "75" + }, + "2811": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "ADD", + "path": "75" + }, + "2812": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP1", + "path": "75" + }, + "2813": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP3", + "path": "75" + }, + "2814": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MSTORE", + "path": "75" + }, + "2815": { + "op": "PUSH1", + "value": "0xF" + }, + "2817": { + "op": "PUSH1", + "value": "0xF8" + }, + "2819": { + "op": "SHL" + }, + "2820": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP13", + "path": "75" + }, + "2821": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP4", + "path": "75" + }, + "2822": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP12", + "path": "75" + }, + "2823": { + "op": "POP" + }, + "2824": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP2", + "path": "75" + }, + "2825": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP10", + "path": "75" + }, + "2826": { + "op": "POP" + }, + "2827": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5965, + 5978 + ], + "op": "CHAINID", + "path": "75" + }, + "2828": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5965, + 5978 + ], + "op": "SWAP9", + "path": "75" + }, + "2829": { + "op": "POP" + }, + "2830": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6000, + 6004 + ], + "op": "ADDRESS", + "path": "75" + }, + "2831": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6000, + 6004 + ], + "op": "SWAP8", + "path": "75" + }, + "2832": { + "op": "POP" + }, + "2833": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6027, + 6028 + ], + "op": "SWAP6", + "path": "75" + }, + "2834": { + "op": "POP" + }, + "2835": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP4", + "path": "75" + }, + "2836": { + "op": "POP" + }, + "2837": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP2", + "path": "75" + }, + "2838": { + "op": "POP" + }, + "2839": { + "op": "POP" + }, + "2840": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "o", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "2841": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2842": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1499 + ], + "op": "PUSH2", + "path": "85", + "statement": 27, + "value": "0xB21" + }, + "2845": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1497 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF6E" + }, + "2848": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1479, + 1499 + ], + "op": "JUMP", + "path": "85" + }, + "2849": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1499 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2850": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1517 + ], + "op": "PUSH0", + "path": "85" + }, + "2851": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH2", + "path": "85", + "value": "0xB62" + }, + "2854": { + "fn": "BaseAccount.execute", + "offset": [ + 1530, + 1536 + ], + "op": "DUP6", + "path": "85" + }, + "2855": { + "fn": "BaseAccount.execute", + "offset": [ + 1538, + 1543 + ], + "op": "DUP6", + "path": "85" + }, + "2856": { + "fn": "BaseAccount.execute", + "offset": [ + 1545, + 1549 + ], + "op": "DUP6", + "path": "85" + }, + "2857": { + "fn": "BaseAccount.execute", + "offset": [ + 1545, + 1549 + ], + "op": "DUP6", + "path": "85" + }, + "2858": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "2859": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "2860": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "2862": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "2863": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2865": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "2866": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "2867": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DIV", + "path": "85" + }, + "2868": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MUL", + "path": "85" + }, + "2869": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2871": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "2872": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2874": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MLOAD", + "path": "85" + }, + "2875": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "2876": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "2877": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "2878": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2880": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "2881": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "2882": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP4", + "path": "85" + }, + "2883": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP3", + "path": "85" + }, + "2884": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "2885": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "2886": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "2887": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "2888": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "2889": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2891": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "2892": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP4", + "path": "85" + }, + "2893": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP4", + "path": "85" + }, + "2894": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "2895": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP3", + "path": "85" + }, + "2896": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP5", + "path": "85" + }, + "2897": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "CALLDATACOPY", + "path": "85" + }, + "2898": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH0", + "path": "85" + }, + "2899": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP3", + "path": "85" + }, + "2900": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "2901": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "2902": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "2903": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "2904": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "2905": { + "op": "POP" + }, + "2906": { + "op": "POP" + }, + "2907": { + "op": "POP" + }, + "2908": { + "op": "POP" + }, + "2909": { + "fn": "BaseAccount.execute", + "offset": [ + 1551, + 1560 + ], + "op": "GAS", + "path": "85" + }, + "2910": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1529 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF76" + }, + "2913": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1520, + 1561 + ], + "op": "JUMP", + "path": "85" + }, + "2914": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2915": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "2916": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1561 + ], + "op": "POP", + "path": "85" + }, + "2917": { + "branch": 67, + "fn": "BaseAccount.execute", + "offset": [ + 1576, + 1578 + ], + "op": "DUP1", + "path": "85" + }, + "2918": { + "fn": "BaseAccount.execute", + "offset": [ + 1571, + 1632 + ], + "op": "PUSH2", + "path": "85", + "value": "0xA69" + }, + "2921": { + "branch": 67, + "fn": "BaseAccount.execute", + "offset": [ + 1571, + 1632 + ], + "op": "JUMPI", + "path": "85" + }, + "2922": { + "fn": "BaseAccount.execute", + "offset": [ + 1594, + 1621 + ], + "op": "PUSH2", + "path": "85", + "statement": 28, + "value": "0xA69" + }, + "2925": { + "fn": "BaseAccount.execute", + "offset": [ + 1594, + 1619 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF8C" + }, + "2928": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1594, + 1621 + ], + "op": "JUMP", + "path": "85" + }, + "2929": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2930": { + "fn": "TokenBoundMech.state", + "offset": [ + 2168, + 2175 + ], + "op": "PUSH0", + "path": "113" + }, + "2931": { + "fn": "TokenBoundMech.state", + "offset": [ + 2168, + 2175 + ], + "op": "DUP1", + "path": "113" + }, + "2932": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "PUSH32", + "path": "113", + "value": "0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800" + }, + "2965": { + "fn": "TokenBoundMech.state", + "offset": [ + 2187, + 2248 + ], + "op": "SWAP1", + "path": "113" + }, + "2966": { + "op": "POP" + }, + "2967": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2354 + ], + "op": "PUSH0", + "path": "113" + }, + "2968": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "2989": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "2991": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "2992": { + "op": "PUSH4", + "value": "0x1AAB3F0D" + }, + "2997": { + "op": "PUSH1", + "value": "0xE1" + }, + "2999": { + "op": "SHL" + }, + "3000": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3001": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MSTORE", + "path": "113" + }, + "3002": { + "fn": "TokenBoundMech.state", + "offset": [ + 2387, + 2391 + ], + "op": "ADDRESS", + "path": "113" + }, + "3003": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x4" + }, + "3005": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3006": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3007": { + "op": "MSTORE" + }, + "3008": { + "fn": "TokenBoundMech.state", + "offset": [ + 2394, + 2395 + ], + "op": "PUSH0", + "path": "113" + }, + "3009": { + "op": "PUSH1", + "value": "0x24" + }, + "3011": { + "op": "DUP3" + }, + "3012": { + "op": "ADD" + }, + "3013": { + "op": "MSTORE" + }, + "3014": { + "op": "PUSH1", + "value": "0x1" + }, + "3016": { + "op": "PUSH1", + "value": "0x1" + }, + "3018": { + "op": "PUSH1", + "value": "0xA0" + }, + "3020": { + "op": "SHL" + }, + "3021": { + "op": "SUB" + }, + "3022": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP2", + "path": "113" + }, + "3023": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3024": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP2", + "path": "113" + }, + "3025": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "AND", + "path": "113" + }, + "3026": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3027": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "PUSH4", + "path": "113", + "value": "0x35567E1A" + }, + "3032": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3033": { + "op": "PUSH1", + "value": "0x44" + }, + "3035": { + "op": "ADD" + }, + "3036": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3038": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3040": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "3041": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3042": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP4", + "path": "113" + }, + "3043": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SUB", + "path": "113" + }, + "3044": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3045": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP7", + "path": "113" + }, + "3046": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "GAS", + "path": "113" + }, + "3047": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "STATICCALL", + "path": "113" + }, + "3048": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ISZERO", + "path": "113" + }, + "3049": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3050": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ISZERO", + "path": "113" + }, + "3051": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0xBF6" + }, + "3054": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPI", + "path": "113" + }, + "3055": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3056": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3057": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3058": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATACOPY", + "path": "113" + }, + "3059": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3060": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3061": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "REVERT", + "path": "113" + }, + "3062": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3063": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3064": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3065": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3066": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3067": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3069": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "3070": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3071": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x1F" + }, + "3073": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "NOT", + "path": "113" + }, + "3074": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x1F" + }, + "3076": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3077": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3078": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "AND", + "path": "113" + }, + "3079": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3080": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3081": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3082": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3084": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MSTORE", + "path": "113" + }, + "3085": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3086": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3087": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3088": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3089": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0xC1A" + }, + "3092": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP2", + "path": "113" + }, + "3093": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3094": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2371" + }, + "3097": { + "fn": "TokenBoundMech.state", + "jump": "i", + "offset": [ + 2357, + 2396 + ], + "op": "JUMP", + "path": "113" + }, + "3098": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3099": { + "fn": "TokenBoundMech.state", + "offset": [ + 2443, + 2457 + ], + "op": "DUP3", + "path": "113", + "statement": 29 + }, + "3100": { + "fn": "TokenBoundMech.state", + "offset": [ + 2443, + 2457 + ], + "op": "SLOAD", + "path": "113" + }, + "3101": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3103": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MLOAD", + "path": "113" + }, + "3104": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP2", + "path": "113" + }, + "3105": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP3", + "path": "113" + }, + "3106": { + "op": "POP" + }, + "3107": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH2", + "path": "113", + "value": "0xC39" + }, + "3110": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SWAP2", + "path": "113" + }, + "3111": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "DUP4", + "path": "113" + }, + "3112": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3113": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3115": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "ADD", + "path": "113" + }, + "3116": { + "op": "SWAP2" + }, + "3117": { + "op": "DUP3" + }, + "3118": { + "op": "MSTORE" + }, + "3119": { + "op": "PUSH1", + "value": "0x20" + }, + "3121": { + "op": "DUP3" + }, + "3122": { + "op": "ADD" + }, + "3123": { + "op": "MSTORE" + }, + "3124": { + "op": "PUSH1", + "value": "0x40" + }, + "3126": { + "op": "ADD" + }, + "3127": { + "op": "SWAP1" + }, + "3128": { + "op": "JUMP" + }, + "3129": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3130": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3132": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MLOAD", + "path": "113" + }, + "3133": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3135": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP2", + "path": "113" + }, + "3136": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP4", + "path": "113" + }, + "3137": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SUB", + "path": "113" + }, + "3138": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SUB", + "path": "113" + }, + "3139": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP2", + "path": "113" + }, + "3140": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MSTORE", + "path": "113" + }, + "3141": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SWAP1", + "path": "113" + }, + "3142": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3144": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MSTORE", + "path": "113" + }, + "3145": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "DUP1", + "path": "113" + }, + "3146": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "MLOAD", + "path": "113" + }, + "3147": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "SWAP1", + "path": "113" + }, + "3148": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3150": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "ADD", + "path": "113" + }, + "3151": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "KECCAK256", + "path": "113" + }, + "3152": { + "fn": "TokenBoundMech.state", + "offset": [ + 2414, + 2477 + ], + "op": "PUSH0", + "path": "113" + }, + "3153": { + "fn": "TokenBoundMech.state", + "offset": [ + 2414, + 2477 + ], + "op": "SHR", + "path": "113" + }, + "3154": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "SWAP3", + "path": "113" + }, + "3155": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3156": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3157": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3158": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "SWAP1", + "path": "113" + }, + "3159": { + "fn": "TokenBoundMech.state", + "jump": "o", + "offset": [ + 2128, + 2485 + ], + "op": "JUMP", + "path": "113" + }, + "3160": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3161": { + "fn": "Mech.execute", + "offset": [ + 5072, + 5095 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "3163": { + "fn": "Mech.execute", + "offset": [ + 5111, + 5123 + ], + "op": "PUSH0", + "path": "111" + }, + "3164": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5222 + ], + "op": "PUSH2", + "path": "111", + "statement": 30, + "value": "0xC75" + }, + "3167": { + "fn": "Mech.execute", + "offset": [ + 5163, + 5165 + ], + "op": "DUP9", + "path": "111" + }, + "3168": { + "fn": "Mech.execute", + "offset": [ + 5167, + 5172 + ], + "op": "DUP9", + "path": "111" + }, + "3169": { + "fn": "Mech.execute", + "offset": [ + 5174, + 5178 + ], + "op": "DUP9", + "path": "111" + }, + "3170": { + "fn": "Mech.execute", + "offset": [ + 5174, + 5178 + ], + "op": "DUP9", + "path": "111" + }, + "3171": { + "fn": "Mech.execute", + "offset": [ + 5180, + 5189 + ], + "op": "DUP9", + "path": "111" + }, + "3172": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5201 + ], + "op": "DUP9", + "path": "111" + }, + "3173": { + "branch": 85, + "fn": "Mech.execute", + "offset": [ + 5191, + 5201 + ], + "op": "ISZERO", + "path": "111" + }, + "3174": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "PUSH2", + "path": "111", + "value": "0xC6F" + }, + "3177": { + "branch": 85, + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "JUMPI", + "path": "111" + }, + "3178": { + "fn": "Mech.execute", + "offset": [ + 5216, + 5221 + ], + "op": "DUP9", + "path": "111" + }, + "3179": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5162 + ], + "op": "PUSH2", + "path": "111", + "value": "0x117B" + }, + "3182": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5157, + 5222 + ], + "op": "JUMP", + "path": "111" + }, + "3183": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3184": { + "fn": "Mech.execute", + "offset": [ + 5204, + 5213 + ], + "op": "GAS", + "path": "111" + }, + "3185": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5162 + ], + "op": "PUSH2", + "path": "111", + "value": "0x117B" + }, + "3188": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5157, + 5222 + ], + "op": "JUMP", + "path": "111" + }, + "3189": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5222 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3190": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "SWAP3", + "path": "111" + }, + "3191": { + "op": "POP" + }, + "3192": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "SWAP1", + "path": "111" + }, + "3193": { + "op": "POP" + }, + "3194": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "DUP1", + "path": "111" + }, + "3195": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "PUSH2", + "path": "111", + "statement": 31, + "value": "0xC86" + }, + "3198": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "JUMPI", + "path": "111" + }, + "3199": { + "fn": "Mech.execute", + "offset": [ + 5400, + 5410 + ], + "op": "DUP2", + "path": "111" + }, + "3200": { + "fn": "Mech.execute", + "offset": [ + 5394, + 5411 + ], + "op": "MLOAD", + "path": "111" + }, + "3201": { + "fn": "Mech.execute", + "offset": [ + 5387, + 5391 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "3203": { + "fn": "Mech.execute", + "offset": [ + 5375, + 5385 + ], + "op": "DUP4", + "path": "111" + }, + "3204": { + "fn": "Mech.execute", + "offset": [ + 5371, + 5392 + ], + "op": "ADD", + "path": "111" + }, + "3205": { + "fn": "Mech.execute", + "offset": [ + 5364, + 5412 + ], + "op": "REVERT", + "path": "111" + }, + "3206": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3207": { + "fn": "Mech.execute", + "offset": [ + 5101, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3208": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "SWAP7", + "path": "111" + }, + "3209": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "SWAP6", + "path": "111" + }, + "3210": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3211": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3212": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3213": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3214": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3215": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3216": { + "fn": "Mech.execute", + "jump": "o", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "3217": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3218": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1030, + 1037 + ], + "op": "PUSH0", + "path": "85" + }, + "3219": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "3240": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "statement": 32, + "value": "0x40" + }, + "3242": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3243": { + "op": "PUSH4", + "value": "0x1AAB3F0D" + }, + "3248": { + "op": "PUSH1", + "value": "0xE1" + }, + "3250": { + "op": "SHL" + }, + "3251": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3252": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MSTORE", + "path": "85" + }, + "3253": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1086, + 1090 + ], + "op": "ADDRESS", + "path": "85" + }, + "3254": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "3256": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3257": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3258": { + "op": "MSTORE" + }, + "3259": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1093, + 1094 + ], + "op": "PUSH0", + "path": "85" + }, + "3260": { + "op": "PUSH1", + "value": "0x24" + }, + "3262": { + "op": "DUP3" + }, + "3263": { + "op": "ADD" + }, + "3264": { + "op": "MSTORE" + }, + "3265": { + "op": "PUSH1", + "value": "0x1" + }, + "3267": { + "op": "PUSH1", + "value": "0x1" + }, + "3269": { + "op": "PUSH1", + "value": "0xA0" + }, + "3271": { + "op": "SHL" + }, + "3272": { + "op": "SUB" + }, + "3273": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP2", + "path": "85" + }, + "3274": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3275": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP2", + "path": "85" + }, + "3276": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "AND", + "path": "85" + }, + "3277": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3278": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "PUSH4", + "path": "85", + "value": "0x35567E1A" + }, + "3283": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3284": { + "op": "PUSH1", + "value": "0x44" + }, + "3286": { + "op": "ADD" + }, + "3287": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3289": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3291": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3292": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3293": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP4", + "path": "85" + }, + "3294": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SUB", + "path": "85" + }, + "3295": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3296": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP7", + "path": "85" + }, + "3297": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "GAS", + "path": "85" + }, + "3298": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "STATICCALL", + "path": "85" + }, + "3299": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ISZERO", + "path": "85" + }, + "3300": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3301": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ISZERO", + "path": "85" + }, + "3302": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0xCF1" + }, + "3305": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPI", + "path": "85" + }, + "3306": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3307": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3308": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3309": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATACOPY", + "path": "85" + }, + "3310": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3311": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3312": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "REVERT", + "path": "85" + }, + "3313": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3314": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3315": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3316": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3317": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3318": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3320": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3321": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3322": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3324": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "NOT", + "path": "85" + }, + "3325": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3327": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3328": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3329": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "AND", + "path": "85" + }, + "3330": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3331": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3332": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3333": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3335": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MSTORE", + "path": "85" + }, + "3336": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3337": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3338": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3339": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3340": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0xD15" + }, + "3343": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP2", + "path": "85" + }, + "3344": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3345": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2371" + }, + "3348": { + "fn": "BaseAccount.getNonce", + "jump": "i", + "offset": [ + 1056, + 1095 + ], + "op": "JUMP", + "path": "85" + }, + "3349": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3350": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1049, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3351": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1049, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3352": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "SWAP1", + "path": "85" + }, + "3353": { + "fn": "BaseAccount.getNonce", + "jump": "o", + "offset": [ + 981, + 1102 + ], + "op": "JUMP", + "path": "85" + }, + "3354": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3355": { + "fn": "TokenBoundMech.token", + "offset": [ + 2529, + 2544 + ], + "op": "PUSH0", + "path": "113" + }, + "3356": { + "fn": "TokenBoundMech.token", + "offset": [ + 2546, + 2567 + ], + "op": "PUSH0", + "path": "113" + }, + "3357": { + "fn": "TokenBoundMech.token", + "offset": [ + 2569, + 2584 + ], + "op": "PUSH0", + "path": "113" + }, + "3358": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2628 + ], + "op": "PUSH2", + "path": "113", + "statement": 33, + "value": "0xD25" + }, + "3361": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2626 + ], + "op": "PUSH2", + "path": "113", + "value": "0x1333" + }, + "3364": { + "fn": "TokenBoundMech.token", + "jump": "i", + "offset": [ + 2603, + 2628 + ], + "op": "JUMP", + "path": "113" + }, + "3365": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2628 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3366": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3367": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3368": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3369": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3370": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3371": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3372": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP1", + "path": "113" + }, + "3373": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP2", + "path": "113" + }, + "3374": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP3", + "path": "113" + }, + "3375": { + "fn": "TokenBoundMech.token", + "jump": "o", + "offset": [ + 2491, + 2635 + ], + "op": "JUMP", + "path": "113" + }, + "3376": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3732, + 3935 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3377": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3817, + 3821 + ], + "op": "PUSH0", + "path": "113" + }, + "3378": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3876 + ], + "op": "PUSH2", + "path": "113", + "statement": 34, + "value": "0xD3A" + }, + "3381": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3864, + 3875 + ], + "op": "DUP3", + "path": "113" + }, + "3382": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3863 + ], + "op": "PUSH2", + "path": "113", + "value": "0x133F" + }, + "3385": { + "fn": "TokenBoundMech.supportsInterface", + "jump": "i", + "offset": [ + 3840, + 3876 + ], + "op": "JUMP", + "path": "113" + }, + "3386": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3876 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3387": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "DUP1", + "path": "113" + }, + "3388": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "PUSH2", + "path": "113", + "value": "0x52F" + }, + "3391": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "JUMPI", + "path": "113" + }, + "3392": { + "op": "POP" + }, + "3393": { + "op": "PUSH1", + "value": "0x1" + }, + "3395": { + "op": "PUSH1", + "value": "0x1" + }, + "3397": { + "op": "PUSH1", + "value": "0xE0" + }, + "3399": { + "op": "SHL" + }, + "3400": { + "op": "SUB" + }, + "3401": { + "op": "NOT" + }, + "3402": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "DUP3", + "path": "113" + }, + "3403": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "AND", + "path": "113" + }, + "3404": { + "op": "PUSH4", + "value": "0x6FAFF5F1" + }, + "3409": { + "op": "PUSH1", + "value": "0xE0" + }, + "3411": { + "op": "SHL" + }, + "3412": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "EQ", + "path": "113" + }, + "3413": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3833, + 3928 + ], + "op": "SWAP3", + "path": "113" + }, + "3414": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3732, + 3935 + ], + "op": "SWAP2", + "path": "113" + }, + "3415": { + "op": "POP" + }, + "3416": { + "op": "POP" + }, + "3417": { + "fn": "TokenBoundMech.supportsInterface", + "jump": "o", + "offset": [ + 3732, + 3935 + ], + "op": "JUMP", + "path": "113" + }, + "3418": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2621, + 2871 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3419": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH1", + "path": "101", + "statement": 35, + "value": "0x40" + }, + "3421": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "MLOAD", + "path": "101" + }, + "3422": { + "op": "PUSH4", + "value": "0x94CEFED" + }, + "3427": { + "op": "PUSH1", + "value": "0xE0" + }, + "3429": { + "op": "SHL" + }, + "3430": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP2", + "path": "101" + }, + "3431": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "MSTORE", + "path": "101" + }, + "3432": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2774, + 2785 + ], + "op": "PUSH0", + "path": "101" + }, + "3433": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2774, + 2785 + ], + "op": "SWAP1", + "path": "101" + }, + "3434": { + "op": "PUSH1", + "value": "0x1" + }, + "3436": { + "op": "PUSH1", + "value": "0x1" + }, + "3438": { + "op": "PUSH1", + "value": "0xA0" + }, + "3440": { + "op": "SHL" + }, + "3441": { + "op": "SUB" + }, + "3442": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2817 + ], + "op": "PUSH32", + "path": "101", + "value": "0x0" + }, + "3475": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2822 + ], + "op": "AND", + "path": "101" + }, + "3476": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2822 + ], + "op": "SWAP1", + "path": "101" + }, + "3477": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2822 + ], + "op": "PUSH4", + "path": "101", + "value": "0x94CEFED" + }, + "3482": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2822 + ], + "op": "SWAP1", + "path": "101" + }, + "3483": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH2", + "path": "101", + "value": "0xDB2" + }, + "3486": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "SWAP1", + "path": "101" + }, + "3487": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2823, + 2825 + ], + "op": "DUP11", + "path": "101" + }, + "3488": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2823, + 2825 + ], + "op": "SWAP1", + "path": "101" + }, + "3489": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2827, + 2831 + ], + "op": "DUP11", + "path": "101" + }, + "3490": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2827, + 2831 + ], + "op": "SWAP1", + "path": "101" + }, + "3491": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2827, + 2831 + ], + "op": "DUP11", + "path": "101" + }, + "3492": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2827, + 2831 + ], + "op": "SWAP1", + "path": "101" + }, + "3493": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2833, + 2847 + ], + "op": "DUP11", + "path": "101" + }, + "3494": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2833, + 2847 + ], + "op": "SWAP1", + "path": "101" + }, + "3495": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2833, + 2847 + ], + "op": "DUP11", + "path": "101" + }, + "3496": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2833, + 2847 + ], + "op": "SWAP1", + "path": "101" + }, + "3497": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2849, + 2863 + ], + "op": "DUP11", + "path": "101" + }, + "3498": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2849, + 2863 + ], + "op": "SWAP1", + "path": "101" + }, + "3499": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "3501": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "ADD", + "path": "101" + }, + "3502": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH2", + "path": "101", + "value": "0x23B0" + }, + "3505": { + "fn": "HyperAccountMinterUpgradable._mint", + "jump": "i", + "offset": [ + 2808, + 2864 + ], + "op": "JUMP", + "path": "101" + }, + "3506": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3507": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH1", + "path": "101", + "value": "0x20" + }, + "3509": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH1", + "path": "101", + "value": "0x40" + }, + "3511": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "MLOAD", + "path": "101" + }, + "3512": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP1", + "path": "101" + }, + "3513": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP4", + "path": "101" + }, + "3514": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "SUB", + "path": "101" + }, + "3515": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP2", + "path": "101" + }, + "3516": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH0", + "path": "101" + }, + "3517": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP8", + "path": "101" + }, + "3518": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "GAS", + "path": "101" + }, + "3519": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "CALL", + "path": "101" + }, + "3520": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "ISZERO", + "path": "101" + }, + "3521": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP1", + "path": "101" + }, + "3522": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "ISZERO", + "path": "101" + }, + "3523": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH2", + "path": "101", + "value": "0xDCE" + }, + "3526": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "JUMPI", + "path": "101" + }, + "3527": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "RETURNDATASIZE", + "path": "101" + }, + "3528": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH0", + "path": "101" + }, + "3529": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH0", + "path": "101" + }, + "3530": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "RETURNDATACOPY", + "path": "101" + }, + "3531": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "RETURNDATASIZE", + "path": "101" + }, + "3532": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH0", + "path": "101" + }, + "3533": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "REVERT", + "path": "101" + }, + "3534": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3535": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "POP", + "path": "101" + }, + "3536": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "POP", + "path": "101" + }, + "3537": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "POP", + "path": "101" + }, + "3538": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "POP", + "path": "101" + }, + "3539": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH1", + "path": "101", + "value": "0x40" + }, + "3541": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "MLOAD", + "path": "101" + }, + "3542": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "RETURNDATASIZE", + "path": "101" + }, + "3543": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH1", + "path": "101", + "value": "0x1F" + }, + "3545": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "NOT", + "path": "101" + }, + "3546": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH1", + "path": "101", + "value": "0x1F" + }, + "3548": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP3", + "path": "101" + }, + "3549": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "ADD", + "path": "101" + }, + "3550": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "AND", + "path": "101" + }, + "3551": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP3", + "path": "101" + }, + "3552": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "ADD", + "path": "101" + }, + "3553": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP1", + "path": "101" + }, + "3554": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH1", + "path": "101", + "value": "0x40" + }, + "3556": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "MSTORE", + "path": "101" + }, + "3557": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "POP", + "path": "101" + }, + "3558": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "DUP2", + "path": "101" + }, + "3559": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "ADD", + "path": "101" + }, + "3560": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "SWAP1", + "path": "101" + }, + "3561": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH2", + "path": "101", + "value": "0x544" + }, + "3564": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "SWAP2", + "path": "101" + }, + "3565": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "SWAP1", + "path": "101" + }, + "3566": { + "fn": "HyperAccountMinterUpgradable._mint", + "offset": [ + 2808, + 2864 + ], + "op": "PUSH2", + "path": "101", + "value": "0x2356" + }, + "3569": { + "fn": "HyperAccountMinterUpgradable._mint", + "jump": "i", + "offset": [ + 2808, + 2864 + ], + "op": "JUMP", + "path": "101" + }, + "3570": { + "op": "JUMPDEST" + }, + "3571": { + "op": "PUSH0" + }, + "3572": { + "op": "PUSH0" + }, + "3573": { + "op": "PUSH0" + }, + "3574": { + "op": "PUSH0" + }, + "3575": { + "op": "PUSH2", + "value": "0xE02" + }, + "3578": { + "op": "DUP9" + }, + "3579": { + "op": "DUP9" + }, + "3580": { + "op": "DUP9" + }, + "3581": { + "op": "DUP9" + }, + "3582": { + "op": "PUSH2", + "value": "0x13E0" + }, + "3585": { + "jump": "i", + "op": "JUMP" + }, + "3586": { + "op": "JUMPDEST" + }, + "3587": { + "op": "SWAP3" + }, + "3588": { + "op": "POP" + }, + "3589": { + "op": "SWAP3" + }, + "3590": { + "op": "POP" + }, + "3591": { + "op": "SWAP3" + }, + "3592": { + "op": "POP" + }, + "3593": { + "op": "PUSH2", + "value": "0xE12" + }, + "3596": { + "op": "DUP3" + }, + "3597": { + "op": "DUP3" + }, + "3598": { + "op": "PUSH2", + "value": "0x14A8" + }, + "3601": { + "jump": "i", + "op": "JUMP" + }, + "3602": { + "op": "JUMPDEST" + }, + "3603": { + "op": "POP" + }, + "3604": { + "op": "SWAP1" + }, + "3605": { + "op": "SWAP7" + }, + "3606": { + "op": "SWAP6" + }, + "3607": { + "op": "POP" + }, + "3608": { + "op": "POP" + }, + "3609": { + "op": "POP" + }, + "3610": { + "op": "POP" + }, + "3611": { + "op": "POP" + }, + "3612": { + "op": "POP" + }, + "3613": { + "jump": "o", + "op": "JUMP" + }, + "3614": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 2953, + 3136 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3615": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3040, + 3050 + ], + "op": "CALLER", + "path": "85", + "statement": 36 + }, + "3616": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "3637": { + "branch": 68, + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3040, + 3075 + ], + "op": "EQ", + "path": "85" + }, + "3638": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH2", + "path": "85", + "value": "0xE81" + }, + "3641": { + "branch": 68, + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "JUMPI", + "path": "85" + }, + "3642": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3644": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "MLOAD", + "path": "85" + }, + "3645": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "3649": { + "op": "PUSH1", + "value": "0xE5" + }, + "3651": { + "op": "SHL" + }, + "3652": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "DUP2", + "path": "85" + }, + "3653": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "MSTORE", + "path": "85" + }, + "3654": { + "op": "PUSH1", + "value": "0x20" + }, + "3656": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "3658": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "DUP3", + "path": "85" + }, + "3659": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "ADD", + "path": "85" + }, + "3660": { + "op": "MSTORE" + }, + "3661": { + "op": "PUSH1", + "value": "0x1C" + }, + "3663": { + "op": "PUSH1", + "value": "0x24" + }, + "3665": { + "op": "DUP3" + }, + "3666": { + "op": "ADD" + }, + "3667": { + "op": "MSTORE" + }, + "3668": { + "op": "PUSH32", + "value": "0x6163636F756E743A206E6F742066726F6D20456E747279506F696E7400000000" + }, + "3701": { + "op": "PUSH1", + "value": "0x44" + }, + "3703": { + "op": "DUP3" + }, + "3704": { + "op": "ADD" + }, + "3705": { + "op": "MSTORE" + }, + "3706": { + "op": "PUSH1", + "value": "0x64" + }, + "3708": { + "op": "ADD" + }, + "3709": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH2", + "path": "85", + "value": "0x7D7" + }, + "3712": { + "op": "JUMP" + }, + "3713": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3714": { + "fn": "BaseAccount._requireFromEntryPoint", + "jump": "o", + "offset": [ + 2953, + 3136 + ], + "op": "JUMP", + "path": "85" + }, + "3715": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 2978, + 3594 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3716": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3130, + 3152 + ], + "op": "PUSH0", + "path": "101" + }, + "3717": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3197, + 3198 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "3719": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH2", + "path": "101", + "value": "0xE93" + }, + "3722": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH1", + "path": "101", + "value": "0x60" + }, + "3724": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "DUP6", + "path": "101" + }, + "3725": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "ADD", + "path": "101" + }, + "3726": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3178 + ], + "op": "DUP6", + "path": "101" + }, + "3727": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH2", + "path": "101", + "value": "0x2314" + }, + "3730": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3172, + 3187 + ], + "op": "JUMP", + "path": "101" + }, + "3731": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3732": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3194 + ], + "op": "SWAP1", + "path": "101" + }, + "3733": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3194 + ], + "op": "POP", + "path": "101" + }, + "3734": { + "branch": 78, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3198 + ], + "op": "GT", + "path": "101" + }, + "3735": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "ISZERO", + "path": "101" + }, + "3736": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "PUSH2", + "path": "101", + "value": "0xED6" + }, + "3739": { + "branch": 78, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "JUMPI", + "path": "101" + }, + "3740": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3214, + 3224 + ], + "op": "PUSH0", + "path": "101" + }, + "3741": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3253 + ], + "op": "PUSH2", + "path": "101", + "value": "0xEB1" + }, + "3744": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH2", + "path": "101", + "value": "0xEAC" + }, + "3747": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH1", + "path": "101", + "value": "0x60" + }, + "3749": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "DUP7", + "path": "101" + }, + "3750": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "ADD", + "path": "101" + }, + "3751": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3243 + ], + "op": "DUP7", + "path": "101" + }, + "3752": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH2", + "path": "101", + "value": "0x2314" + }, + "3755": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3237, + 3252 + ], + "op": "JUMP", + "path": "101" + }, + "3756": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3757": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3236 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1560" + }, + "3760": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3227, + 3253 + ], + "op": "JUMP", + "path": "101" + }, + "3761": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3253 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3762": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3214, + 3253 + ], + "op": "SWAP1", + "path": "101" + }, + "3763": { + "op": "POP" + }, + "3764": { + "op": "PUSH4", + "value": "0xF6B31013" + }, + "3769": { + "op": "PUSH1", + "value": "0xE0" + }, + "3771": { + "op": "SHL" + }, + "3772": { + "op": "PUSH1", + "value": "0x1" + }, + "3774": { + "op": "PUSH1", + "value": "0x1" + }, + "3776": { + "op": "PUSH1", + "value": "0xE0" + }, + "3778": { + "op": "SHL" + }, + "3779": { + "op": "SUB" + }, + "3780": { + "op": "NOT" + }, + "3781": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "DUP3", + "path": "101" + }, + "3782": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "AND", + "path": "101" + }, + "3783": { + "branch": 79, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "ADD", + "path": "101" + }, + "3784": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "PUSH2", + "path": "101", + "value": "0xED4" + }, + "3787": { + "branch": 79, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "JUMPI", + "path": "101" + }, + "3788": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "3789": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "SWAP2", + "path": "101", + "statement": 37 + }, + "3790": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "POP", + "path": "101" + }, + "3791": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "POP", + "path": "101" + }, + "3792": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "PUSH2", + "path": "101", + "value": "0x52F" + }, + "3795": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "JUMP", + "path": "101" + }, + "3796": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3797": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3200, + 3442 + ], + "op": "POP", + "path": "101" + }, + "3798": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3799": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3543, + 3587 + ], + "op": "PUSH2", + "path": "101", + "statement": 38, + "value": "0x6F9" + }, + "3802": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3568, + 3574 + ], + "op": "DUP4", + "path": "101" + }, + "3803": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3576, + 3586 + ], + "op": "DUP4", + "path": "101" + }, + "3804": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3543, + 3567 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1577" + }, + "3807": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3543, + 3587 + ], + "op": "JUMP", + "path": "101" + }, + "3808": { + "fn": "Account._validateNonce", + "offset": [ + 1189, + 1508 + ], + "op": "JUMPDEST", + "path": "109" + }, + "3809": { + "op": "PUSH1", + "value": "0x1" + }, + "3811": { + "op": "PUSH1", + "value": "0x1" + }, + "3813": { + "op": "PUSH1", + "value": "0x40" + }, + "3815": { + "op": "SHL" + }, + "3816": { + "op": "SUB" + }, + "3817": { + "fn": "Account._validateNonce", + "offset": [ + 1459, + 1483 + ], + "op": "DUP2", + "path": "109", + "statement": 39 + }, + "3818": { + "branch": 64, + "fn": "Account._validateNonce", + "offset": [ + 1459, + 1483 + ], + "op": "LT", + "path": "109" + }, + "3819": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH2", + "path": "109", + "value": "0xF26" + }, + "3822": { + "branch": 64, + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "JUMPI", + "path": "109" + }, + "3823": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH1", + "path": "109", + "value": "0x40" + }, + "3825": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "MLOAD", + "path": "109" + }, + "3826": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "3830": { + "op": "PUSH1", + "value": "0xE5" + }, + "3832": { + "op": "SHL" + }, + "3833": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "DUP2", + "path": "109" + }, + "3834": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "MSTORE", + "path": "109" + }, + "3835": { + "op": "PUSH1", + "value": "0x20" + }, + "3837": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH1", + "path": "109", + "value": "0x4" + }, + "3839": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "DUP3", + "path": "109" + }, + "3840": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "ADD", + "path": "109" + }, + "3841": { + "op": "MSTORE" + }, + "3842": { + "op": "PUSH1", + "value": "0xD" + }, + "3844": { + "op": "PUSH1", + "value": "0x24" + }, + "3846": { + "op": "DUP3" + }, + "3847": { + "op": "ADD" + }, + "3848": { + "op": "MSTORE" + }, + "3849": { + "op": "PUSH13", + "value": "0x496E76616C6964206E6F6E6365" + }, + "3863": { + "op": "PUSH1", + "value": "0x98" + }, + "3865": { + "op": "SHL" + }, + "3866": { + "op": "PUSH1", + "value": "0x44" + }, + "3868": { + "op": "DUP3" + }, + "3869": { + "op": "ADD" + }, + "3870": { + "op": "MSTORE" + }, + "3871": { + "op": "PUSH1", + "value": "0x64" + }, + "3873": { + "op": "ADD" + }, + "3874": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH2", + "path": "109", + "value": "0x7D7" + }, + "3877": { + "op": "JUMP" + }, + "3878": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "JUMPDEST", + "path": "109" + }, + "3879": { + "fn": "Account._validateNonce", + "offset": [ + 1189, + 1508 + ], + "op": "POP", + "path": "109" + }, + "3880": { + "fn": "Account._validateNonce", + "jump": "o", + "offset": [ + 1189, + 1508 + ], + "op": "JUMP", + "path": "109" + }, + "3881": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5811, + 6161 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3882": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5892, + 5916 + ], + "op": "DUP1", + "path": "85" + }, + "3883": { + "branch": 69, + "fn": "BaseAccount._payPrefund", + "offset": [ + 5892, + 5916 + ], + "op": "ISZERO", + "path": "85" + }, + "3884": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5888, + 6155 + ], + "op": "PUSH2", + "path": "85", + "value": "0xF26" + }, + "3887": { + "branch": 69, + "fn": "BaseAccount._payPrefund", + "offset": [ + 5888, + 6155 + ], + "op": "JUMPI", + "path": "85" + }, + "3888": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3890": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MLOAD", + "path": "85" + }, + "3891": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "PUSH0", + "path": "85" + }, + "3892": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "SWAP1", + "path": "85" + }, + "3893": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "CALLER", + "path": "85" + }, + "3894": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "SWAP1", + "path": "85" + }, + "3895": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "DUP4", + "path": "85" + }, + "3896": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "SWAP1", + "path": "85" + }, + "3897": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "DUP4", + "path": "85" + }, + "3898": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "3899": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "DUP2", + "path": "85" + }, + "3900": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "3901": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "DUP6", + "path": "85" + }, + "3902": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "DUP8", + "path": "85" + }, + "3903": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "GAS", + "path": "85" + }, + "3904": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "CALL", + "path": "85" + }, + "3905": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "SWAP3", + "path": "85" + }, + "3906": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "3907": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "3908": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "3909": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3910": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP1", + "path": "85" + }, + "3911": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH0", + "path": "85" + }, + "3912": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "3913": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "EQ", + "path": "85" + }, + "3914": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH2", + "path": "85", + "value": "0xA69" + }, + "3917": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "JUMPI", + "path": "85" + }, + "3918": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3920": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MLOAD", + "path": "85" + }, + "3921": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "SWAP2", + "path": "85" + }, + "3922": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "3923": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3925": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "NOT", + "path": "85" + }, + "3926": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x3F" + }, + "3928": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3929": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "3930": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "AND", + "path": "85" + }, + "3931": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP3", + "path": "85" + }, + "3932": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "3933": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3935": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MSTORE", + "path": "85" + }, + "3936": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3937": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP3", + "path": "85" + }, + "3938": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MSTORE", + "path": "85" + }, + "3939": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3940": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH0", + "path": "85" + }, + "3941": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3943": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP5", + "path": "85" + }, + "3944": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "3945": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATACOPY", + "path": "85" + }, + "3946": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH2", + "path": "85", + "value": "0xA69" + }, + "3949": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "JUMP", + "path": "85" + }, + "3950": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3142, + 3235 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3951": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3204, + 3228 + ], + "op": "PUSH2", + "path": "85", + "statement": 40, + "value": "0xE81" + }, + "3954": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3204, + 3226 + ], + "op": "PUSH2", + "path": "85", + "value": "0xE1E" + }, + "3957": { + "fn": "BaseAccount._requireForExecute", + "jump": "i", + "offset": [ + 3204, + 3228 + ], + "op": "JUMP", + "path": "85" + }, + "3958": { + "op": "JUMPDEST" + }, + "3959": { + "op": "PUSH0" + }, + "3960": { + "op": "PUSH0" + }, + "3961": { + "op": "PUSH0" + }, + "3962": { + "op": "DUP5" + }, + "3963": { + "op": "MLOAD" + }, + "3964": { + "op": "PUSH1", + "value": "0x20" + }, + "3966": { + "op": "DUP7" + }, + "3967": { + "op": "ADD" + }, + "3968": { + "op": "DUP8" + }, + "3969": { + "op": "DUP10" + }, + "3970": { + "op": "DUP8" + }, + "3971": { + "op": "CALL" + }, + "3972": { + "op": "SWAP6" + }, + "3973": { + "op": "SWAP5" + }, + "3974": { + "op": "POP" + }, + "3975": { + "op": "POP" + }, + "3976": { + "op": "POP" + }, + "3977": { + "op": "POP" + }, + "3978": { + "op": "POP" + }, + "3979": { + "jump": "o", + "op": "JUMP" + }, + "3980": { + "op": "JUMPDEST" + }, + "3981": { + "op": "PUSH2", + "value": "0xE81" + }, + "3984": { + "op": "PUSH2", + "value": "0xF98" + }, + "3987": { + "op": "PUSH0" + }, + "3988": { + "op": "PUSH2", + "value": "0xF9D" + }, + "3991": { + "jump": "i", + "op": "JUMP" + }, + "3992": { + "op": "JUMPDEST" + }, + "3993": { + "op": "PUSH2", + "value": "0x1684" + }, + "3996": { + "jump": "i", + "op": "JUMP" + }, + "3997": { + "op": "JUMPDEST" + }, + "3998": { + "op": "PUSH1", + "value": "0x60" + }, + "4000": { + "op": "RETURNDATASIZE" + }, + "4001": { + "op": "DUP3" + }, + "4002": { + "op": "ISZERO" + }, + "4003": { + "op": "PUSH2", + "value": "0xFB1" + }, + "4006": { + "op": "JUMPI" + }, + "4007": { + "op": "DUP3" + }, + "4008": { + "op": "DUP2" + }, + "4009": { + "op": "GT" + }, + "4010": { + "op": "ISZERO" + }, + "4011": { + "op": "PUSH2", + "value": "0xFB1" + }, + "4014": { + "op": "JUMPI" + }, + "4015": { + "op": "POP" + }, + "4016": { + "op": "DUP2" + }, + "4017": { + "op": "JUMPDEST" + }, + "4018": { + "op": "PUSH1", + "value": "0x40" + }, + "4020": { + "op": "MLOAD" + }, + "4021": { + "op": "PUSH1", + "value": "0x20" + }, + "4023": { + "op": "DUP3" + }, + "4024": { + "op": "ADD" + }, + "4025": { + "op": "DUP2" + }, + "4026": { + "op": "ADD" + }, + "4027": { + "op": "PUSH1", + "value": "0x40" + }, + "4029": { + "op": "MSTORE" + }, + "4030": { + "op": "DUP2" + }, + "4031": { + "op": "DUP2" + }, + "4032": { + "op": "MSTORE" + }, + "4033": { + "op": "DUP2" + }, + "4034": { + "op": "PUSH0" + }, + "4035": { + "op": "PUSH1", + "value": "0x20" + }, + "4037": { + "op": "DUP4" + }, + "4038": { + "op": "ADD" + }, + "4039": { + "op": "RETURNDATACOPY" + }, + "4040": { + "op": "SWAP4" + }, + "4041": { + "op": "SWAP3" + }, + "4042": { + "op": "POP" + }, + "4043": { + "op": "POP" + }, + "4044": { + "op": "POP" + }, + "4045": { + "jump": "o", + "op": "JUMP" + }, + "4046": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4603, + 4915 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4047": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4683, + 4687 + ], + "op": "ADDRESS", + "path": "68", + "statement": 41 + }, + "4048": { + "op": "PUSH1", + "value": "0x1" + }, + "4050": { + "op": "PUSH1", + "value": "0x1" + }, + "4052": { + "op": "PUSH1", + "value": "0xA0" + }, + "4054": { + "op": "SHL" + }, + "4055": { + "op": "SUB" + }, + "4056": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4692, + 4698 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "4089": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "AND", + "path": "68" + }, + "4090": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "EQ", + "path": "68" + }, + "4091": { + "branch": 91, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "DUP1", + "path": "68" + }, + "4092": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1054" + }, + "4095": { + "branch": 91, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "JUMPI", + "path": "68" + }, + "4096": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "POP", + "path": "68" + }, + "4097": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4789, + 4795 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "4130": { + "op": "PUSH1", + "value": "0x1" + }, + "4132": { + "op": "PUSH1", + "value": "0x1" + }, + "4134": { + "op": "PUSH1", + "value": "0xA0" + }, + "4136": { + "op": "SHL" + }, + "4137": { + "op": "SUB" + }, + "4138": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "AND", + "path": "68" + }, + "4139": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4785 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1048" + }, + "4142": { + "op": "PUSH0" + }, + "4143": { + "op": "MLOAD" + }, + "4144": { + "op": "PUSH1", + "value": "0x20" + }, + "4146": { + "op": "PUSH2", + "value": "0x25EF" + }, + "4149": { + "op": "PUSH0" + }, + "4150": { + "op": "CODECOPY" + }, + "4151": { + "op": "PUSH0" + }, + "4152": { + "op": "MLOAD" + }, + "4153": { + "op": "SWAP1" + }, + "4154": { + "op": "PUSH0" + }, + "4155": { + "op": "MSTORE" + }, + "4156": { + "op": "SLOAD" + }, + "4157": { + "op": "PUSH1", + "value": "0x1" + }, + "4159": { + "op": "PUSH1", + "value": "0x1" + }, + "4161": { + "op": "PUSH1", + "value": "0xA0" + }, + "4163": { + "op": "SHL" + }, + "4164": { + "op": "SUB" + }, + "4165": { + "op": "AND" + }, + "4166": { + "op": "SWAP1" + }, + "4167": { + "op": "JUMP" + }, + "4168": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4785 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4169": { + "op": "PUSH1", + "value": "0x1" + }, + "4171": { + "op": "PUSH1", + "value": "0x1" + }, + "4173": { + "op": "PUSH1", + "value": "0xA0" + }, + "4175": { + "op": "SHL" + }, + "4176": { + "op": "SUB" + }, + "4177": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "AND", + "path": "68" + }, + "4178": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "EQ", + "path": "68" + }, + "4179": { + "branch": 92, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "ISZERO", + "path": "68" + }, + "4180": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4181": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "ISZERO", + "path": "68" + }, + "4182": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "PUSH2", + "path": "68", + "value": "0xE81" + }, + "4185": { + "branch": 92, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "JUMPI", + "path": "68" + }, + "4186": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4188": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MLOAD", + "path": "68" + }, + "4189": { + "op": "PUSH4", + "value": "0x703E46DD" + }, + "4194": { + "op": "PUSH1", + "value": "0xE1" + }, + "4196": { + "op": "SHL" + }, + "4197": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "DUP2", + "path": "68" + }, + "4198": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MSTORE", + "path": "68" + }, + "4199": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4201": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "ADD", + "path": "68" + }, + "4202": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4204": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MLOAD", + "path": "68" + }, + "4205": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "DUP1", + "path": "68" + }, + "4206": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SWAP2", + "path": "68" + }, + "4207": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SUB", + "path": "68" + }, + "4208": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SWAP1", + "path": "68" + }, + "4209": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "REVERT", + "path": "68" + }, + "4210": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 2877, + 2972 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4211": { + "offset": [ + 1240, + 1262 + ], + "op": "PUSH2", + "path": "111", + "value": "0x107B" + }, + "4214": { + "offset": [ + 1251, + 1261 + ], + "op": "CALLER", + "path": "111" + }, + "4215": { + "offset": [ + 1240, + 1250 + ], + "op": "PUSH2", + "path": "111", + "value": "0x87B" + }, + "4218": { + "jump": "i", + "offset": [ + 1240, + 1262 + ], + "op": "JUMP", + "path": "111" + }, + "4219": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1240, + 1262 + ], + "op": "JUMPDEST", + "path": "111" + }, + "4220": { + "offset": [ + 1239, + 1262 + ], + "op": "ISZERO", + "path": "111" + }, + "4221": { + "offset": [ + 1239, + 1301 + ], + "op": "DUP1", + "path": "111" + }, + "4222": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1239, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "4223": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1239, + 1301 + ], + "op": "PUSH2", + "path": "111", + "value": "0x109C" + }, + "4226": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPI", + "path": "111" + }, + "4227": { + "op": "POP" + }, + "4228": { + "offset": [ + 1266, + 1276 + ], + "op": "CALLER", + "path": "111" + }, + "4229": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "4250": { + "offset": [ + 1266, + 1301 + ], + "op": "EQ", + "path": "111" + }, + "4251": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1266, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "4252": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPDEST", + "path": "111" + }, + "4253": { + "offset": [ + 1235, + 1360 + ], + "op": "ISZERO", + "path": "111" + }, + "4254": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1235, + 1360 + ], + "op": "PUSH2", + "path": "111", + "value": "0xF26" + }, + "4257": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPI", + "path": "111" + }, + "4258": { + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "4260": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "4261": { + "op": "PUSH4", + "value": "0x47802953" + }, + "4266": { + "op": "PUSH1", + "value": "0xE1" + }, + "4268": { + "op": "SHL" + }, + "4269": { + "offset": [ + 1324, + 1349 + ], + "op": "DUP2", + "path": "111" + }, + "4270": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MSTORE", + "path": "111" + }, + "4271": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "4273": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "ADD", + "path": "111" + }, + "4274": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "4276": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "4277": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "DUP1", + "path": "111" + }, + "4278": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP2", + "path": "111" + }, + "4279": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SUB", + "path": "111" + }, + "4280": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP1", + "path": "111" + }, + "4281": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "REVERT", + "path": "111" + }, + "4282": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4283": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6174, + 6191 + ], + "op": "DUP2", + "path": "68" + }, + "4284": { + "op": "PUSH1", + "value": "0x1" + }, + "4286": { + "op": "PUSH1", + "value": "0x1" + }, + "4288": { + "op": "PUSH1", + "value": "0xA0" + }, + "4290": { + "op": "SHL" + }, + "4291": { + "op": "SUB" + }, + "4292": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6206 + ], + "op": "AND", + "path": "68" + }, + "4293": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6206 + ], + "op": "PUSH4", + "path": "68", + "value": "0x52D1902D" + }, + "4298": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4300": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4301": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4302": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH4", + "path": "68", + "value": "0xFFFFFFFF" + }, + "4307": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "AND", + "path": "68" + }, + "4308": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0xE0" + }, + "4310": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SHL", + "path": "68" + }, + "4311": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4312": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MSTORE", + "path": "68" + }, + "4313": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4315": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4316": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x20" + }, + "4318": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4320": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4321": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4322": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP4", + "path": "68" + }, + "4323": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SUB", + "path": "68" + }, + "4324": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4325": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP7", + "path": "68" + }, + "4326": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "GAS", + "path": "68" + }, + "4327": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "STATICCALL", + "path": "68" + }, + "4328": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP3", + "path": "68" + }, + "4329": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4330": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4331": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4332": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4333": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ISZERO", + "path": "68" + }, + "4334": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1114" + }, + "4337": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPI", + "path": "68" + }, + "4338": { + "op": "POP" + }, + "4339": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4341": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4342": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4343": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x1F" + }, + "4345": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "RETURNDATASIZE", + "path": "68" + }, + "4346": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4347": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4348": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4349": { + "op": "PUSH1", + "value": "0x1F" + }, + "4351": { + "op": "NOT" + }, + "4352": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "AND", + "path": "68" + }, + "4353": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP3", + "path": "68" + }, + "4354": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4355": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4356": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP3", + "path": "68" + }, + "4357": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MSTORE", + "path": "68" + }, + "4358": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1111" + }, + "4361": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP2", + "path": "68" + }, + "4362": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4363": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4364": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4365": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x2371" + }, + "4368": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "i", + "offset": [ + 6156, + 6208 + ], + "op": "JUMP", + "path": "68" + }, + "4369": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4370": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x1" + }, + "4372": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4373": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "PUSH2", + "path": "68", + "value": "0x113C" + }, + "4376": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "JUMPI", + "path": "68" + }, + "4377": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4379": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "MLOAD", + "path": "68" + }, + "4380": { + "op": "PUSH4", + "value": "0x4C9C8CE3" + }, + "4385": { + "op": "PUSH1", + "value": "0xE0" + }, + "4387": { + "op": "SHL" + }, + "4388": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "DUP2", + "path": "68" + }, + "4389": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "MSTORE", + "path": "68" + }, + "4390": { + "op": "PUSH1", + "value": "0x1" + }, + "4392": { + "op": "PUSH1", + "value": "0x1" + }, + "4394": { + "op": "PUSH1", + "value": "0xA0" + }, + "4396": { + "op": "SHL" + }, + "4397": { + "op": "SUB" + }, + "4398": { + "op": "DUP4" + }, + "4399": { + "op": "AND" + }, + "4400": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4402": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "DUP3", + "path": "68" + }, + "4403": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "ADD", + "path": "68" + }, + "4404": { + "op": "MSTORE" + }, + "4405": { + "op": "PUSH1", + "value": "0x24" + }, + "4407": { + "op": "ADD" + }, + "4408": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH2", + "path": "68", + "value": "0x7D7" + }, + "4411": { + "op": "JUMP" + }, + "4412": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4413": { + "op": "PUSH0" + }, + "4414": { + "op": "MLOAD" + }, + "4415": { + "op": "PUSH1", + "value": "0x20" + }, + "4417": { + "op": "PUSH2", + "value": "0x25EF" + }, + "4420": { + "op": "PUSH0" + }, + "4421": { + "op": "CODECOPY" + }, + "4422": { + "op": "PUSH0" + }, + "4423": { + "op": "MLOAD" + }, + "4424": { + "op": "SWAP1" + }, + "4425": { + "op": "PUSH0" + }, + "4426": { + "op": "MSTORE" + }, + "4427": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6250, + 6290 + ], + "op": "DUP2", + "path": "68", + "statement": 42 + }, + "4428": { + "branch": 93, + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6250, + 6290 + ], + "op": "EQ", + "path": "68" + }, + "4429": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "PUSH2", + "path": "68", + "value": "0x116C" + }, + "4432": { + "branch": 93, + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "JUMPI", + "path": "68" + }, + "4433": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4435": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "MLOAD", + "path": "68" + }, + "4436": { + "op": "PUSH4", + "value": "0x2A875269" + }, + "4441": { + "op": "PUSH1", + "value": "0xE2" + }, + "4443": { + "op": "SHL" + }, + "4444": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "DUP2", + "path": "68" + }, + "4445": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "MSTORE", + "path": "68" + }, + "4446": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4448": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "DUP2", + "path": "68" + }, + "4449": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "ADD", + "path": "68" + }, + "4450": { + "op": "DUP3" + }, + "4451": { + "op": "SWAP1" + }, + "4452": { + "op": "MSTORE" + }, + "4453": { + "op": "PUSH1", + "value": "0x24" + }, + "4455": { + "op": "ADD" + }, + "4456": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH2", + "path": "68", + "value": "0x7D7" + }, + "4459": { + "op": "JUMP" + }, + "4460": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4461": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6433 + ], + "op": "PUSH2", + "path": "68", + "statement": 43, + "value": "0x1176" + }, + "4464": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6409, + 6426 + ], + "op": "DUP4", + "path": "68" + }, + "4465": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6428, + 6432 + ], + "op": "DUP4", + "path": "68" + }, + "4466": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6408 + ], + "op": "PUSH2", + "path": "68", + "value": "0x168C" + }, + "4469": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "i", + "offset": [ + 6379, + 6433 + ], + "op": "JUMP", + "path": "68" + }, + "4470": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6433 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4471": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6209, + 6444 + ], + "op": "POP", + "path": "68" + }, + "4472": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "POP", + "path": "68" + }, + "4473": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "POP", + "path": "68" + }, + "4474": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "o", + "offset": [ + 6057, + 6595 + ], + "op": "JUMP", + "path": "68" + }, + "4475": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "JUMPDEST", + "path": "113" + }, + "4476": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "PUSH32", + "path": "113", + "value": "0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800" + }, + "4509": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "DUP1", + "path": "113", + "statement": 44 + }, + "4510": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SLOAD", + "path": "113" + }, + "4511": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "PUSH0", + "path": "113" + }, + "4512": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "SWAP2", + "path": "113" + }, + "4513": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3439, + 3462 + ], + "op": "PUSH1", + "path": "113", + "value": "0x60" + }, + "4515": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3439, + 3462 + ], + "op": "SWAP2", + "path": "113" + }, + "4516": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "DUP2", + "path": "113" + }, + "4517": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "DUP5", + "path": "113" + }, + "4518": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "PUSH2", + "path": "113", + "value": "0x11AE" + }, + "4521": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "DUP4", + "path": "113" + }, + "4522": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2403" + }, + "4525": { + "fn": "TokenBoundMech._exec", + "jump": "i", + "offset": [ + 3601, + 3617 + ], + "op": "JUMP", + "path": "113" + }, + "4526": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "JUMPDEST", + "path": "113" + }, + "4527": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SWAP2", + "path": "113" + }, + "4528": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SWAP1", + "path": "113" + }, + "4529": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "POP", + "path": "113" + }, + "4530": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SSTORE", + "path": "113" + }, + "4531": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "POP", + "path": "113" + }, + "4532": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3719 + ], + "op": "PUSH2", + "path": "113", + "statement": 45, + "value": "0x11C1" + }, + "4535": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3685, + 3687 + ], + "op": "DUP10", + "path": "113" + }, + "4536": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3689, + 3694 + ], + "op": "DUP10", + "path": "113" + }, + "4537": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3696, + 3700 + ], + "op": "DUP10", + "path": "113" + }, + "4538": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3696, + 3700 + ], + "op": "DUP10", + "path": "113" + }, + "4539": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3702, + 3711 + ], + "op": "DUP10", + "path": "113" + }, + "4540": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3713, + 3718 + ], + "op": "DUP10", + "path": "113" + }, + "4541": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3684 + ], + "op": "PUSH2", + "path": "113", + "value": "0x16E1" + }, + "4544": { + "fn": "TokenBoundMech._exec", + "jump": "i", + "offset": [ + 3673, + 3719 + ], + "op": "JUMP", + "path": "113" + }, + "4545": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3719 + ], + "op": "JUMPDEST", + "path": "113" + }, + "4546": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "SWAP3", + "path": "113" + }, + "4547": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "4548": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "SWAP3", + "path": "113" + }, + "4549": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "4550": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "4551": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "JUMPDEST", + "path": "113" + }, + "4552": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP7", + "path": "113" + }, + "4553": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "4554": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP7", + "path": "113" + }, + "4555": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP5", + "path": "113" + }, + "4556": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "4557": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "4558": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "4559": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "4560": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "4561": { + "fn": "TokenBoundMech._exec", + "jump": "o", + "offset": [ + 3263, + 3726 + ], + "op": "JUMP", + "path": "113" + }, + "4562": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5032, + 5245 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4563": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5106, + 5110 + ], + "op": "ADDRESS", + "path": "68", + "statement": 46 + }, + "4564": { + "op": "PUSH1", + "value": "0x1" + }, + "4566": { + "op": "PUSH1", + "value": "0x1" + }, + "4568": { + "op": "PUSH1", + "value": "0xA0" + }, + "4570": { + "op": "SHL" + }, + "4571": { + "op": "SUB" + }, + "4572": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5115, + 5121 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "4605": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5098, + 5121 + ], + "op": "AND", + "path": "68" + }, + "4606": { + "branch": 94, + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5098, + 5121 + ], + "op": "EQ", + "path": "68" + }, + "4607": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5094, + 5239 + ], + "op": "PUSH2", + "path": "68", + "value": "0xE81" + }, + "4610": { + "branch": 94, + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5094, + 5239 + ], + "op": "JUMPI", + "path": "68" + }, + "4611": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4613": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MLOAD", + "path": "68" + }, + "4614": { + "op": "PUSH4", + "value": "0x703E46DD" + }, + "4619": { + "op": "PUSH1", + "value": "0xE1" + }, + "4621": { + "op": "SHL" + }, + "4622": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "DUP2", + "path": "68" + }, + "4623": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MSTORE", + "path": "68" + }, + "4624": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4626": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "ADD", + "path": "68" + }, + "4627": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4629": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MLOAD", + "path": "68" + }, + "4630": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "DUP1", + "path": "68" + }, + "4631": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SWAP2", + "path": "68" + }, + "4632": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SUB", + "path": "68" + }, + "4633": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SWAP1", + "path": "68" + }, + "4634": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "REVERT", + "path": "68" + }, + "4635": { + "fn": "UUPSUpgradeable.__UUPSUpgradeable_init", + "offset": [ + 2970, + 3037 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4636": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0xE81" + }, + "4639": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1838" + }, + "4642": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "4643": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3446, + 3593 + ], + "op": "JUMPDEST", + "path": "75" + }, + "4644": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0x122B" + }, + "4647": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1838" + }, + "4650": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "4651": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 6931, + 6951 + ], + "op": "JUMPDEST", + "path": "67" + }, + "4652": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3548, + 3586 + ], + "op": "PUSH2", + "path": "75", + "statement": 47, + "value": "0x80B" + }, + "4655": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3572, + 3576 + ], + "op": "DUP3", + "path": "75" + }, + "4656": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3578, + 3585 + ], + "op": "DUP3", + "path": "75" + }, + "4657": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3548, + 3571 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1881" + }, + "4660": { + "fn": "EIP712Upgradeable.__EIP712_init", + "jump": "i", + "offset": [ + 3548, + 3586 + ], + "op": "JUMP", + "path": "75" + }, + "4661": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6300, + 6455 + ], + "op": "JUMPDEST", + "path": "75" + }, + "4662": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6441, + 6448 + ], + "op": "PUSH32", + "path": "75", + "statement": 48, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102" + }, + "4695": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4696": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "4697": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6354, + 6367 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "4699": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6354, + 6367 + ], + "op": "SWAP2", + "path": "75" + }, + "4700": { + "op": "PUSH0" + }, + "4701": { + "op": "MLOAD" + }, + "4702": { + "op": "PUSH1", + "value": "0x20" + }, + "4704": { + "op": "PUSH2", + "value": "0x25CF" + }, + "4707": { + "op": "PUSH0" + }, + "4708": { + "op": "CODECOPY" + }, + "4709": { + "op": "PUSH0" + }, + "4710": { + "op": "MLOAD" + }, + "4711": { + "op": "SWAP1" + }, + "4712": { + "op": "PUSH0" + }, + "4713": { + "op": "MSTORE" + }, + "4714": { + "fn": "EIP712Upgradeable._getEIP712Storage", + "offset": [ + 2839, + 2860 + ], + "op": "SWAP2", + "path": "75" + }, + "4715": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1273" + }, + "4718": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4719": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2427" + }, + "4722": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "i", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "4723": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "4724": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4725": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "4727": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4728": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "4730": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4731": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "4732": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DIV", + "path": "75" + }, + "4733": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MUL", + "path": "75" + }, + "4734": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "4736": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4737": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "4739": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MLOAD", + "path": "75" + }, + "4740": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4741": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "4742": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4743": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "4745": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "4746": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4747": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP3", + "path": "75" + }, + "4748": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "4749": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4750": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "4751": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "4752": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "4753": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "4755": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4756": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "4757": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4758": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "4759": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x129F" + }, + "4762": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4763": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2427" + }, + "4766": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "i", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "4767": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "4768": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4769": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ISZERO", + "path": "75" + }, + "4770": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x12EA" + }, + "4773": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "4774": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4775": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "4777": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "LT", + "path": "75" + }, + "4778": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x12C1" + }, + "4781": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "4782": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x100" + }, + "4785": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4786": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "4787": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "4788": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DIV", + "path": "75" + }, + "4789": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MUL", + "path": "75" + }, + "4790": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "4791": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "4792": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "4793": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "4795": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4796": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "4797": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x12EA" + }, + "4800": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "4801": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "4802": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "4803": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4804": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "4805": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4806": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH0", + "path": "75" + }, + "4807": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "4808": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "4810": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH0", + "path": "75" + }, + "4811": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "KECCAK256", + "path": "75" + }, + "4812": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4813": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "4814": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "4815": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "4816": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "4817": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "4818": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4819": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1" + }, + "4821": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4822": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4823": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "4825": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4826": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "4827": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "4828": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "GT", + "path": "75" + }, + "4829": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x12CD" + }, + "4832": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "4833": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "4834": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "4835": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SUB", + "path": "75" + }, + "4836": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "4838": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "AND", + "path": "75" + }, + "4839": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "4840": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "4841": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "4842": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "4843": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "4844": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "4845": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "4846": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "4847": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "4848": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "4849": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "4850": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "4851": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6300, + 6455 + ], + "op": "SWAP1", + "path": "75" + }, + "4852": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "o", + "offset": [ + 6300, + 6455 + ], + "op": "JUMP", + "path": "75" + }, + "4853": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6682, + 6843 + ], + "op": "JUMPDEST", + "path": "75" + }, + "4854": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6826, + 6836 + ], + "op": "PUSH32", + "path": "75", + "statement": 49, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103" + }, + "4887": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "DUP1", + "path": "75" + }, + "4888": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "SLOAD", + "path": "75" + }, + "4889": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6739, + 6752 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "4891": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6739, + 6752 + ], + "op": "SWAP2", + "path": "75" + }, + "4892": { + "op": "PUSH0" + }, + "4893": { + "op": "MLOAD" + }, + "4894": { + "op": "PUSH1", + "value": "0x20" + }, + "4896": { + "op": "PUSH2", + "value": "0x25CF" + }, + "4899": { + "op": "PUSH0" + }, + "4900": { + "op": "CODECOPY" + }, + "4901": { + "op": "PUSH0" + }, + "4902": { + "op": "MLOAD" + }, + "4903": { + "op": "SWAP1" + }, + "4904": { + "op": "PUSH0" + }, + "4905": { + "op": "MSTORE" + }, + "4906": { + "fn": "EIP712Upgradeable._getEIP712Storage", + "offset": [ + 2839, + 2860 + ], + "op": "SWAP2", + "path": "75" + }, + "4907": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1273" + }, + "4910": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "SWAP1", + "path": "75" + }, + "4911": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2427" + }, + "4914": { + "fn": "EIP712Upgradeable._EIP712Version", + "jump": "i", + "offset": [ + 6819, + 6836 + ], + "op": "JUMP", + "path": "75" + }, + "4915": { + "op": "JUMPDEST" + }, + "4916": { + "op": "PUSH0" + }, + "4917": { + "op": "PUSH0" + }, + "4918": { + "op": "PUSH0" + }, + "4919": { + "op": "PUSH2", + "value": "0xD25" + }, + "4922": { + "op": "ADDRESS" + }, + "4923": { + "op": "PUSH2", + "value": "0x18E0" + }, + "4926": { + "jump": "i", + "op": "JUMP" + }, + "4927": { + "fn": "Mech.supportsInterface", + "offset": [ + 7049, + 7459 + ], + "op": "JUMPDEST", + "path": "111" + }, + "4928": { + "fn": "Mech.supportsInterface", + "offset": [ + 7125, + 7129 + ], + "op": "PUSH0", + "path": "111" + }, + "4929": { + "op": "PUSH1", + "value": "0x1" + }, + "4931": { + "op": "PUSH1", + "value": "0x1" + }, + "4933": { + "op": "PUSH1", + "value": "0xE0" + }, + "4935": { + "op": "SHL" + }, + "4936": { + "op": "SUB" + }, + "4937": { + "op": "NOT" + }, + "4938": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "DUP3", + "path": "111", + "statement": 50 + }, + "4939": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "AND", + "path": "111" + }, + "4940": { + "op": "PUSH4", + "value": "0x3CE4A3E9" + }, + "4945": { + "op": "PUSH1", + "value": "0xE0" + }, + "4947": { + "op": "SHL" + }, + "4948": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "EQ", + "path": "111" + }, + "4949": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "DUP1", + "path": "111" + }, + "4950": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "PUSH2", + "path": "111", + "value": "0x136F" + }, + "4953": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "JUMPI", + "path": "111" + }, + "4954": { + "op": "POP" + }, + "4955": { + "op": "PUSH1", + "value": "0x1" + }, + "4957": { + "op": "PUSH1", + "value": "0x1" + }, + "4959": { + "op": "PUSH1", + "value": "0xE0" + }, + "4961": { + "op": "SHL" + }, + "4962": { + "op": "SUB" + }, + "4963": { + "op": "NOT" + }, + "4964": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "DUP3", + "path": "111" + }, + "4965": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "AND", + "path": "111" + }, + "4966": { + "op": "PUSH4", + "value": "0x1FFC9A7" + }, + "4971": { + "op": "PUSH1", + "value": "0xE0" + }, + "4973": { + "op": "SHL" + }, + "4974": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "EQ", + "path": "111" + }, + "4975": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "JUMPDEST", + "path": "111" + }, + "4976": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "DUP1", + "path": "111" + }, + "4977": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "PUSH2", + "path": "111", + "value": "0x138A" + }, + "4980": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "JUMPI", + "path": "111" + }, + "4981": { + "op": "POP" + }, + "4982": { + "op": "PUSH1", + "value": "0x1" + }, + "4984": { + "op": "PUSH1", + "value": "0x1" + }, + "4986": { + "op": "PUSH1", + "value": "0xE0" + }, + "4988": { + "op": "SHL" + }, + "4989": { + "op": "SUB" + }, + "4990": { + "op": "NOT" + }, + "4991": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "DUP3", + "path": "111" + }, + "4992": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "AND", + "path": "111" + }, + "4993": { + "op": "PUSH4", + "value": "0x6608BDF" + }, + "4998": { + "op": "PUSH1", + "value": "0xE2" + }, + "5000": { + "op": "SHL" + }, + "5001": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "EQ", + "path": "111" + }, + "5002": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "JUMPDEST", + "path": "111" + }, + "5003": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "DUP1", + "path": "111" + }, + "5004": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "PUSH2", + "path": "111", + "value": "0x13A5" + }, + "5007": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "JUMPI", + "path": "111" + }, + "5008": { + "op": "POP" + }, + "5009": { + "op": "PUSH1", + "value": "0x1" + }, + "5011": { + "op": "PUSH1", + "value": "0x1" + }, + "5013": { + "op": "PUSH1", + "value": "0xE0" + }, + "5015": { + "op": "SHL" + }, + "5016": { + "op": "SUB" + }, + "5017": { + "op": "NOT" + }, + "5018": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "DUP3", + "path": "111" + }, + "5019": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "AND", + "path": "111" + }, + "5020": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "5025": { + "op": "PUSH1", + "value": "0xE1" + }, + "5027": { + "op": "SHL" + }, + "5028": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "EQ", + "path": "111" + }, + "5029": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "JUMPDEST", + "path": "111" + }, + "5030": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "DUP1", + "path": "111" + }, + "5031": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "PUSH2", + "path": "111", + "value": "0x13C0" + }, + "5034": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "JUMPI", + "path": "111" + }, + "5035": { + "op": "POP" + }, + "5036": { + "op": "PUSH1", + "value": "0x1" + }, + "5038": { + "op": "PUSH1", + "value": "0x1" + }, + "5040": { + "op": "PUSH1", + "value": "0xE0" + }, + "5042": { + "op": "SHL" + }, + "5043": { + "op": "SUB" + }, + "5044": { + "op": "NOT" + }, + "5045": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "DUP3", + "path": "111" + }, + "5046": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "AND", + "path": "111" + }, + "5047": { + "op": "PUSH4", + "value": "0x2711897" + }, + "5052": { + "op": "PUSH1", + "value": "0xE5" + }, + "5054": { + "op": "SHL" + }, + "5055": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "EQ", + "path": "111" + }, + "5056": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "JUMPDEST", + "path": "111" + }, + "5057": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "DUP1", + "path": "111" + }, + "5058": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "PUSH2", + "path": "111", + "value": "0x52F" + }, + "5061": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "JUMPI", + "path": "111" + }, + "5062": { + "op": "POP" + }, + "5063": { + "op": "PUSH1", + "value": "0x1" + }, + "5065": { + "op": "PUSH1", + "value": "0x1" + }, + "5067": { + "op": "PUSH1", + "value": "0xE0" + }, + "5069": { + "op": "SHL" + }, + "5070": { + "op": "SUB" + }, + "5071": { + "op": "NOT" + }, + "5072": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "DUP3", + "path": "111" + }, + "5073": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "AND", + "path": "111" + }, + "5074": { + "op": "PUSH4", + "value": "0x51945447" + }, + "5079": { + "op": "PUSH1", + "value": "0xE0" + }, + "5081": { + "op": "SHL" + }, + "5082": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "EQ", + "path": "111" + }, + "5083": { + "fn": "Mech.supportsInterface", + "offset": [ + 7141, + 7452 + ], + "op": "SWAP3", + "path": "111" + }, + "5084": { + "fn": "Mech.supportsInterface", + "offset": [ + 7049, + 7459 + ], + "op": "SWAP2", + "path": "111" + }, + "5085": { + "op": "POP" + }, + "5086": { + "op": "POP" + }, + "5087": { + "fn": "Mech.supportsInterface", + "jump": "o", + "offset": [ + 7049, + 7459 + ], + "op": "JUMP", + "path": "111" + }, + "5088": { + "op": "JUMPDEST" + }, + "5089": { + "op": "PUSH0" + }, + "5090": { + "op": "DUP1" + }, + "5091": { + "op": "DUP1" + }, + "5092": { + "op": "PUSH32", + "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" + }, + "5125": { + "op": "DUP5" + }, + "5126": { + "op": "GT" + }, + "5127": { + "op": "ISZERO" + }, + "5128": { + "op": "PUSH2", + "value": "0x1419" + }, + "5131": { + "op": "JUMPI" + }, + "5132": { + "op": "POP" + }, + "5133": { + "op": "PUSH0" + }, + "5134": { + "op": "SWAP2" + }, + "5135": { + "op": "POP" + }, + "5136": { + "op": "PUSH1", + "value": "0x3" + }, + "5138": { + "op": "SWAP1" + }, + "5139": { + "op": "POP" + }, + "5140": { + "op": "DUP3" + }, + "5141": { + "op": "PUSH2", + "value": "0x149E" + }, + "5144": { + "op": "JUMP" + }, + "5145": { + "op": "JUMPDEST" + }, + "5146": { + "op": "PUSH1", + "value": "0x40" + }, + "5148": { + "op": "DUP1" + }, + "5149": { + "op": "MLOAD" + }, + "5150": { + "op": "PUSH0" + }, + "5151": { + "op": "DUP1" + }, + "5152": { + "op": "DUP3" + }, + "5153": { + "op": "MSTORE" + }, + "5154": { + "op": "PUSH1", + "value": "0x20" + }, + "5156": { + "op": "DUP3" + }, + "5157": { + "op": "ADD" + }, + "5158": { + "op": "DUP1" + }, + "5159": { + "op": "DUP5" + }, + "5160": { + "op": "MSTORE" + }, + "5161": { + "op": "DUP11" + }, + "5162": { + "op": "SWAP1" + }, + "5163": { + "op": "MSTORE" + }, + "5164": { + "op": "PUSH1", + "value": "0xFF" + }, + "5166": { + "op": "DUP10" + }, + "5167": { + "op": "AND" + }, + "5168": { + "op": "SWAP3" + }, + "5169": { + "op": "DUP3" + }, + "5170": { + "op": "ADD" + }, + "5171": { + "op": "SWAP3" + }, + "5172": { + "op": "SWAP1" + }, + "5173": { + "op": "SWAP3" + }, + "5174": { + "op": "MSTORE" + }, + "5175": { + "op": "PUSH1", + "value": "0x60" + }, + "5177": { + "op": "DUP2" + }, + "5178": { + "op": "ADD" + }, + "5179": { + "op": "DUP8" + }, + "5180": { + "op": "SWAP1" + }, + "5181": { + "op": "MSTORE" + }, + "5182": { + "op": "PUSH1", + "value": "0x80" + }, + "5184": { + "op": "DUP2" + }, + "5185": { + "op": "ADD" + }, + "5186": { + "op": "DUP7" + }, + "5187": { + "op": "SWAP1" + }, + "5188": { + "op": "MSTORE" + }, + "5189": { + "op": "PUSH1", + "value": "0x1" + }, + "5191": { + "op": "SWAP1" + }, + "5192": { + "op": "PUSH1", + "value": "0xA0" + }, + "5194": { + "op": "ADD" + }, + "5195": { + "op": "PUSH1", + "value": "0x20" + }, + "5197": { + "op": "PUSH1", + "value": "0x40" + }, + "5199": { + "op": "MLOAD" + }, + "5200": { + "op": "PUSH1", + "value": "0x20" + }, + "5202": { + "op": "DUP2" + }, + "5203": { + "op": "SUB" + }, + "5204": { + "op": "SWAP1" + }, + "5205": { + "op": "DUP1" + }, + "5206": { + "op": "DUP5" + }, + "5207": { + "op": "SUB" + }, + "5208": { + "op": "SWAP1" + }, + "5209": { + "op": "DUP6" + }, + "5210": { + "op": "GAS" + }, + "5211": { + "op": "STATICCALL" + }, + "5212": { + "op": "ISZERO" + }, + "5213": { + "op": "DUP1" + }, + "5214": { + "op": "ISZERO" + }, + "5215": { + "op": "PUSH2", + "value": "0x146A" + }, + "5218": { + "op": "JUMPI" + }, + "5219": { + "op": "RETURNDATASIZE" + }, + "5220": { + "op": "PUSH0" + }, + "5221": { + "op": "PUSH0" + }, + "5222": { + "op": "RETURNDATACOPY" + }, + "5223": { + "op": "RETURNDATASIZE" + }, + "5224": { + "op": "PUSH0" + }, + "5225": { + "op": "REVERT" + }, + "5226": { + "op": "JUMPDEST" + }, + "5227": { + "op": "POP" + }, + "5228": { + "op": "POP" + }, + "5229": { + "op": "PUSH1", + "value": "0x40" + }, + "5231": { + "op": "MLOAD" + }, + "5232": { + "op": "PUSH1", + "value": "0x1F" + }, + "5234": { + "op": "NOT" + }, + "5235": { + "op": "ADD" + }, + "5236": { + "op": "MLOAD" + }, + "5237": { + "op": "SWAP2" + }, + "5238": { + "op": "POP" + }, + "5239": { + "op": "POP" + }, + "5240": { + "op": "PUSH1", + "value": "0x1" + }, + "5242": { + "op": "PUSH1", + "value": "0x1" + }, + "5244": { + "op": "PUSH1", + "value": "0xA0" + }, + "5246": { + "op": "SHL" + }, + "5247": { + "op": "SUB" + }, + "5248": { + "op": "DUP2" + }, + "5249": { + "op": "AND" + }, + "5250": { + "op": "PUSH2", + "value": "0x1495" + }, + "5253": { + "op": "JUMPI" + }, + "5254": { + "op": "POP" + }, + "5255": { + "op": "PUSH0" + }, + "5256": { + "op": "SWAP3" + }, + "5257": { + "op": "POP" + }, + "5258": { + "op": "PUSH1", + "value": "0x1" + }, + "5260": { + "op": "SWAP2" + }, + "5261": { + "op": "POP" + }, + "5262": { + "op": "DUP3" + }, + "5263": { + "op": "SWAP1" + }, + "5264": { + "op": "POP" + }, + "5265": { + "op": "PUSH2", + "value": "0x149E" + }, + "5268": { + "op": "JUMP" + }, + "5269": { + "op": "JUMPDEST" + }, + "5270": { + "op": "SWAP3" + }, + "5271": { + "op": "POP" + }, + "5272": { + "op": "PUSH0" + }, + "5273": { + "op": "SWAP2" + }, + "5274": { + "op": "POP" + }, + "5275": { + "op": "DUP2" + }, + "5276": { + "op": "SWAP1" + }, + "5277": { + "op": "POP" + }, + "5278": { + "op": "JUMPDEST" + }, + "5279": { + "op": "SWAP5" + }, + "5280": { + "op": "POP" + }, + "5281": { + "op": "SWAP5" + }, + "5282": { + "op": "POP" + }, + "5283": { + "op": "SWAP5" + }, + "5284": { + "op": "SWAP2" + }, + "5285": { + "op": "POP" + }, + "5286": { + "op": "POP" + }, + "5287": { + "jump": "o", + "op": "JUMP" + }, + "5288": { + "op": "JUMPDEST" + }, + "5289": { + "op": "PUSH0" + }, + "5290": { + "op": "DUP3" + }, + "5291": { + "op": "PUSH1", + "value": "0x3" + }, + "5293": { + "op": "DUP2" + }, + "5294": { + "op": "GT" + }, + "5295": { + "op": "ISZERO" + }, + "5296": { + "op": "PUSH2", + "value": "0x14BB" + }, + "5299": { + "op": "JUMPI" + }, + "5300": { + "op": "PUSH2", + "value": "0x14BB" + }, + "5303": { + "op": "PUSH2", + "value": "0x245F" + }, + "5306": { + "jump": "i", + "op": "JUMP" + }, + "5307": { + "op": "JUMPDEST" + }, + "5308": { + "op": "SUB" + }, + "5309": { + "op": "PUSH2", + "value": "0x14C4" + }, + "5312": { + "op": "JUMPI" + }, + "5313": { + "op": "POP" + }, + "5314": { + "op": "POP" + }, + "5315": { + "jump": "o", + "op": "JUMP" + }, + "5316": { + "op": "JUMPDEST" + }, + "5317": { + "op": "PUSH1", + "value": "0x1" + }, + "5319": { + "op": "DUP3" + }, + "5320": { + "op": "PUSH1", + "value": "0x3" + }, + "5322": { + "op": "DUP2" + }, + "5323": { + "op": "GT" + }, + "5324": { + "op": "ISZERO" + }, + "5325": { + "op": "PUSH2", + "value": "0x14D8" + }, + "5328": { + "op": "JUMPI" + }, + "5329": { + "op": "PUSH2", + "value": "0x14D8" + }, + "5332": { + "op": "PUSH2", + "value": "0x245F" + }, + "5335": { + "jump": "i", + "op": "JUMP" + }, + "5336": { + "op": "JUMPDEST" + }, + "5337": { + "op": "SUB" + }, + "5338": { + "op": "PUSH2", + "value": "0x14F6" + }, + "5341": { + "op": "JUMPI" + }, + "5342": { + "op": "PUSH1", + "value": "0x40" + }, + "5344": { + "op": "MLOAD" + }, + "5345": { + "op": "PUSH4", + "value": "0xF645EEDF" + }, + "5350": { + "op": "PUSH1", + "value": "0xE0" + }, + "5352": { + "op": "SHL" + }, + "5353": { + "op": "DUP2" + }, + "5354": { + "op": "MSTORE" + }, + "5355": { + "op": "PUSH1", + "value": "0x4" + }, + "5357": { + "op": "ADD" + }, + "5358": { + "op": "PUSH1", + "value": "0x40" + }, + "5360": { + "op": "MLOAD" + }, + "5361": { + "op": "DUP1" + }, + "5362": { + "op": "SWAP2" + }, + "5363": { + "op": "SUB" + }, + "5364": { + "op": "SWAP1" + }, + "5365": { + "op": "REVERT" + }, + "5366": { + "op": "JUMPDEST" + }, + "5367": { + "op": "PUSH1", + "value": "0x2" + }, + "5369": { + "op": "DUP3" + }, + "5370": { + "op": "PUSH1", + "value": "0x3" + }, + "5372": { + "op": "DUP2" + }, + "5373": { + "op": "GT" + }, + "5374": { + "op": "ISZERO" + }, + "5375": { + "op": "PUSH2", + "value": "0x150A" + }, + "5378": { + "op": "JUMPI" + }, + "5379": { + "op": "PUSH2", + "value": "0x150A" + }, + "5382": { + "op": "PUSH2", + "value": "0x245F" + }, + "5385": { + "jump": "i", + "op": "JUMP" + }, + "5386": { + "op": "JUMPDEST" + }, + "5387": { + "op": "SUB" + }, + "5388": { + "op": "PUSH2", + "value": "0x152B" + }, + "5391": { + "op": "JUMPI" + }, + "5392": { + "op": "PUSH1", + "value": "0x40" + }, + "5394": { + "op": "MLOAD" + }, + "5395": { + "op": "PUSH4", + "value": "0xFCE698F7" + }, + "5400": { + "op": "PUSH1", + "value": "0xE0" + }, + "5402": { + "op": "SHL" + }, + "5403": { + "op": "DUP2" + }, + "5404": { + "op": "MSTORE" + }, + "5405": { + "op": "PUSH1", + "value": "0x4" + }, + "5407": { + "op": "DUP2" + }, + "5408": { + "op": "ADD" + }, + "5409": { + "op": "DUP3" + }, + "5410": { + "op": "SWAP1" + }, + "5411": { + "op": "MSTORE" + }, + "5412": { + "op": "PUSH1", + "value": "0x24" + }, + "5414": { + "op": "ADD" + }, + "5415": { + "op": "PUSH2", + "value": "0x7D7" + }, + "5418": { + "op": "JUMP" + }, + "5419": { + "op": "JUMPDEST" + }, + "5420": { + "op": "PUSH1", + "value": "0x3" + }, + "5422": { + "op": "DUP3" + }, + "5423": { + "op": "PUSH1", + "value": "0x3" + }, + "5425": { + "op": "DUP2" + }, + "5426": { + "op": "GT" + }, + "5427": { + "op": "ISZERO" + }, + "5428": { + "op": "PUSH2", + "value": "0x153F" + }, + "5431": { + "op": "JUMPI" + }, + "5432": { + "op": "PUSH2", + "value": "0x153F" + }, + "5435": { + "op": "PUSH2", + "value": "0x245F" + }, + "5438": { + "jump": "i", + "op": "JUMP" + }, + "5439": { + "op": "JUMPDEST" + }, + "5440": { + "op": "SUB" + }, + "5441": { + "op": "PUSH2", + "value": "0x80B" + }, + "5444": { + "op": "JUMPI" + }, + "5445": { + "op": "PUSH1", + "value": "0x40" + }, + "5447": { + "op": "MLOAD" + }, + "5448": { + "op": "PUSH4", + "value": "0x35E2F383" + }, + "5453": { + "op": "PUSH1", + "value": "0xE2" + }, + "5455": { + "op": "SHL" + }, + "5456": { + "op": "DUP2" + }, + "5457": { + "op": "MSTORE" + }, + "5458": { + "op": "PUSH1", + "value": "0x4" + }, + "5460": { + "op": "DUP2" + }, + "5461": { + "op": "ADD" + }, + "5462": { + "op": "DUP3" + }, + "5463": { + "op": "SWAP1" + }, + "5464": { + "op": "MSTORE" + }, + "5465": { + "op": "PUSH1", + "value": "0x24" + }, + "5467": { + "op": "ADD" + }, + "5468": { + "op": "PUSH2", + "value": "0x7D7" + }, + "5471": { + "op": "JUMP" + }, + "5472": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3600, + 3803 + ], + "op": "JUMPDEST", + "path": "101" + }, + "5473": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3663, + 3673 + ], + "op": "PUSH0", + "path": "101" + }, + "5474": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3703, + 3704 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "5476": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3689, + 3704 + ], + "op": "DUP3", + "path": "101" + }, + "5477": { + "branch": 80, + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3689, + 3704 + ], + "op": "LT", + "path": "101" + }, + "5478": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "ISZERO", + "path": "101" + }, + "5479": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1571" + }, + "5482": { + "branch": 80, + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "JUMPI", + "path": "101" + }, + "5483": { + "op": "POP" + }, + "5484": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3720, + 3721 + ], + "op": "PUSH0", + "path": "101", + "statement": 51 + }, + "5485": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3706, + 3722 + ], + "op": "PUSH2", + "path": "101", + "value": "0x52F" + }, + "5488": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3706, + 3722 + ], + "op": "JUMP", + "path": "101" + }, + "5489": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "JUMPDEST", + "path": "101" + }, + "5490": { + "op": "POP" + }, + "5491": { + "op": "POP" + }, + "5492": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3762, + 3787 + ], + "op": "CALLDATALOAD", + "path": "101" + }, + "5493": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3762, + 3787 + ], + "op": "SWAP1", + "path": "101" + }, + "5494": { + "fn": "HyperAccountMinterUpgradable._selector", + "jump": "o", + "offset": [ + 3600, + 3803 + ], + "op": "JUMP", + "path": "101" + }, + "5495": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 525, + 1349 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5496": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "PUSH0", + "path": "96" + }, + "5497": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "DUP1", + "path": "96" + }, + "5498": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "DUP1", + "path": "96" + }, + "5499": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH2", + "path": "96", + "value": "0x15C5" + }, + "5502": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 787, + 797 + ], + "op": "DUP5", + "path": "96" + }, + "5503": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x158C" + }, + "5506": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x100" + }, + "5509": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "DUP9", + "path": "96" + }, + "5510": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "ADD", + "path": "96" + }, + "5511": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 805 + ], + "op": "DUP9", + "path": "96" + }, + "5512": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x2314" + }, + "5515": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 799, + 815 + ], + "op": "JUMP", + "path": "96" + }, + "5516": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5517": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5518": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5519": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x1F" + }, + "5521": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5522": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "5524": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5525": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "5526": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DIV", + "path": "96" + }, + "5527": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MUL", + "path": "96" + }, + "5528": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "5530": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5531": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x40" + }, + "5533": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MLOAD", + "path": "96" + }, + "5534": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5535": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "5536": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5537": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x40" + }, + "5539": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "5540": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5541": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP4", + "path": "96" + }, + "5542": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "5543": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "5544": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5545": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "5546": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "5547": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "5548": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "5550": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5551": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP4", + "path": "96" + }, + "5552": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP4", + "path": "96" + }, + "5553": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5554": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP3", + "path": "96" + }, + "5555": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP5", + "path": "96" + }, + "5556": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "CALLDATACOPY", + "path": "96" + }, + "5557": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH0", + "path": "96" + }, + "5558": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "5559": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5560": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "5561": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5562": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "5563": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "5564": { + "op": "POP" + }, + "5565": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 786 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1934" + }, + "5568": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 786 + ], + "op": "SWAP3", + "path": "96" + }, + "5569": { + "op": "POP" + }, + "5570": { + "op": "POP" + }, + "5571": { + "op": "POP" + }, + "5572": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 770, + 816 + ], + "op": "JUMP", + "path": "96" + }, + "5573": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5574": { + "op": "POP" + }, + "5575": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5576": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "5577": { + "op": "POP" + }, + "5578": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5579": { + "op": "POP" + }, + "5580": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 840, + 866 + ], + "op": "PUSH0", + "path": "96" + }, + "5581": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 836 + ], + "op": "DUP2", + "path": "96" + }, + "5582": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH1", + "path": "96", + "value": "0x3" + }, + "5584": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "DUP2", + "path": "96" + }, + "5585": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "GT", + "path": "96" + }, + "5586": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "ISZERO", + "path": "96" + }, + "5587": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x15DE" + }, + "5590": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "JUMPI", + "path": "96" + }, + "5591": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x15DE" + }, + "5594": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x245F" + }, + "5597": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 831, + 866 + ], + "op": "JUMP", + "path": "96" + }, + "5598": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5599": { + "branch": 74, + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "EQ", + "path": "96" + }, + "5600": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "DUP1", + "path": "96" + }, + "5601": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "ISZERO", + "path": "96" + }, + "5602": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "PUSH2", + "path": "96", + "value": "0x15EF" + }, + "5605": { + "branch": 74, + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "JUMPI", + "path": "96" + }, + "5606": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "POP", + "path": "96" + }, + "5607": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 897 + ], + "op": "PUSH2", + "path": "96", + "value": "0x15EF" + }, + "5610": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 881, + 896 + ], + "op": "DUP3", + "path": "96" + }, + "5611": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 880 + ], + "op": "PUSH2", + "path": "96", + "value": "0x87B" + }, + "5614": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 870, + 897 + ], + "op": "JUMP", + "path": "96" + }, + "5615": { + "branch": 75, + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 897 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5616": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "ISZERO", + "path": "96" + }, + "5617": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "PUSH2", + "path": "96", + "value": "0x15FE" + }, + "5620": { + "branch": 75, + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "JUMPI", + "path": "96" + }, + "5621": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "5622": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "SWAP3", + "path": "96", + "statement": 52 + }, + "5623": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "5624": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "5625": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "5626": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "PUSH2", + "path": "96", + "value": "0x52F" + }, + "5629": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "JUMP", + "path": "96" + }, + "5630": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5631": { + "op": "PUSH32", + "value": "0x19457468657265756D205369676E6564204D6573736167653A0A333200000000" + }, + "5664": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1021, + 1033 + ], + "op": "PUSH0", + "path": "96" + }, + "5665": { + "op": "SWAP1" + }, + "5666": { + "op": "DUP2" + }, + "5667": { + "op": "MSTORE" + }, + "5668": { + "op": "PUSH1", + "value": "0x1C" + }, + "5670": { + "op": "DUP6" + }, + "5671": { + "op": "SWAP1" + }, + "5672": { + "op": "MSTORE" + }, + "5673": { + "op": "PUSH1", + "value": "0x3C" + }, + "5675": { + "op": "SWAP1" + }, + "5676": { + "op": "KECCAK256" + }, + "5677": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1125, + 1165 + ], + "op": "PUSH2", + "path": "96", + "statement": 53, + "value": "0x163E" + }, + "5680": { + "op": "DUP2" + }, + "5681": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x158C" + }, + "5684": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x100" + }, + "5687": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "DUP10", + "path": "96" + }, + "5688": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "ADD", + "path": "96" + }, + "5689": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "DUP10", + "path": "96" + }, + "5690": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x2314" + }, + "5693": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1148, + 1164 + ], + "op": "JUMP", + "path": "96" + }, + "5694": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1125, + 1165 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5695": { + "op": "POP" + }, + "5696": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP1", + "path": "96" + }, + "5697": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP4", + "path": "96" + }, + "5698": { + "op": "POP" + }, + "5699": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP2", + "path": "96" + }, + "5700": { + "op": "POP" + }, + "5701": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1189, + 1215 + ], + "op": "PUSH0", + "path": "96" + }, + "5702": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1185 + ], + "op": "DUP3", + "path": "96" + }, + "5703": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH1", + "path": "96", + "value": "0x3" + }, + "5705": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "DUP2", + "path": "96" + }, + "5706": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "GT", + "path": "96" + }, + "5707": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "ISZERO", + "path": "96" + }, + "5708": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1657" + }, + "5711": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "JUMPI", + "path": "96" + }, + "5712": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1657" + }, + "5715": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x245F" + }, + "5718": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1180, + 1215 + ], + "op": "JUMP", + "path": "96" + }, + "5719": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5720": { + "branch": 76, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "EQ", + "path": "96" + }, + "5721": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "DUP1", + "path": "96" + }, + "5722": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "ISZERO", + "path": "96" + }, + "5723": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1668" + }, + "5726": { + "branch": 76, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "JUMPI", + "path": "96" + }, + "5727": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "POP", + "path": "96" + }, + "5728": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1246 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1668" + }, + "5731": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1230, + 1245 + ], + "op": "DUP4", + "path": "96" + }, + "5732": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1229 + ], + "op": "PUSH2", + "path": "96", + "value": "0x87B" + }, + "5735": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1219, + 1246 + ], + "op": "JUMP", + "path": "96" + }, + "5736": { + "branch": 77, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1246 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5737": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "ISZERO", + "path": "96" + }, + "5738": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1678" + }, + "5741": { + "branch": 77, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "JUMPI", + "path": "96" + }, + "5742": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "5743": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "SWAP4", + "path": "96", + "statement": 54 + }, + "5744": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "5745": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "5746": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "5747": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "5748": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "PUSH2", + "path": "96", + "value": "0x52F" + }, + "5751": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "JUMP", + "path": "96" + }, + "5752": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5753": { + "op": "POP" + }, + "5754": { + "offset": [ + 785, + 786 + ], + "op": "PUSH1", + "path": "109", + "value": "0x1" + }, + "5756": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 785, + 786 + ], + "op": "SWAP6", + "path": "109" + }, + "5757": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 525, + 1349 + ], + "op": "SWAP5", + "path": "96" + }, + "5758": { + "op": "POP" + }, + "5759": { + "op": "POP" + }, + "5760": { + "op": "POP" + }, + "5761": { + "op": "POP" + }, + "5762": { + "op": "POP" + }, + "5763": { + "fn": "HyperAccount._validateSignature", + "jump": "o", + "offset": [ + 525, + 1349 + ], + "op": "JUMP", + "path": "96" + }, + "5764": { + "op": "JUMPDEST" + }, + "5765": { + "op": "DUP1" + }, + "5766": { + "op": "MLOAD" + }, + "5767": { + "op": "PUSH1", + "value": "0x20" + }, + "5769": { + "op": "DUP3" + }, + "5770": { + "op": "ADD" + }, + "5771": { + "op": "REVERT" + }, + "5772": { + "op": "JUMPDEST" + }, + "5773": { + "op": "PUSH2", + "value": "0x1695" + }, + "5776": { + "op": "DUP3" + }, + "5777": { + "op": "PUSH2", + "value": "0x197D" + }, + "5780": { + "jump": "i", + "op": "JUMP" + }, + "5781": { + "op": "JUMPDEST" + }, + "5782": { + "op": "PUSH1", + "value": "0x40" + }, + "5784": { + "op": "MLOAD" + }, + "5785": { + "op": "PUSH1", + "value": "0x1" + }, + "5787": { + "op": "PUSH1", + "value": "0x1" + }, + "5789": { + "op": "PUSH1", + "value": "0xA0" + }, + "5791": { + "op": "SHL" + }, + "5792": { + "op": "SUB" + }, + "5793": { + "op": "DUP4" + }, + "5794": { + "op": "AND" + }, + "5795": { + "op": "SWAP1" + }, + "5796": { + "op": "PUSH32", + "value": "0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B" + }, + "5829": { + "op": "SWAP1" + }, + "5830": { + "op": "PUSH0" + }, + "5831": { + "op": "SWAP1" + }, + "5832": { + "op": "LOG2" + }, + "5833": { + "op": "DUP1" + }, + "5834": { + "op": "MLOAD" + }, + "5835": { + "op": "ISZERO" + }, + "5836": { + "op": "PUSH2", + "value": "0x16D9" + }, + "5839": { + "op": "JUMPI" + }, + "5840": { + "op": "PUSH2", + "value": "0x1176" + }, + "5843": { + "op": "DUP3" + }, + "5844": { + "op": "DUP3" + }, + "5845": { + "op": "PUSH2", + "value": "0x19E0" + }, + "5848": { + "jump": "i", + "op": "JUMP" + }, + "5849": { + "op": "JUMPDEST" + }, + "5850": { + "op": "PUSH2", + "value": "0x80B" + }, + "5853": { + "op": "PUSH2", + "value": "0x1A52" + }, + "5856": { + "jump": "i", + "op": "JUMP" + }, + "5857": { + "fn": "Mech._exec", + "offset": [ + 3995, + 4494 + ], + "op": "JUMPDEST", + "path": "111" + }, + "5858": { + "fn": "Mech._exec", + "offset": [ + 4161, + 4173 + ], + "op": "PUSH0", + "path": "111" + }, + "5859": { + "fn": "Mech._exec", + "offset": [ + 4175, + 4198 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "5861": { + "offset": [ + 1240, + 1262 + ], + "op": "PUSH2", + "path": "111", + "value": "0x16ED" + }, + "5864": { + "offset": [ + 1251, + 1261 + ], + "op": "CALLER", + "path": "111" + }, + "5865": { + "offset": [ + 1240, + 1250 + ], + "op": "PUSH2", + "path": "111", + "value": "0x87B" + }, + "5868": { + "jump": "i", + "offset": [ + 1240, + 1262 + ], + "op": "JUMP", + "path": "111" + }, + "5869": { + "branch": 86, + "fn": "Mech._exec", + "offset": [ + 1240, + 1262 + ], + "op": "JUMPDEST", + "path": "111" + }, + "5870": { + "offset": [ + 1239, + 1262 + ], + "op": "ISZERO", + "path": "111" + }, + "5871": { + "offset": [ + 1239, + 1301 + ], + "op": "DUP1", + "path": "111" + }, + "5872": { + "fn": "Mech._exec", + "offset": [ + 1239, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "5873": { + "fn": "Mech._exec", + "offset": [ + 1239, + 1301 + ], + "op": "PUSH2", + "path": "111", + "value": "0x170E" + }, + "5876": { + "branch": 86, + "offset": [ + 1239, + 1301 + ], + "op": "JUMPI", + "path": "111" + }, + "5877": { + "op": "POP" + }, + "5878": { + "offset": [ + 1266, + 1276 + ], + "op": "CALLER", + "path": "111" + }, + "5879": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "5900": { + "offset": [ + 1266, + 1301 + ], + "op": "EQ", + "path": "111" + }, + "5901": { + "branch": 87, + "fn": "Mech._exec", + "offset": [ + 1266, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "5902": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPDEST", + "path": "111" + }, + "5903": { + "offset": [ + 1235, + 1360 + ], + "op": "ISZERO", + "path": "111" + }, + "5904": { + "fn": "Mech._exec", + "offset": [ + 1235, + 1360 + ], + "op": "PUSH2", + "path": "111", + "value": "0x172C" + }, + "5907": { + "branch": 87, + "offset": [ + 1235, + 1360 + ], + "op": "JUMPI", + "path": "111" + }, + "5908": { + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "5910": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "5911": { + "op": "PUSH4", + "value": "0x47802953" + }, + "5916": { + "op": "PUSH1", + "value": "0xE1" + }, + "5918": { + "op": "SHL" + }, + "5919": { + "offset": [ + 1324, + 1349 + ], + "op": "DUP2", + "path": "111" + }, + "5920": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MSTORE", + "path": "111" + }, + "5921": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "5923": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "ADD", + "path": "111" + }, + "5924": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "5926": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "5927": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "DUP1", + "path": "111" + }, + "5928": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP2", + "path": "111" + }, + "5929": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SUB", + "path": "111" + }, + "5930": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP1", + "path": "111" + }, + "5931": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "REVERT", + "path": "111" + }, + "5932": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPDEST", + "path": "111" + }, + "5933": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4227 + ], + "op": "DUP4", + "path": "111" + }, + "5934": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "5936": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "AND", + "path": "111" + }, + "5937": { + "fn": "Mech._exec", + "offset": [ + 4231, + 4232 + ], + "op": "PUSH0", + "path": "111" + }, + "5938": { + "branch": 88, + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "SUB", + "path": "111" + }, + "5939": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x179D" + }, + "5942": { + "branch": 88, + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMPI", + "path": "111" + }, + "5943": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4274 + ], + "op": "DUP8", + "path": "111", + "statement": 55 + }, + "5944": { + "op": "PUSH1", + "value": "0x1" + }, + "5946": { + "op": "PUSH1", + "value": "0x1" + }, + "5948": { + "op": "PUSH1", + "value": "0xA0" + }, + "5950": { + "op": "SHL" + }, + "5951": { + "op": "SUB" + }, + "5952": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4279 + ], + "op": "AND", + "path": "111" + }, + "5953": { + "fn": "Mech._exec", + "offset": [ + 4285, + 4290 + ], + "op": "DUP4", + "path": "111" + }, + "5954": { + "fn": "Mech._exec", + "offset": [ + 4299, + 4304 + ], + "op": "DUP9", + "path": "111" + }, + "5955": { + "fn": "Mech._exec", + "offset": [ + 4306, + 4310 + ], + "op": "DUP9", + "path": "111" + }, + "5956": { + "fn": "Mech._exec", + "offset": [ + 4306, + 4310 + ], + "op": "DUP9", + "path": "111" + }, + "5957": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "5959": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "5960": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1752" + }, + "5963": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP3", + "path": "111" + }, + "5964": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "5965": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "5966": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2473" + }, + "5969": { + "fn": "Mech._exec", + "jump": "i", + "offset": [ + 4272, + 4311 + ], + "op": "JUMP", + "path": "111" + }, + "5970": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "5971": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "5972": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "5974": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "5975": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP1", + "path": "111" + }, + "5976": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP4", + "path": "111" + }, + "5977": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SUB", + "path": "111" + }, + "5978": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP2", + "path": "111" + }, + "5979": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP6", + "path": "111" + }, + "5980": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP9", + "path": "111" + }, + "5981": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP9", + "path": "111" + }, + "5982": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "CALL", + "path": "111" + }, + "5983": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP4", + "path": "111" + }, + "5984": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "5985": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "5986": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "5987": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "5988": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "5989": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP1", + "path": "111" + }, + "5990": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "5991": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP2", + "path": "111" + }, + "5992": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "EQ", + "path": "111" + }, + "5993": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x178D" + }, + "5996": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPI", + "path": "111" + }, + "5997": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "5999": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "6000": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "6001": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6002": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "6004": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "NOT", + "path": "111" + }, + "6005": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x3F" + }, + "6007": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6008": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6009": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "AND", + "path": "111" + }, + "6010": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP3", + "path": "111" + }, + "6011": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6012": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6014": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MSTORE", + "path": "111" + }, + "6015": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6016": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP3", + "path": "111" + }, + "6017": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MSTORE", + "path": "111" + }, + "6018": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6019": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "6020": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "6022": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP5", + "path": "111" + }, + "6023": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6024": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "6025": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1792" + }, + "6028": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMP", + "path": "111" + }, + "6029": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6030": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "6032": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "6033": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6034": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6035": { + "op": "POP" + }, + "6036": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "6037": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP3", + "path": "111" + }, + "6038": { + "op": "POP" + }, + "6039": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "6040": { + "op": "POP" + }, + "6041": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x11C7" + }, + "6044": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMP", + "path": "111" + }, + "6045": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6046": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4341 + ], + "op": "DUP4", + "path": "111" + }, + "6047": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "6049": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "AND", + "path": "111" + }, + "6050": { + "fn": "Mech._exec", + "offset": [ + 4345, + 4346 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1" + }, + "6052": { + "branch": 89, + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "SUB", + "path": "111" + }, + "6053": { + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x17FC" + }, + "6056": { + "branch": 89, + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "JUMPI", + "path": "111" + }, + "6057": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4388 + ], + "op": "DUP8", + "path": "111", + "statement": 56 + }, + "6058": { + "op": "PUSH1", + "value": "0x1" + }, + "6060": { + "op": "PUSH1", + "value": "0x1" + }, + "6062": { + "op": "PUSH1", + "value": "0xA0" + }, + "6064": { + "op": "SHL" + }, + "6065": { + "op": "SUB" + }, + "6066": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4401 + ], + "op": "AND", + "path": "111" + }, + "6067": { + "fn": "Mech._exec", + "offset": [ + 4407, + 4412 + ], + "op": "DUP4", + "path": "111" + }, + "6068": { + "fn": "Mech._exec", + "offset": [ + 4414, + 4418 + ], + "op": "DUP8", + "path": "111" + }, + "6069": { + "fn": "Mech._exec", + "offset": [ + 4414, + 4418 + ], + "op": "DUP8", + "path": "111" + }, + "6070": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6072": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6073": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x17C3" + }, + "6076": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP3", + "path": "111" + }, + "6077": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP2", + "path": "111" + }, + "6078": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP1", + "path": "111" + }, + "6079": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2473" + }, + "6082": { + "fn": "Mech._exec", + "jump": "i", + "offset": [ + 4386, + 4419 + ], + "op": "JUMP", + "path": "111" + }, + "6083": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6084": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6085": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6087": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6088": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP1", + "path": "111" + }, + "6089": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP4", + "path": "111" + }, + "6090": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SUB", + "path": "111" + }, + "6091": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP2", + "path": "111" + }, + "6092": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP7", + "path": "111" + }, + "6093": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP7", + "path": "111" + }, + "6094": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DELEGATECALL", + "path": "111" + }, + "6095": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP3", + "path": "111" + }, + "6096": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6097": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6098": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6099": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6100": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP1", + "path": "111" + }, + "6101": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6102": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP2", + "path": "111" + }, + "6103": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "EQ", + "path": "111" + }, + "6104": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x178D" + }, + "6107": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMPI", + "path": "111" + }, + "6108": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6110": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6111": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP2", + "path": "111" + }, + "6112": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6113": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "6115": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "NOT", + "path": "111" + }, + "6116": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x3F" + }, + "6118": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6119": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6120": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "AND", + "path": "111" + }, + "6121": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP3", + "path": "111" + }, + "6122": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6123": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6125": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MSTORE", + "path": "111" + }, + "6126": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6127": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP3", + "path": "111" + }, + "6128": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MSTORE", + "path": "111" + }, + "6129": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6130": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6131": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "6133": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP5", + "path": "111" + }, + "6134": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6135": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "6136": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1792" + }, + "6139": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMP", + "path": "111" + }, + "6140": { + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6141": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH1", + "path": "111", + "statement": 57, + "value": "0x40" + }, + "6143": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "MLOAD", + "path": "111" + }, + "6144": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "6148": { + "op": "PUSH1", + "value": "0xE5" + }, + "6150": { + "op": "SHL" + }, + "6151": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "DUP2", + "path": "111" + }, + "6152": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "MSTORE", + "path": "111" + }, + "6153": { + "op": "PUSH1", + "value": "0x20" + }, + "6155": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "6157": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "DUP3", + "path": "111" + }, + "6158": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "ADD", + "path": "111" + }, + "6159": { + "op": "MSTORE" + }, + "6160": { + "op": "PUSH1", + "value": "0x11" + }, + "6162": { + "op": "PUSH1", + "value": "0x24" + }, + "6164": { + "op": "DUP3" + }, + "6165": { + "op": "ADD" + }, + "6166": { + "op": "MSTORE" + }, + "6167": { + "op": "PUSH17", + "value": "0x24B73B30B634B21037B832B930BA34B7B7" + }, + "6185": { + "op": "PUSH1", + "value": "0x79" + }, + "6187": { + "op": "SHL" + }, + "6188": { + "op": "PUSH1", + "value": "0x44" + }, + "6190": { + "op": "DUP3" + }, + "6191": { + "op": "ADD" + }, + "6192": { + "op": "MSTORE" + }, + "6193": { + "op": "PUSH1", + "value": "0x64" + }, + "6195": { + "op": "ADD" + }, + "6196": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7D7" + }, + "6199": { + "op": "JUMP" + }, + "6200": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7084, + 7225 + ], + "op": "JUMPDEST", + "path": "67" + }, + "6201": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 8870, + 8891 + ], + "op": "PUSH32", + "path": "67", + "value": "0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + "6234": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "SLOAD", + "path": "67", + "statement": 58 + }, + "6235": { + "op": "PUSH1", + "value": "0x1" + }, + "6237": { + "op": "PUSH1", + "value": "0x40" + }, + "6239": { + "op": "SHL" + }, + "6240": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "SWAP1", + "path": "67" + }, + "6241": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "DIV", + "path": "67" + }, + "6242": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "PUSH1", + "path": "67", + "value": "0xFF" + }, + "6244": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "AND", + "path": "67" + }, + "6245": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7146, + 7219 + ], + "op": "PUSH2", + "path": "67", + "statement": 59, + "value": "0xE81" + }, + "6248": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7146, + 7219 + ], + "op": "JUMPI", + "path": "67" + }, + "6249": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "6251": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MLOAD", + "path": "67" + }, + "6252": { + "op": "PUSH4", + "value": "0x1AFCD79F" + }, + "6257": { + "op": "PUSH1", + "value": "0xE3" + }, + "6259": { + "op": "SHL" + }, + "6260": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "DUP2", + "path": "67" + }, + "6261": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MSTORE", + "path": "67" + }, + "6262": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x4" + }, + "6264": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "ADD", + "path": "67" + }, + "6265": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "6267": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MLOAD", + "path": "67" + }, + "6268": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "DUP1", + "path": "67" + }, + "6269": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SWAP2", + "path": "67" + }, + "6270": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SUB", + "path": "67" + }, + "6271": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SWAP1", + "path": "67" + }, + "6272": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "REVERT", + "path": "67" + }, + "6273": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3599, + 3929 + ], + "op": "JUMPDEST", + "path": "75" + }, + "6274": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1889" + }, + "6277": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1838" + }, + "6280": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "6281": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 6931, + 6951 + ], + "op": "JUMPDEST", + "path": "67" + }, + "6282": { + "op": "PUSH0" + }, + "6283": { + "op": "MLOAD" + }, + "6284": { + "op": "PUSH1", + "value": "0x20" + }, + "6286": { + "op": "PUSH2", + "value": "0x25CF" + }, + "6289": { + "op": "PUSH0" + }, + "6290": { + "op": "CODECOPY" + }, + "6291": { + "op": "PUSH0" + }, + "6292": { + "op": "MLOAD" + }, + "6293": { + "op": "SWAP1" + }, + "6294": { + "op": "PUSH0" + }, + "6295": { + "op": "MSTORE" + }, + "6296": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3773 + ], + "op": "PUSH32", + "path": "75", + "statement": 60, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102" + }, + "6329": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "PUSH2", + "path": "75", + "value": "0x18C2" + }, + "6332": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3776, + 3780 + ], + "op": "DUP5", + "path": "75" + }, + "6333": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3773 + ], + "op": "DUP3", + "path": "75" + }, + "6334": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "PUSH2", + "path": "75", + "value": "0x24C6" + }, + "6337": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "i", + "offset": [ + 3766, + 3780 + ], + "op": "JUMP", + "path": "75" + }, + "6338": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "JUMPDEST", + "path": "75" + }, + "6339": { + "op": "POP" + }, + "6340": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "PUSH1", + "path": "75", + "statement": 61, + "value": "0x3" + }, + "6342": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "DUP2", + "path": "75" + }, + "6343": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "ADD", + "path": "75" + }, + "6344": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "PUSH2", + "path": "75", + "value": "0x18D1" + }, + "6347": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3803, + 3810 + ], + "op": "DUP4", + "path": "75" + }, + "6348": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "DUP3", + "path": "75" + }, + "6349": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "PUSH2", + "path": "75", + "value": "0x24C6" + }, + "6352": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "i", + "offset": [ + 3790, + 3810 + ], + "op": "JUMP", + "path": "75" + }, + "6353": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "JUMPDEST", + "path": "75" + }, + "6354": { + "op": "POP" + }, + "6355": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3891, + 3892 + ], + "op": "PUSH0", + "path": "75", + "statement": 62 + }, + "6356": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "DUP1", + "path": "75" + }, + "6357": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "DUP3", + "path": "75" + }, + "6358": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "SSTORE", + "path": "75" + }, + "6359": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "PUSH1", + "path": "75", + "statement": 63, + "value": "0x1" + }, + "6361": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "SWAP1", + "path": "75" + }, + "6362": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "SWAP2", + "path": "75" + }, + "6363": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "ADD", + "path": "75" + }, + "6364": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3922 + ], + "op": "SSTORE", + "path": "75" + }, + "6365": { + "op": "POP" + }, + "6366": { + "op": "POP" + }, + "6367": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "o", + "offset": [ + 3599, + 3929 + ], + "op": "JUMP", + "path": "75" + }, + "6368": { + "op": "JUMPDEST" + }, + "6369": { + "op": "PUSH1", + "value": "0x40" + }, + "6371": { + "op": "DUP1" + }, + "6372": { + "op": "MLOAD" + }, + "6373": { + "op": "PUSH1", + "value": "0x60" + }, + "6375": { + "op": "DUP1" + }, + "6376": { + "op": "DUP3" + }, + "6377": { + "op": "MSTORE" + }, + "6378": { + "op": "PUSH1", + "value": "0x80" + }, + "6380": { + "op": "DUP3" + }, + "6381": { + "op": "ADD" + }, + "6382": { + "op": "SWAP1" + }, + "6383": { + "op": "SWAP3" + }, + "6384": { + "op": "MSTORE" + }, + "6385": { + "op": "PUSH0" + }, + "6386": { + "op": "SWAP2" + }, + "6387": { + "op": "DUP3" + }, + "6388": { + "op": "SWAP2" + }, + "6389": { + "op": "DUP3" + }, + "6390": { + "op": "SWAP2" + }, + "6391": { + "op": "DUP3" + }, + "6392": { + "op": "SWAP2" + }, + "6393": { + "op": "SWAP1" + }, + "6394": { + "op": "PUSH1", + "value": "0x20" + }, + "6396": { + "op": "DUP3" + }, + "6397": { + "op": "ADD" + }, + "6398": { + "op": "DUP2" + }, + "6399": { + "op": "DUP1" + }, + "6400": { + "op": "CALLDATASIZE" + }, + "6401": { + "op": "DUP4" + }, + "6402": { + "op": "CALLDATACOPY" + }, + "6403": { + "op": "ADD" + }, + "6404": { + "op": "SWAP1" + }, + "6405": { + "op": "POP" + }, + "6406": { + "op": "POP" + }, + "6407": { + "op": "SWAP1" + }, + "6408": { + "op": "POP" + }, + "6409": { + "op": "PUSH1", + "value": "0x60" + }, + "6411": { + "op": "PUSH1", + "value": "0x4D" + }, + "6413": { + "op": "PUSH1", + "value": "0x20" + }, + "6415": { + "op": "DUP4" + }, + "6416": { + "op": "ADD" + }, + "6417": { + "op": "DUP8" + }, + "6418": { + "op": "EXTCODECOPY" + }, + "6419": { + "op": "DUP1" + }, + "6420": { + "op": "DUP1" + }, + "6421": { + "op": "PUSH1", + "value": "0x20" + }, + "6423": { + "op": "ADD" + }, + "6424": { + "op": "SWAP1" + }, + "6425": { + "op": "MLOAD" + }, + "6426": { + "op": "DUP2" + }, + "6427": { + "op": "ADD" + }, + "6428": { + "op": "SWAP1" + }, + "6429": { + "op": "PUSH2", + "value": "0x1926" + }, + "6432": { + "op": "SWAP2" + }, + "6433": { + "op": "SWAP1" + }, + "6434": { + "op": "PUSH2", + "value": "0x2580" + }, + "6437": { + "jump": "i", + "op": "JUMP" + }, + "6438": { + "op": "JUMPDEST" + }, + "6439": { + "op": "SWAP4" + }, + "6440": { + "op": "POP" + }, + "6441": { + "op": "SWAP4" + }, + "6442": { + "op": "POP" + }, + "6443": { + "op": "SWAP4" + }, + "6444": { + "op": "POP" + }, + "6445": { + "op": "POP" + }, + "6446": { + "op": "SWAP2" + }, + "6447": { + "op": "SWAP4" + }, + "6448": { + "op": "SWAP1" + }, + "6449": { + "op": "SWAP3" + }, + "6450": { + "op": "POP" + }, + "6451": { + "jump": "o", + "op": "JUMP" + }, + "6452": { + "op": "JUMPDEST" + }, + "6453": { + "op": "PUSH0" + }, + "6454": { + "op": "PUSH0" + }, + "6455": { + "op": "PUSH0" + }, + "6456": { + "op": "DUP4" + }, + "6457": { + "op": "MLOAD" + }, + "6458": { + "op": "PUSH1", + "value": "0x41" + }, + "6460": { + "op": "SUB" + }, + "6461": { + "op": "PUSH2", + "value": "0x196B" + }, + "6464": { + "op": "JUMPI" + }, + "6465": { + "op": "PUSH1", + "value": "0x20" + }, + "6467": { + "op": "DUP5" + }, + "6468": { + "op": "ADD" + }, + "6469": { + "op": "MLOAD" + }, + "6470": { + "op": "PUSH1", + "value": "0x40" + }, + "6472": { + "op": "DUP6" + }, + "6473": { + "op": "ADD" + }, + "6474": { + "op": "MLOAD" + }, + "6475": { + "op": "PUSH1", + "value": "0x60" + }, + "6477": { + "op": "DUP7" + }, + "6478": { + "op": "ADD" + }, + "6479": { + "op": "MLOAD" + }, + "6480": { + "op": "PUSH0" + }, + "6481": { + "op": "BYTE" + }, + "6482": { + "op": "PUSH2", + "value": "0x195D" + }, + "6485": { + "op": "DUP9" + }, + "6486": { + "op": "DUP3" + }, + "6487": { + "op": "DUP6" + }, + "6488": { + "op": "DUP6" + }, + "6489": { + "op": "PUSH2", + "value": "0x13E0" + }, + "6492": { + "jump": "i", + "op": "JUMP" + }, + "6493": { + "op": "JUMPDEST" + }, + "6494": { + "op": "SWAP6" + }, + "6495": { + "op": "POP" + }, + "6496": { + "op": "SWAP6" + }, + "6497": { + "op": "POP" + }, + "6498": { + "op": "SWAP6" + }, + "6499": { + "op": "POP" + }, + "6500": { + "op": "POP" + }, + "6501": { + "op": "POP" + }, + "6502": { + "op": "POP" + }, + "6503": { + "op": "PUSH2", + "value": "0x1976" + }, + "6506": { + "op": "JUMP" + }, + "6507": { + "op": "JUMPDEST" + }, + "6508": { + "op": "POP" + }, + "6509": { + "op": "POP" + }, + "6510": { + "op": "DUP2" + }, + "6511": { + "op": "MLOAD" + }, + "6512": { + "op": "PUSH0" + }, + "6513": { + "op": "SWAP2" + }, + "6514": { + "op": "POP" + }, + "6515": { + "op": "PUSH1", + "value": "0x2" + }, + "6517": { + "op": "SWAP1" + }, + "6518": { + "op": "JUMPDEST" + }, + "6519": { + "op": "SWAP3" + }, + "6520": { + "op": "POP" + }, + "6521": { + "op": "SWAP3" + }, + "6522": { + "op": "POP" + }, + "6523": { + "op": "SWAP3" + }, + "6524": { + "jump": "o", + "op": "JUMP" + }, + "6525": { + "op": "JUMPDEST" + }, + "6526": { + "op": "DUP1" + }, + "6527": { + "op": "PUSH1", + "value": "0x1" + }, + "6529": { + "op": "PUSH1", + "value": "0x1" + }, + "6531": { + "op": "PUSH1", + "value": "0xA0" + }, + "6533": { + "op": "SHL" + }, + "6534": { + "op": "SUB" + }, + "6535": { + "op": "AND" + }, + "6536": { + "op": "EXTCODESIZE" + }, + "6537": { + "op": "PUSH0" + }, + "6538": { + "op": "SUB" + }, + "6539": { + "op": "PUSH2", + "value": "0x19B2" + }, + "6542": { + "op": "JUMPI" + }, + "6543": { + "op": "PUSH1", + "value": "0x40" + }, + "6545": { + "op": "MLOAD" + }, + "6546": { + "op": "PUSH4", + "value": "0x4C9C8CE3" + }, + "6551": { + "op": "PUSH1", + "value": "0xE0" + }, + "6553": { + "op": "SHL" + }, + "6554": { + "op": "DUP2" + }, + "6555": { + "op": "MSTORE" + }, + "6556": { + "op": "PUSH1", + "value": "0x1" + }, + "6558": { + "op": "PUSH1", + "value": "0x1" + }, + "6560": { + "op": "PUSH1", + "value": "0xA0" + }, + "6562": { + "op": "SHL" + }, + "6563": { + "op": "SUB" + }, + "6564": { + "op": "DUP3" + }, + "6565": { + "op": "AND" + }, + "6566": { + "op": "PUSH1", + "value": "0x4" + }, + "6568": { + "op": "DUP3" + }, + "6569": { + "op": "ADD" + }, + "6570": { + "op": "MSTORE" + }, + "6571": { + "op": "PUSH1", + "value": "0x24" + }, + "6573": { + "op": "ADD" + }, + "6574": { + "op": "PUSH2", + "value": "0x7D7" + }, + "6577": { + "op": "JUMP" + }, + "6578": { + "op": "JUMPDEST" + }, + "6579": { + "op": "PUSH0" + }, + "6580": { + "op": "MLOAD" + }, + "6581": { + "op": "PUSH1", + "value": "0x20" + }, + "6583": { + "op": "PUSH2", + "value": "0x25EF" + }, + "6586": { + "op": "PUSH0" + }, + "6587": { + "op": "CODECOPY" + }, + "6588": { + "op": "PUSH0" + }, + "6589": { + "op": "MLOAD" + }, + "6590": { + "op": "SWAP1" + }, + "6591": { + "op": "PUSH0" + }, + "6592": { + "op": "MSTORE" + }, + "6593": { + "op": "DUP1" + }, + "6594": { + "op": "SLOAD" + }, + "6595": { + "op": "PUSH1", + "value": "0x1" + }, + "6597": { + "op": "PUSH1", + "value": "0x1" + }, + "6599": { + "op": "PUSH1", + "value": "0xA0" + }, + "6601": { + "op": "SHL" + }, + "6602": { + "op": "SUB" + }, + "6603": { + "op": "NOT" + }, + "6604": { + "op": "AND" + }, + "6605": { + "op": "PUSH1", + "value": "0x1" + }, + "6607": { + "op": "PUSH1", + "value": "0x1" + }, + "6609": { + "op": "PUSH1", + "value": "0xA0" + }, + "6611": { + "op": "SHL" + }, + "6612": { + "op": "SUB" + }, + "6613": { + "op": "SWAP3" + }, + "6614": { + "op": "SWAP1" + }, + "6615": { + "op": "SWAP3" + }, + "6616": { + "op": "AND" + }, + "6617": { + "op": "SWAP2" + }, + "6618": { + "op": "SWAP1" + }, + "6619": { + "op": "SWAP2" + }, + "6620": { + "op": "OR" + }, + "6621": { + "op": "SWAP1" + }, + "6622": { + "op": "SSTORE" + }, + "6623": { + "jump": "o", + "op": "JUMP" + }, + "6624": { + "op": "JUMPDEST" + }, + "6625": { + "op": "PUSH1", + "value": "0x60" + }, + "6627": { + "op": "PUSH0" + }, + "6628": { + "op": "PUSH0" + }, + "6629": { + "op": "DUP5" + }, + "6630": { + "op": "PUSH1", + "value": "0x1" + }, + "6632": { + "op": "PUSH1", + "value": "0x1" + }, + "6634": { + "op": "PUSH1", + "value": "0xA0" + }, + "6636": { + "op": "SHL" + }, + "6637": { + "op": "SUB" + }, + "6638": { + "op": "AND" + }, + "6639": { + "op": "DUP5" + }, + "6640": { + "op": "PUSH1", + "value": "0x40" + }, + "6642": { + "op": "MLOAD" + }, + "6643": { + "op": "PUSH2", + "value": "0x19FC" + }, + "6646": { + "op": "SWAP2" + }, + "6647": { + "op": "SWAP1" + }, + "6648": { + "op": "PUSH2", + "value": "0x25B8" + }, + "6651": { + "jump": "i", + "op": "JUMP" + }, + "6652": { + "op": "JUMPDEST" + }, + "6653": { + "op": "PUSH0" + }, + "6654": { + "op": "PUSH1", + "value": "0x40" + }, + "6656": { + "op": "MLOAD" + }, + "6657": { + "op": "DUP1" + }, + "6658": { + "op": "DUP4" + }, + "6659": { + "op": "SUB" + }, + "6660": { + "op": "DUP2" + }, + "6661": { + "op": "DUP6" + }, + "6662": { + "op": "GAS" + }, + "6663": { + "op": "DELEGATECALL" + }, + "6664": { + "op": "SWAP2" + }, + "6665": { + "op": "POP" + }, + "6666": { + "op": "POP" + }, + "6667": { + "op": "RETURNDATASIZE" + }, + "6668": { + "op": "DUP1" + }, + "6669": { + "op": "PUSH0" + }, + "6670": { + "op": "DUP2" + }, + "6671": { + "op": "EQ" + }, + "6672": { + "op": "PUSH2", + "value": "0x1A34" + }, + "6675": { + "op": "JUMPI" + }, + "6676": { + "op": "PUSH1", + "value": "0x40" + }, + "6678": { + "op": "MLOAD" + }, + "6679": { + "op": "SWAP2" + }, + "6680": { + "op": "POP" + }, + "6681": { + "op": "PUSH1", + "value": "0x1F" + }, + "6683": { + "op": "NOT" + }, + "6684": { + "op": "PUSH1", + "value": "0x3F" + }, + "6686": { + "op": "RETURNDATASIZE" + }, + "6687": { + "op": "ADD" + }, + "6688": { + "op": "AND" + }, + "6689": { + "op": "DUP3" + }, + "6690": { + "op": "ADD" + }, + "6691": { + "op": "PUSH1", + "value": "0x40" + }, + "6693": { + "op": "MSTORE" + }, + "6694": { + "op": "RETURNDATASIZE" + }, + "6695": { + "op": "DUP3" + }, + "6696": { + "op": "MSTORE" + }, + "6697": { + "op": "RETURNDATASIZE" + }, + "6698": { + "op": "PUSH0" + }, + "6699": { + "op": "PUSH1", + "value": "0x20" + }, + "6701": { + "op": "DUP5" + }, + "6702": { + "op": "ADD" + }, + "6703": { + "op": "RETURNDATACOPY" + }, + "6704": { + "op": "PUSH2", + "value": "0x1A39" + }, + "6707": { + "op": "JUMP" + }, + "6708": { + "op": "JUMPDEST" + }, + "6709": { + "op": "PUSH1", + "value": "0x60" + }, + "6711": { + "op": "SWAP2" + }, + "6712": { + "op": "POP" + }, + "6713": { + "op": "JUMPDEST" + }, + "6714": { + "op": "POP" + }, + "6715": { + "op": "SWAP2" + }, + "6716": { + "op": "POP" + }, + "6717": { + "op": "SWAP2" + }, + "6718": { + "op": "POP" + }, + "6719": { + "op": "PUSH2", + "value": "0x1A49" + }, + "6722": { + "op": "DUP6" + }, + "6723": { + "op": "DUP4" + }, + "6724": { + "op": "DUP4" + }, + "6725": { + "op": "PUSH2", + "value": "0x1A71" + }, + "6728": { + "jump": "i", + "op": "JUMP" + }, + "6729": { + "op": "JUMPDEST" + }, + "6730": { + "op": "SWAP6" + }, + "6731": { + "op": "SWAP5" + }, + "6732": { + "op": "POP" + }, + "6733": { + "op": "POP" + }, + "6734": { + "op": "POP" + }, + "6735": { + "op": "POP" + }, + "6736": { + "op": "POP" + }, + "6737": { + "jump": "o", + "op": "JUMP" + }, + "6738": { + "op": "JUMPDEST" + }, + "6739": { + "op": "CALLVALUE" + }, + "6740": { + "op": "ISZERO" + }, + "6741": { + "op": "PUSH2", + "value": "0xE81" + }, + "6744": { + "op": "JUMPI" + }, + "6745": { + "op": "PUSH1", + "value": "0x40" + }, + "6747": { + "op": "MLOAD" + }, + "6748": { + "op": "PUSH4", + "value": "0xB398979F" + }, + "6753": { + "op": "PUSH1", + "value": "0xE0" + }, + "6755": { + "op": "SHL" + }, + "6756": { + "op": "DUP2" + }, + "6757": { + "op": "MSTORE" + }, + "6758": { + "op": "PUSH1", + "value": "0x4" + }, + "6760": { + "op": "ADD" + }, + "6761": { + "op": "PUSH1", + "value": "0x40" + }, + "6763": { + "op": "MLOAD" + }, + "6764": { + "op": "DUP1" + }, + "6765": { + "op": "SWAP2" + }, + "6766": { + "op": "SUB" + }, + "6767": { + "op": "SWAP1" + }, + "6768": { + "op": "REVERT" + }, + "6769": { + "op": "JUMPDEST" + }, + "6770": { + "op": "PUSH1", + "value": "0x60" + }, + "6772": { + "op": "DUP3" + }, + "6773": { + "op": "PUSH2", + "value": "0x1A86" + }, + "6776": { + "op": "JUMPI" + }, + "6777": { + "op": "PUSH2", + "value": "0x1A81" + }, + "6780": { + "op": "DUP3" + }, + "6781": { + "op": "PUSH2", + "value": "0x1ACD" + }, + "6784": { + "jump": "i", + "op": "JUMP" + }, + "6785": { + "op": "JUMPDEST" + }, + "6786": { + "op": "PUSH2", + "value": "0x6F9" + }, + "6789": { + "op": "JUMP" + }, + "6790": { + "op": "JUMPDEST" + }, + "6791": { + "op": "DUP2" + }, + "6792": { + "op": "MLOAD" + }, + "6793": { + "op": "ISZERO" + }, + "6794": { + "op": "DUP1" + }, + "6795": { + "op": "ISZERO" + }, + "6796": { + "op": "PUSH2", + "value": "0x1A9D" + }, + "6799": { + "op": "JUMPI" + }, + "6800": { + "op": "POP" + }, + "6801": { + "op": "PUSH1", + "value": "0x1" + }, + "6803": { + "op": "PUSH1", + "value": "0x1" + }, + "6805": { + "op": "PUSH1", + "value": "0xA0" + }, + "6807": { + "op": "SHL" + }, + "6808": { + "op": "SUB" + }, + "6809": { + "op": "DUP5" + }, + "6810": { + "op": "AND" + }, + "6811": { + "op": "EXTCODESIZE" + }, + "6812": { + "op": "ISZERO" + }, + "6813": { + "op": "JUMPDEST" + }, + "6814": { + "op": "ISZERO" + }, + "6815": { + "op": "PUSH2", + "value": "0x1AC6" + }, + "6818": { + "op": "JUMPI" + }, + "6819": { + "op": "PUSH1", + "value": "0x40" + }, + "6821": { + "op": "MLOAD" + }, + "6822": { + "op": "PUSH4", + "value": "0x9996B315" + }, + "6827": { + "op": "PUSH1", + "value": "0xE0" + }, + "6829": { + "op": "SHL" + }, + "6830": { + "op": "DUP2" + }, + "6831": { + "op": "MSTORE" + }, + "6832": { + "op": "PUSH1", + "value": "0x1" + }, + "6834": { + "op": "PUSH1", + "value": "0x1" + }, + "6836": { + "op": "PUSH1", + "value": "0xA0" + }, + "6838": { + "op": "SHL" + }, + "6839": { + "op": "SUB" + }, + "6840": { + "op": "DUP6" + }, + "6841": { + "op": "AND" + }, + "6842": { + "op": "PUSH1", + "value": "0x4" + }, + "6844": { + "op": "DUP3" + }, + "6845": { + "op": "ADD" + }, + "6846": { + "op": "MSTORE" + }, + "6847": { + "op": "PUSH1", + "value": "0x24" + }, + "6849": { + "op": "ADD" + }, + "6850": { + "op": "PUSH2", + "value": "0x7D7" + }, + "6853": { + "op": "JUMP" + }, + "6854": { + "op": "JUMPDEST" + }, + "6855": { + "op": "POP" + }, + "6856": { + "op": "DUP1" + }, + "6857": { + "op": "PUSH2", + "value": "0x6F9" + }, + "6860": { + "op": "JUMP" + }, + "6861": { + "op": "JUMPDEST" + }, + "6862": { + "op": "DUP1" + }, + "6863": { + "op": "MLOAD" + }, + "6864": { + "op": "ISZERO" + }, + "6865": { + "op": "PUSH2", + "value": "0x1ADD" + }, + "6868": { + "op": "JUMPI" + }, + "6869": { + "op": "DUP1" + }, + "6870": { + "op": "MLOAD" + }, + "6871": { + "op": "DUP1" + }, + "6872": { + "op": "DUP3" + }, + "6873": { + "op": "PUSH1", + "value": "0x20" + }, + "6875": { + "op": "ADD" + }, + "6876": { + "op": "REVERT" + }, + "6877": { + "op": "JUMPDEST" + }, + "6878": { + "op": "PUSH1", + "value": "0x40" + }, + "6880": { + "op": "MLOAD" + }, + "6881": { + "op": "PUSH4", + "value": "0xD6BDA275" + }, + "6886": { + "op": "PUSH1", + "value": "0xE0" + }, + "6888": { + "op": "SHL" + }, + "6889": { + "op": "DUP2" + }, + "6890": { + "op": "MSTORE" + }, + "6891": { + "op": "PUSH1", + "value": "0x4" + }, + "6893": { + "op": "ADD" + }, + "6894": { + "op": "PUSH1", + "value": "0x40" + }, + "6896": { + "op": "MLOAD" + }, + "6897": { + "op": "DUP1" + }, + "6898": { + "op": "SWAP2" + }, + "6899": { + "op": "SUB" + }, + "6900": { + "op": "SWAP1" + }, + "6901": { + "op": "REVERT" + }, + "6902": { + "op": "JUMPDEST" + }, + "6903": { + "op": "PUSH1", + "value": "0x1" + }, + "6905": { + "op": "PUSH1", + "value": "0x1" + }, + "6907": { + "op": "PUSH1", + "value": "0xA0" + }, + "6909": { + "op": "SHL" + }, + "6910": { + "op": "SUB" + }, + "6911": { + "op": "DUP2" + }, + "6912": { + "op": "AND" + }, + "6913": { + "op": "DUP2" + }, + "6914": { + "op": "EQ" + }, + "6915": { + "op": "PUSH2", + "value": "0xF26" + }, + "6918": { + "op": "JUMPI" + }, + "6919": { + "op": "PUSH0" + }, + "6920": { + "op": "PUSH0" + }, + "6921": { + "op": "REVERT" + }, + "6922": { + "op": "JUMPDEST" + }, + "6923": { + "op": "PUSH0" + }, + "6924": { + "op": "PUSH0" + }, + "6925": { + "op": "DUP4" + }, + "6926": { + "op": "PUSH1", + "value": "0x1F" + }, + "6928": { + "op": "DUP5" + }, + "6929": { + "op": "ADD" + }, + "6930": { + "op": "SLT" + }, + "6931": { + "op": "PUSH2", + "value": "0x1B1A" + }, + "6934": { + "op": "JUMPI" + }, + "6935": { + "op": "PUSH0" + }, + "6936": { + "op": "PUSH0" + }, + "6937": { + "op": "REVERT" + }, + "6938": { + "op": "JUMPDEST" + }, + "6939": { + "op": "POP" + }, + "6940": { + "op": "DUP2" + }, + "6941": { + "op": "CALLDATALOAD" + }, + "6942": { + "op": "PUSH1", + "value": "0x1" + }, + "6944": { + "op": "PUSH1", + "value": "0x1" + }, + "6946": { + "op": "PUSH1", + "value": "0x40" + }, + "6948": { + "op": "SHL" + }, + "6949": { + "op": "SUB" + }, + "6950": { + "op": "DUP2" + }, + "6951": { + "op": "GT" + }, + "6952": { + "op": "ISZERO" + }, + "6953": { + "op": "PUSH2", + "value": "0x1B30" + }, + "6956": { + "op": "JUMPI" + }, + "6957": { + "op": "PUSH0" + }, + "6958": { + "op": "PUSH0" + }, + "6959": { + "op": "REVERT" + }, + "6960": { + "op": "JUMPDEST" + }, + "6961": { + "op": "PUSH1", + "value": "0x20" + }, + "6963": { + "op": "DUP4" + }, + "6964": { + "op": "ADD" + }, + "6965": { + "op": "SWAP2" + }, + "6966": { + "op": "POP" + }, + "6967": { + "op": "DUP4" + }, + "6968": { + "op": "PUSH1", + "value": "0x20" + }, + "6970": { + "op": "DUP3" + }, + "6971": { + "op": "DUP6" + }, + "6972": { + "op": "ADD" + }, + "6973": { + "op": "ADD" + }, + "6974": { + "op": "GT" + }, + "6975": { + "op": "ISZERO" + }, + "6976": { + "op": "PUSH2", + "value": "0x1B47" + }, + "6979": { + "op": "JUMPI" + }, + "6980": { + "op": "PUSH0" + }, + "6981": { + "op": "PUSH0" + }, + "6982": { + "op": "REVERT" + }, + "6983": { + "op": "JUMPDEST" + }, + "6984": { + "op": "SWAP3" + }, + "6985": { + "op": "POP" + }, + "6986": { + "op": "SWAP3" + }, + "6987": { + "op": "SWAP1" + }, + "6988": { + "op": "POP" + }, + "6989": { + "jump": "o", + "op": "JUMP" + }, + "6990": { + "op": "JUMPDEST" + }, + "6991": { + "op": "PUSH0" + }, + "6992": { + "op": "PUSH0" + }, + "6993": { + "op": "PUSH0" + }, + "6994": { + "op": "PUSH0" + }, + "6995": { + "op": "PUSH0" + }, + "6996": { + "op": "PUSH0" + }, + "6997": { + "op": "PUSH0" + }, + "6998": { + "op": "PUSH0" + }, + "6999": { + "op": "PUSH1", + "value": "0xC0" + }, + "7001": { + "op": "DUP10" + }, + "7002": { + "op": "DUP12" + }, + "7003": { + "op": "SUB" + }, + "7004": { + "op": "SLT" + }, + "7005": { + "op": "ISZERO" + }, + "7006": { + "op": "PUSH2", + "value": "0x1B65" + }, + "7009": { + "op": "JUMPI" + }, + "7010": { + "op": "PUSH0" + }, + "7011": { + "op": "PUSH0" + }, + "7012": { + "op": "REVERT" + }, + "7013": { + "op": "JUMPDEST" + }, + "7014": { + "op": "DUP9" + }, + "7015": { + "op": "CALLDATALOAD" + }, + "7016": { + "op": "PUSH2", + "value": "0x1B70" + }, + "7019": { + "op": "DUP2" + }, + "7020": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7023": { + "jump": "i", + "op": "JUMP" + }, + "7024": { + "op": "JUMPDEST" + }, + "7025": { + "op": "SWAP8" + }, + "7026": { + "op": "POP" + }, + "7027": { + "op": "PUSH1", + "value": "0x20" + }, + "7029": { + "op": "DUP10" + }, + "7030": { + "op": "ADD" + }, + "7031": { + "op": "CALLDATALOAD" + }, + "7032": { + "op": "PUSH2", + "value": "0x1B80" + }, + "7035": { + "op": "DUP2" + }, + "7036": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7039": { + "jump": "i", + "op": "JUMP" + }, + "7040": { + "op": "JUMPDEST" + }, + "7041": { + "op": "SWAP7" + }, + "7042": { + "op": "POP" + }, + "7043": { + "op": "PUSH1", + "value": "0x40" + }, + "7045": { + "op": "DUP10" + }, + "7046": { + "op": "ADD" + }, + "7047": { + "op": "CALLDATALOAD" + }, + "7048": { + "op": "PUSH2", + "value": "0x1B90" + }, + "7051": { + "op": "DUP2" + }, + "7052": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7055": { + "jump": "i", + "op": "JUMP" + }, + "7056": { + "op": "JUMPDEST" + }, + "7057": { + "op": "SWAP6" + }, + "7058": { + "op": "POP" + }, + "7059": { + "op": "PUSH1", + "value": "0x60" + }, + "7061": { + "op": "DUP10" + }, + "7062": { + "op": "ADD" + }, + "7063": { + "op": "CALLDATALOAD" + }, + "7064": { + "op": "SWAP5" + }, + "7065": { + "op": "POP" + }, + "7066": { + "op": "PUSH1", + "value": "0x80" + }, + "7068": { + "op": "DUP10" + }, + "7069": { + "op": "ADD" + }, + "7070": { + "op": "CALLDATALOAD" + }, + "7071": { + "op": "PUSH1", + "value": "0x1" + }, + "7073": { + "op": "PUSH1", + "value": "0x1" + }, + "7075": { + "op": "PUSH1", + "value": "0x40" + }, + "7077": { + "op": "SHL" + }, + "7078": { + "op": "SUB" + }, + "7079": { + "op": "DUP2" + }, + "7080": { + "op": "GT" + }, + "7081": { + "op": "ISZERO" + }, + "7082": { + "op": "PUSH2", + "value": "0x1BB1" + }, + "7085": { + "op": "JUMPI" + }, + "7086": { + "op": "PUSH0" + }, + "7087": { + "op": "PUSH0" + }, + "7088": { + "op": "REVERT" + }, + "7089": { + "op": "JUMPDEST" + }, + "7090": { + "op": "PUSH2", + "value": "0x1BBD" + }, + "7093": { + "op": "DUP12" + }, + "7094": { + "op": "DUP3" + }, + "7095": { + "op": "DUP13" + }, + "7096": { + "op": "ADD" + }, + "7097": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "7100": { + "jump": "i", + "op": "JUMP" + }, + "7101": { + "op": "JUMPDEST" + }, + "7102": { + "op": "SWAP1" + }, + "7103": { + "op": "SWAP6" + }, + "7104": { + "op": "POP" + }, + "7105": { + "op": "SWAP4" + }, + "7106": { + "op": "POP" + }, + "7107": { + "op": "POP" + }, + "7108": { + "op": "PUSH1", + "value": "0xA0" + }, + "7110": { + "op": "DUP10" + }, + "7111": { + "op": "ADD" + }, + "7112": { + "op": "CALLDATALOAD" + }, + "7113": { + "op": "PUSH1", + "value": "0x1" + }, + "7115": { + "op": "PUSH1", + "value": "0x1" + }, + "7117": { + "op": "PUSH1", + "value": "0x40" + }, + "7119": { + "op": "SHL" + }, + "7120": { + "op": "SUB" + }, + "7121": { + "op": "DUP2" + }, + "7122": { + "op": "GT" + }, + "7123": { + "op": "ISZERO" + }, + "7124": { + "op": "PUSH2", + "value": "0x1BDB" + }, + "7127": { + "op": "JUMPI" + }, + "7128": { + "op": "PUSH0" + }, + "7129": { + "op": "PUSH0" + }, + "7130": { + "op": "REVERT" + }, + "7131": { + "op": "JUMPDEST" + }, + "7132": { + "op": "PUSH2", + "value": "0x1BE7" + }, + "7135": { + "op": "DUP12" + }, + "7136": { + "op": "DUP3" + }, + "7137": { + "op": "DUP13" + }, + "7138": { + "op": "ADD" + }, + "7139": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "7142": { + "jump": "i", + "op": "JUMP" + }, + "7143": { + "op": "JUMPDEST" + }, + "7144": { + "op": "SWAP10" + }, + "7145": { + "op": "SWAP13" + }, + "7146": { + "op": "SWAP9" + }, + "7147": { + "op": "SWAP12" + }, + "7148": { + "op": "POP" + }, + "7149": { + "op": "SWAP7" + }, + "7150": { + "op": "SWAP10" + }, + "7151": { + "op": "POP" + }, + "7152": { + "op": "SWAP5" + }, + "7153": { + "op": "SWAP8" + }, + "7154": { + "op": "SWAP4" + }, + "7155": { + "op": "SWAP7" + }, + "7156": { + "op": "SWAP3" + }, + "7157": { + "op": "SWAP6" + }, + "7158": { + "op": "SWAP5" + }, + "7159": { + "op": "POP" + }, + "7160": { + "op": "POP" + }, + "7161": { + "op": "POP" + }, + "7162": { + "jump": "o", + "op": "JUMP" + }, + "7163": { + "op": "JUMPDEST" + }, + "7164": { + "op": "PUSH1", + "value": "0x1" + }, + "7166": { + "op": "PUSH1", + "value": "0x1" + }, + "7168": { + "op": "PUSH1", + "value": "0xE0" + }, + "7170": { + "op": "SHL" + }, + "7171": { + "op": "SUB" + }, + "7172": { + "op": "NOT" + }, + "7173": { + "op": "DUP2" + }, + "7174": { + "op": "AND" + }, + "7175": { + "op": "DUP2" + }, + "7176": { + "op": "EQ" + }, + "7177": { + "op": "PUSH2", + "value": "0xF26" + }, + "7180": { + "op": "JUMPI" + }, + "7181": { + "op": "PUSH0" + }, + "7182": { + "op": "PUSH0" + }, + "7183": { + "op": "REVERT" + }, + "7184": { + "op": "JUMPDEST" + }, + "7185": { + "op": "PUSH0" + }, + "7186": { + "op": "PUSH1", + "value": "0x20" + }, + "7188": { + "op": "DUP3" + }, + "7189": { + "op": "DUP5" + }, + "7190": { + "op": "SUB" + }, + "7191": { + "op": "SLT" + }, + "7192": { + "op": "ISZERO" + }, + "7193": { + "op": "PUSH2", + "value": "0x1C20" + }, + "7196": { + "op": "JUMPI" + }, + "7197": { + "op": "PUSH0" + }, + "7198": { + "op": "PUSH0" + }, + "7199": { + "op": "REVERT" + }, + "7200": { + "op": "JUMPDEST" + }, + "7201": { + "op": "DUP2" + }, + "7202": { + "op": "CALLDATALOAD" + }, + "7203": { + "op": "PUSH2", + "value": "0x6F9" + }, + "7206": { + "op": "DUP2" + }, + "7207": { + "op": "PUSH2", + "value": "0x1BFB" + }, + "7210": { + "jump": "i", + "op": "JUMP" + }, + "7211": { + "op": "JUMPDEST" + }, + "7212": { + "op": "PUSH0" + }, + "7213": { + "op": "PUSH0" + }, + "7214": { + "op": "PUSH0" + }, + "7215": { + "op": "PUSH0" + }, + "7216": { + "op": "PUSH0" + }, + "7217": { + "op": "PUSH0" + }, + "7218": { + "op": "PUSH1", + "value": "0x80" + }, + "7220": { + "op": "DUP8" + }, + "7221": { + "op": "DUP10" + }, + "7222": { + "op": "SUB" + }, + "7223": { + "op": "SLT" + }, + "7224": { + "op": "ISZERO" + }, + "7225": { + "op": "PUSH2", + "value": "0x1C40" + }, + "7228": { + "op": "JUMPI" + }, + "7229": { + "op": "PUSH0" + }, + "7230": { + "op": "PUSH0" + }, + "7231": { + "op": "REVERT" + }, + "7232": { + "op": "JUMPDEST" + }, + "7233": { + "op": "DUP7" + }, + "7234": { + "op": "CALLDATALOAD" + }, + "7235": { + "op": "PUSH2", + "value": "0x1C4B" + }, + "7238": { + "op": "DUP2" + }, + "7239": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7242": { + "jump": "i", + "op": "JUMP" + }, + "7243": { + "op": "JUMPDEST" + }, + "7244": { + "op": "SWAP6" + }, + "7245": { + "op": "POP" + }, + "7246": { + "op": "PUSH1", + "value": "0x20" + }, + "7248": { + "op": "DUP8" + }, + "7249": { + "op": "ADD" + }, + "7250": { + "op": "CALLDATALOAD" + }, + "7251": { + "op": "PUSH1", + "value": "0x1" + }, + "7253": { + "op": "PUSH1", + "value": "0x1" + }, + "7255": { + "op": "PUSH1", + "value": "0x40" + }, + "7257": { + "op": "SHL" + }, + "7258": { + "op": "SUB" + }, + "7259": { + "op": "DUP2" + }, + "7260": { + "op": "GT" + }, + "7261": { + "op": "ISZERO" + }, + "7262": { + "op": "PUSH2", + "value": "0x1C65" + }, + "7265": { + "op": "JUMPI" + }, + "7266": { + "op": "PUSH0" + }, + "7267": { + "op": "PUSH0" + }, + "7268": { + "op": "REVERT" + }, + "7269": { + "op": "JUMPDEST" + }, + "7270": { + "op": "PUSH2", + "value": "0x1C71" + }, + "7273": { + "op": "DUP10" + }, + "7274": { + "op": "DUP3" + }, + "7275": { + "op": "DUP11" + }, + "7276": { + "op": "ADD" + }, + "7277": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "7280": { + "jump": "i", + "op": "JUMP" + }, + "7281": { + "op": "JUMPDEST" + }, + "7282": { + "op": "SWAP1" + }, + "7283": { + "op": "SWAP7" + }, + "7284": { + "op": "POP" + }, + "7285": { + "op": "SWAP5" + }, + "7286": { + "op": "POP" + }, + "7287": { + "op": "POP" + }, + "7288": { + "op": "PUSH1", + "value": "0x40" + }, + "7290": { + "op": "DUP8" + }, + "7291": { + "op": "ADD" + }, + "7292": { + "op": "CALLDATALOAD" + }, + "7293": { + "op": "PUSH1", + "value": "0x1" + }, + "7295": { + "op": "PUSH1", + "value": "0x1" + }, + "7297": { + "op": "PUSH1", + "value": "0x40" + }, + "7299": { + "op": "SHL" + }, + "7300": { + "op": "SUB" + }, + "7301": { + "op": "DUP2" + }, + "7302": { + "op": "GT" + }, + "7303": { + "op": "ISZERO" + }, + "7304": { + "op": "PUSH2", + "value": "0x1C8F" + }, + "7307": { + "op": "JUMPI" + }, + "7308": { + "op": "PUSH0" + }, + "7309": { + "op": "PUSH0" + }, + "7310": { + "op": "REVERT" + }, + "7311": { + "op": "JUMPDEST" + }, + "7312": { + "op": "PUSH2", + "value": "0x1C9B" + }, + "7315": { + "op": "DUP10" + }, + "7316": { + "op": "DUP3" + }, + "7317": { + "op": "DUP11" + }, + "7318": { + "op": "ADD" + }, + "7319": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "7322": { + "jump": "i", + "op": "JUMP" + }, + "7323": { + "op": "JUMPDEST" + }, + "7324": { + "op": "SWAP1" + }, + "7325": { + "op": "SWAP5" + }, + "7326": { + "op": "POP" + }, + "7327": { + "op": "SWAP3" + }, + "7328": { + "op": "POP" + }, + "7329": { + "op": "POP" + }, + "7330": { + "op": "PUSH1", + "value": "0x60" + }, + "7332": { + "op": "DUP8" + }, + "7333": { + "op": "ADD" + }, + "7334": { + "op": "CALLDATALOAD" + }, + "7335": { + "op": "PUSH2", + "value": "0x1CAF" + }, + "7338": { + "op": "DUP2" + }, + "7339": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7342": { + "jump": "i", + "op": "JUMP" + }, + "7343": { + "op": "JUMPDEST" + }, + "7344": { + "op": "DUP1" + }, + "7345": { + "op": "SWAP2" + }, + "7346": { + "op": "POP" + }, + "7347": { + "op": "POP" + }, + "7348": { + "op": "SWAP3" + }, + "7349": { + "op": "SWAP6" + }, + "7350": { + "op": "POP" + }, + "7351": { + "op": "SWAP3" + }, + "7352": { + "op": "SWAP6" + }, + "7353": { + "op": "POP" + }, + "7354": { + "op": "SWAP3" + }, + "7355": { + "op": "SWAP6" + }, + "7356": { + "jump": "o", + "op": "JUMP" + }, + "7357": { + "op": "JUMPDEST" + }, + "7358": { + "op": "PUSH0" + }, + "7359": { + "op": "PUSH0" + }, + "7360": { + "op": "PUSH0" + }, + "7361": { + "op": "PUSH0" + }, + "7362": { + "op": "PUSH0" + }, + "7363": { + "op": "PUSH1", + "value": "0x80" + }, + "7365": { + "op": "DUP7" + }, + "7366": { + "op": "DUP9" + }, + "7367": { + "op": "SUB" + }, + "7368": { + "op": "SLT" + }, + "7369": { + "op": "ISZERO" + }, + "7370": { + "op": "PUSH2", + "value": "0x1CD1" + }, + "7373": { + "op": "JUMPI" + }, + "7374": { + "op": "PUSH0" + }, + "7375": { + "op": "PUSH0" + }, + "7376": { + "op": "REVERT" + }, + "7377": { + "op": "JUMPDEST" + }, + "7378": { + "op": "DUP6" + }, + "7379": { + "op": "CALLDATALOAD" + }, + "7380": { + "op": "PUSH2", + "value": "0x1CDC" + }, + "7383": { + "op": "DUP2" + }, + "7384": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7387": { + "jump": "i", + "op": "JUMP" + }, + "7388": { + "op": "JUMPDEST" + }, + "7389": { + "op": "SWAP5" + }, + "7390": { + "op": "POP" + }, + "7391": { + "op": "PUSH1", + "value": "0x20" + }, + "7393": { + "op": "DUP7" + }, + "7394": { + "op": "ADD" + }, + "7395": { + "op": "CALLDATALOAD" + }, + "7396": { + "op": "PUSH2", + "value": "0x1CEC" + }, + "7399": { + "op": "DUP2" + }, + "7400": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7403": { + "jump": "i", + "op": "JUMP" + }, + "7404": { + "op": "JUMPDEST" + }, + "7405": { + "op": "SWAP4" + }, + "7406": { + "op": "POP" + }, + "7407": { + "op": "PUSH1", + "value": "0x40" + }, + "7409": { + "op": "DUP7" + }, + "7410": { + "op": "ADD" + }, + "7411": { + "op": "CALLDATALOAD" + }, + "7412": { + "op": "SWAP3" + }, + "7413": { + "op": "POP" + }, + "7414": { + "op": "PUSH1", + "value": "0x60" + }, + "7416": { + "op": "DUP7" + }, + "7417": { + "op": "ADD" + }, + "7418": { + "op": "CALLDATALOAD" + }, + "7419": { + "op": "PUSH1", + "value": "0x1" + }, + "7421": { + "op": "PUSH1", + "value": "0x1" + }, + "7423": { + "op": "PUSH1", + "value": "0x40" + }, + "7425": { + "op": "SHL" + }, + "7426": { + "op": "SUB" + }, + "7427": { + "op": "DUP2" + }, + "7428": { + "op": "GT" + }, + "7429": { + "op": "ISZERO" + }, + "7430": { + "op": "PUSH2", + "value": "0x1D0D" + }, + "7433": { + "op": "JUMPI" + }, + "7434": { + "op": "PUSH0" + }, + "7435": { + "op": "PUSH0" + }, + "7436": { + "op": "REVERT" + }, + "7437": { + "op": "JUMPDEST" + }, + "7438": { + "op": "PUSH2", + "value": "0x1D19" + }, + "7441": { + "op": "DUP9" + }, + "7442": { + "op": "DUP3" + }, + "7443": { + "op": "DUP10" + }, + "7444": { + "op": "ADD" + }, + "7445": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "7448": { + "jump": "i", + "op": "JUMP" + }, + "7449": { + "op": "JUMPDEST" + }, + "7450": { + "op": "SWAP7" + }, + "7451": { + "op": "SWAP10" + }, + "7452": { + "op": "SWAP6" + }, + "7453": { + "op": "SWAP9" + }, + "7454": { + "op": "POP" + }, + "7455": { + "op": "SWAP4" + }, + "7456": { + "op": "SWAP7" + }, + "7457": { + "op": "POP" + }, + "7458": { + "op": "SWAP3" + }, + "7459": { + "op": "SWAP5" + }, + "7460": { + "op": "SWAP4" + }, + "7461": { + "op": "SWAP3" + }, + "7462": { + "op": "POP" + }, + "7463": { + "op": "POP" + }, + "7464": { + "op": "POP" + }, + "7465": { + "jump": "o", + "op": "JUMP" + }, + "7466": { + "op": "JUMPDEST" + }, + "7467": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "7472": { + "op": "PUSH1", + "value": "0xE0" + }, + "7474": { + "op": "SHL" + }, + "7475": { + "op": "PUSH0" + }, + "7476": { + "op": "MSTORE" + }, + "7477": { + "op": "PUSH1", + "value": "0x41" + }, + "7479": { + "op": "PUSH1", + "value": "0x4" + }, + "7481": { + "op": "MSTORE" + }, + "7482": { + "op": "PUSH1", + "value": "0x24" + }, + "7484": { + "op": "PUSH0" + }, + "7485": { + "op": "REVERT" + }, + "7486": { + "op": "JUMPDEST" + }, + "7487": { + "op": "PUSH0" + }, + "7488": { + "op": "DUP3" + }, + "7489": { + "op": "PUSH1", + "value": "0x1F" + }, + "7491": { + "op": "DUP4" + }, + "7492": { + "op": "ADD" + }, + "7493": { + "op": "SLT" + }, + "7494": { + "op": "PUSH2", + "value": "0x1D4D" + }, + "7497": { + "op": "JUMPI" + }, + "7498": { + "op": "PUSH0" + }, + "7499": { + "op": "PUSH0" + }, + "7500": { + "op": "REVERT" + }, + "7501": { + "op": "JUMPDEST" + }, + "7502": { + "op": "DUP2" + }, + "7503": { + "op": "CALLDATALOAD" + }, + "7504": { + "op": "PUSH1", + "value": "0x1" + }, + "7506": { + "op": "PUSH1", + "value": "0x1" + }, + "7508": { + "op": "PUSH1", + "value": "0x40" + }, + "7510": { + "op": "SHL" + }, + "7511": { + "op": "SUB" + }, + "7512": { + "op": "DUP2" + }, + "7513": { + "op": "GT" + }, + "7514": { + "op": "ISZERO" + }, + "7515": { + "op": "PUSH2", + "value": "0x1D66" + }, + "7518": { + "op": "JUMPI" + }, + "7519": { + "op": "PUSH2", + "value": "0x1D66" + }, + "7522": { + "op": "PUSH2", + "value": "0x1D2A" + }, + "7525": { + "jump": "i", + "op": "JUMP" + }, + "7526": { + "op": "JUMPDEST" + }, + "7527": { + "op": "PUSH1", + "value": "0x40" + }, + "7529": { + "op": "MLOAD" + }, + "7530": { + "op": "PUSH1", + "value": "0x1F" + }, + "7532": { + "op": "DUP3" + }, + "7533": { + "op": "ADD" + }, + "7534": { + "op": "PUSH1", + "value": "0x1F" + }, + "7536": { + "op": "NOT" + }, + "7537": { + "op": "SWAP1" + }, + "7538": { + "op": "DUP2" + }, + "7539": { + "op": "AND" + }, + "7540": { + "op": "PUSH1", + "value": "0x3F" + }, + "7542": { + "op": "ADD" + }, + "7543": { + "op": "AND" + }, + "7544": { + "op": "DUP2" + }, + "7545": { + "op": "ADD" + }, + "7546": { + "op": "PUSH1", + "value": "0x1" + }, + "7548": { + "op": "PUSH1", + "value": "0x1" + }, + "7550": { + "op": "PUSH1", + "value": "0x40" + }, + "7552": { + "op": "SHL" + }, + "7553": { + "op": "SUB" + }, + "7554": { + "op": "DUP2" + }, + "7555": { + "op": "GT" + }, + "7556": { + "op": "DUP3" + }, + "7557": { + "op": "DUP3" + }, + "7558": { + "op": "LT" + }, + "7559": { + "op": "OR" + }, + "7560": { + "op": "ISZERO" + }, + "7561": { + "op": "PUSH2", + "value": "0x1D94" + }, + "7564": { + "op": "JUMPI" + }, + "7565": { + "op": "PUSH2", + "value": "0x1D94" + }, + "7568": { + "op": "PUSH2", + "value": "0x1D2A" + }, + "7571": { + "jump": "i", + "op": "JUMP" + }, + "7572": { + "op": "JUMPDEST" + }, + "7573": { + "op": "PUSH1", + "value": "0x40" + }, + "7575": { + "op": "MSTORE" + }, + "7576": { + "op": "DUP2" + }, + "7577": { + "op": "DUP2" + }, + "7578": { + "op": "MSTORE" + }, + "7579": { + "op": "DUP4" + }, + "7580": { + "op": "DUP3" + }, + "7581": { + "op": "ADD" + }, + "7582": { + "op": "PUSH1", + "value": "0x20" + }, + "7584": { + "op": "ADD" + }, + "7585": { + "op": "DUP6" + }, + "7586": { + "op": "LT" + }, + "7587": { + "op": "ISZERO" + }, + "7588": { + "op": "PUSH2", + "value": "0x1DAB" + }, + "7591": { + "op": "JUMPI" + }, + "7592": { + "op": "PUSH0" + }, + "7593": { + "op": "PUSH0" + }, + "7594": { + "op": "REVERT" + }, + "7595": { + "op": "JUMPDEST" + }, + "7596": { + "op": "DUP2" + }, + "7597": { + "op": "PUSH1", + "value": "0x20" + }, + "7599": { + "op": "DUP6" + }, + "7600": { + "op": "ADD" + }, + "7601": { + "op": "PUSH1", + "value": "0x20" + }, + "7603": { + "op": "DUP4" + }, + "7604": { + "op": "ADD" + }, + "7605": { + "op": "CALLDATACOPY" + }, + "7606": { + "op": "PUSH0" + }, + "7607": { + "op": "SWAP2" + }, + "7608": { + "op": "DUP2" + }, + "7609": { + "op": "ADD" + }, + "7610": { + "op": "PUSH1", + "value": "0x20" + }, + "7612": { + "op": "ADD" + }, + "7613": { + "op": "SWAP2" + }, + "7614": { + "op": "SWAP1" + }, + "7615": { + "op": "SWAP2" + }, + "7616": { + "op": "MSTORE" + }, + "7617": { + "op": "SWAP4" + }, + "7618": { + "op": "SWAP3" + }, + "7619": { + "op": "POP" + }, + "7620": { + "op": "POP" + }, + "7621": { + "op": "POP" + }, + "7622": { + "jump": "o", + "op": "JUMP" + }, + "7623": { + "op": "JUMPDEST" + }, + "7624": { + "op": "PUSH0" + }, + "7625": { + "op": "PUSH0" + }, + "7626": { + "op": "PUSH1", + "value": "0x40" + }, + "7628": { + "op": "DUP4" + }, + "7629": { + "op": "DUP6" + }, + "7630": { + "op": "SUB" + }, + "7631": { + "op": "SLT" + }, + "7632": { + "op": "ISZERO" + }, + "7633": { + "op": "PUSH2", + "value": "0x1DD8" + }, + "7636": { + "op": "JUMPI" + }, + "7637": { + "op": "PUSH0" + }, + "7638": { + "op": "PUSH0" + }, + "7639": { + "op": "REVERT" + }, + "7640": { + "op": "JUMPDEST" + }, + "7641": { + "op": "DUP3" + }, + "7642": { + "op": "CALLDATALOAD" + }, + "7643": { + "op": "SWAP2" + }, + "7644": { + "op": "POP" + }, + "7645": { + "op": "PUSH1", + "value": "0x20" + }, + "7647": { + "op": "DUP4" + }, + "7648": { + "op": "ADD" + }, + "7649": { + "op": "CALLDATALOAD" + }, + "7650": { + "op": "PUSH1", + "value": "0x1" + }, + "7652": { + "op": "PUSH1", + "value": "0x1" + }, + "7654": { + "op": "PUSH1", + "value": "0x40" + }, + "7656": { + "op": "SHL" + }, + "7657": { + "op": "SUB" + }, + "7658": { + "op": "DUP2" + }, + "7659": { + "op": "GT" + }, + "7660": { + "op": "ISZERO" + }, + "7661": { + "op": "PUSH2", + "value": "0x1DF4" + }, + "7664": { + "op": "JUMPI" + }, + "7665": { + "op": "PUSH0" + }, + "7666": { + "op": "PUSH0" + }, + "7667": { + "op": "REVERT" + }, + "7668": { + "op": "JUMPDEST" + }, + "7669": { + "op": "PUSH2", + "value": "0x1E00" + }, + "7672": { + "op": "DUP6" + }, + "7673": { + "op": "DUP3" + }, + "7674": { + "op": "DUP7" + }, + "7675": { + "op": "ADD" + }, + "7676": { + "op": "PUSH2", + "value": "0x1D3E" + }, + "7679": { + "jump": "i", + "op": "JUMP" + }, + "7680": { + "op": "JUMPDEST" + }, + "7681": { + "op": "SWAP2" + }, + "7682": { + "op": "POP" + }, + "7683": { + "op": "POP" + }, + "7684": { + "op": "SWAP3" + }, + "7685": { + "op": "POP" + }, + "7686": { + "op": "SWAP3" + }, + "7687": { + "op": "SWAP1" + }, + "7688": { + "op": "POP" + }, + "7689": { + "jump": "o", + "op": "JUMP" + }, + "7690": { + "op": "JUMPDEST" + }, + "7691": { + "op": "PUSH0" + }, + "7692": { + "op": "PUSH0" + }, + "7693": { + "op": "PUSH0" + }, + "7694": { + "op": "PUSH1", + "value": "0x60" + }, + "7696": { + "op": "DUP5" + }, + "7697": { + "op": "DUP7" + }, + "7698": { + "op": "SUB" + }, + "7699": { + "op": "SLT" + }, + "7700": { + "op": "ISZERO" + }, + "7701": { + "op": "PUSH2", + "value": "0x1E1C" + }, + "7704": { + "op": "JUMPI" + }, + "7705": { + "op": "PUSH0" + }, + "7706": { + "op": "PUSH0" + }, + "7707": { + "op": "REVERT" + }, + "7708": { + "op": "JUMPDEST" + }, + "7709": { + "op": "DUP4" + }, + "7710": { + "op": "CALLDATALOAD" + }, + "7711": { + "op": "PUSH1", + "value": "0x1" + }, + "7713": { + "op": "PUSH1", + "value": "0x1" + }, + "7715": { + "op": "PUSH1", + "value": "0x40" + }, + "7717": { + "op": "SHL" + }, + "7718": { + "op": "SUB" + }, + "7719": { + "op": "DUP2" + }, + "7720": { + "op": "GT" + }, + "7721": { + "op": "ISZERO" + }, + "7722": { + "op": "PUSH2", + "value": "0x1E31" + }, + "7725": { + "op": "JUMPI" + }, + "7726": { + "op": "PUSH0" + }, + "7727": { + "op": "PUSH0" + }, + "7728": { + "op": "REVERT" + }, + "7729": { + "op": "JUMPDEST" + }, + "7730": { + "op": "DUP5" + }, + "7731": { + "op": "ADD" + }, + "7732": { + "op": "PUSH2", + "value": "0x120" + }, + "7735": { + "op": "DUP2" + }, + "7736": { + "op": "DUP8" + }, + "7737": { + "op": "SUB" + }, + "7738": { + "op": "SLT" + }, + "7739": { + "op": "ISZERO" + }, + "7740": { + "op": "PUSH2", + "value": "0x1E43" + }, + "7743": { + "op": "JUMPI" + }, + "7744": { + "op": "PUSH0" + }, + "7745": { + "op": "PUSH0" + }, + "7746": { + "op": "REVERT" + }, + "7747": { + "op": "JUMPDEST" + }, + "7748": { + "op": "SWAP6" + }, + "7749": { + "op": "PUSH1", + "value": "0x20" + }, + "7751": { + "op": "DUP6" + }, + "7752": { + "op": "ADD" + }, + "7753": { + "op": "CALLDATALOAD" + }, + "7754": { + "op": "SWAP6" + }, + "7755": { + "op": "POP" + }, + "7756": { + "op": "PUSH1", + "value": "0x40" + }, + "7758": { + "op": "SWAP1" + }, + "7759": { + "op": "SWAP5" + }, + "7760": { + "op": "ADD" + }, + "7761": { + "op": "CALLDATALOAD" + }, + "7762": { + "op": "SWAP4" + }, + "7763": { + "op": "SWAP3" + }, + "7764": { + "op": "POP" + }, + "7765": { + "op": "POP" + }, + "7766": { + "op": "POP" + }, + "7767": { + "jump": "o", + "op": "JUMP" + }, + "7768": { + "op": "JUMPDEST" + }, + "7769": { + "op": "PUSH0" + }, + "7770": { + "op": "PUSH0" + }, + "7771": { + "op": "DUP4" + }, + "7772": { + "op": "PUSH1", + "value": "0x1F" + }, + "7774": { + "op": "DUP5" + }, + "7775": { + "op": "ADD" + }, + "7776": { + "op": "SLT" + }, + "7777": { + "op": "PUSH2", + "value": "0x1E68" + }, + "7780": { + "op": "JUMPI" + }, + "7781": { + "op": "PUSH0" + }, + "7782": { + "op": "PUSH0" + }, + "7783": { + "op": "REVERT" + }, + "7784": { + "op": "JUMPDEST" + }, + "7785": { + "op": "POP" + }, + "7786": { + "op": "DUP2" + }, + "7787": { + "op": "CALLDATALOAD" + }, + "7788": { + "op": "PUSH1", + "value": "0x1" + }, + "7790": { + "op": "PUSH1", + "value": "0x1" + }, + "7792": { + "op": "PUSH1", + "value": "0x40" + }, + "7794": { + "op": "SHL" + }, + "7795": { + "op": "SUB" + }, + "7796": { + "op": "DUP2" + }, + "7797": { + "op": "GT" + }, + "7798": { + "op": "ISZERO" + }, + "7799": { + "op": "PUSH2", + "value": "0x1E7E" + }, + "7802": { + "op": "JUMPI" + }, + "7803": { + "op": "PUSH0" + }, + "7804": { + "op": "PUSH0" + }, + "7805": { + "op": "REVERT" + }, + "7806": { + "op": "JUMPDEST" + }, + "7807": { + "op": "PUSH1", + "value": "0x20" + }, + "7809": { + "op": "DUP4" + }, + "7810": { + "op": "ADD" + }, + "7811": { + "op": "SWAP2" + }, + "7812": { + "op": "POP" + }, + "7813": { + "op": "DUP4" + }, + "7814": { + "op": "PUSH1", + "value": "0x20" + }, + "7816": { + "op": "DUP3" + }, + "7817": { + "op": "PUSH1", + "value": "0x5" + }, + "7819": { + "op": "SHL" + }, + "7820": { + "op": "DUP6" + }, + "7821": { + "op": "ADD" + }, + "7822": { + "op": "ADD" + }, + "7823": { + "op": "GT" + }, + "7824": { + "op": "ISZERO" + }, + "7825": { + "op": "PUSH2", + "value": "0x1B47" + }, + "7828": { + "op": "JUMPI" + }, + "7829": { + "op": "PUSH0" + }, + "7830": { + "op": "PUSH0" + }, + "7831": { + "op": "REVERT" + }, + "7832": { + "op": "JUMPDEST" + }, + "7833": { + "op": "PUSH0" + }, + "7834": { + "op": "PUSH0" + }, + "7835": { + "op": "PUSH1", + "value": "0x20" + }, + "7837": { + "op": "DUP4" + }, + "7838": { + "op": "DUP6" + }, + "7839": { + "op": "SUB" + }, + "7840": { + "op": "SLT" + }, + "7841": { + "op": "ISZERO" + }, + "7842": { + "op": "PUSH2", + "value": "0x1EA9" + }, + "7845": { + "op": "JUMPI" + }, + "7846": { + "op": "PUSH0" + }, + "7847": { + "op": "PUSH0" + }, + "7848": { + "op": "REVERT" + }, + "7849": { + "op": "JUMPDEST" + }, + "7850": { + "op": "DUP3" + }, + "7851": { + "op": "CALLDATALOAD" + }, + "7852": { + "op": "PUSH1", + "value": "0x1" + }, + "7854": { + "op": "PUSH1", + "value": "0x1" + }, + "7856": { + "op": "PUSH1", + "value": "0x40" + }, + "7858": { + "op": "SHL" + }, + "7859": { + "op": "SUB" + }, + "7860": { + "op": "DUP2" + }, + "7861": { + "op": "GT" + }, + "7862": { + "op": "ISZERO" + }, + "7863": { + "op": "PUSH2", + "value": "0x1EBE" + }, + "7866": { + "op": "JUMPI" + }, + "7867": { + "op": "PUSH0" + }, + "7868": { + "op": "PUSH0" + }, + "7869": { + "op": "REVERT" + }, + "7870": { + "op": "JUMPDEST" + }, + "7871": { + "op": "PUSH2", + "value": "0x1ECA" + }, + "7874": { + "op": "DUP6" + }, + "7875": { + "op": "DUP3" + }, + "7876": { + "op": "DUP7" + }, + "7877": { + "op": "ADD" + }, + "7878": { + "op": "PUSH2", + "value": "0x1E58" + }, + "7881": { + "jump": "i", + "op": "JUMP" + }, + "7882": { + "op": "JUMPDEST" + }, + "7883": { + "op": "SWAP1" + }, + "7884": { + "op": "SWAP7" + }, + "7885": { + "op": "SWAP1" + }, + "7886": { + "op": "SWAP6" + }, + "7887": { + "op": "POP" + }, + "7888": { + "op": "SWAP4" + }, + "7889": { + "op": "POP" + }, + "7890": { + "op": "POP" + }, + "7891": { + "op": "POP" + }, + "7892": { + "op": "POP" + }, + "7893": { + "jump": "o", + "op": "JUMP" + }, + "7894": { + "op": "JUMPDEST" + }, + "7895": { + "op": "PUSH0" + }, + "7896": { + "op": "PUSH0" + }, + "7897": { + "op": "PUSH1", + "value": "0x40" + }, + "7899": { + "op": "DUP4" + }, + "7900": { + "op": "DUP6" + }, + "7901": { + "op": "SUB" + }, + "7902": { + "op": "SLT" + }, + "7903": { + "op": "ISZERO" + }, + "7904": { + "op": "PUSH2", + "value": "0x1EE7" + }, + "7907": { + "op": "JUMPI" + }, + "7908": { + "op": "PUSH0" + }, + "7909": { + "op": "PUSH0" + }, + "7910": { + "op": "REVERT" + }, + "7911": { + "op": "JUMPDEST" + }, + "7912": { + "op": "DUP3" + }, + "7913": { + "op": "CALLDATALOAD" + }, + "7914": { + "op": "PUSH2", + "value": "0x1EF2" + }, + "7917": { + "op": "DUP2" + }, + "7918": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7921": { + "jump": "i", + "op": "JUMP" + }, + "7922": { + "op": "JUMPDEST" + }, + "7923": { + "op": "SWAP2" + }, + "7924": { + "op": "POP" + }, + "7925": { + "op": "PUSH1", + "value": "0x20" + }, + "7927": { + "op": "DUP4" + }, + "7928": { + "op": "ADD" + }, + "7929": { + "op": "CALLDATALOAD" + }, + "7930": { + "op": "PUSH1", + "value": "0x1" + }, + "7932": { + "op": "PUSH1", + "value": "0x1" + }, + "7934": { + "op": "PUSH1", + "value": "0x40" + }, + "7936": { + "op": "SHL" + }, + "7937": { + "op": "SUB" + }, + "7938": { + "op": "DUP2" + }, + "7939": { + "op": "GT" + }, + "7940": { + "op": "ISZERO" + }, + "7941": { + "op": "PUSH2", + "value": "0x1DF4" + }, + "7944": { + "op": "JUMPI" + }, + "7945": { + "op": "PUSH0" + }, + "7946": { + "op": "PUSH0" + }, + "7947": { + "op": "REVERT" + }, + "7948": { + "op": "JUMPDEST" + }, + "7949": { + "op": "DUP1" + }, + "7950": { + "op": "CALLDATALOAD" + }, + "7951": { + "op": "PUSH1", + "value": "0xFF" + }, + "7953": { + "op": "DUP2" + }, + "7954": { + "op": "AND" + }, + "7955": { + "op": "DUP2" + }, + "7956": { + "op": "EQ" + }, + "7957": { + "op": "PUSH2", + "value": "0x1F1C" + }, + "7960": { + "op": "JUMPI" + }, + "7961": { + "op": "PUSH0" + }, + "7962": { + "op": "PUSH0" + }, + "7963": { + "op": "REVERT" + }, + "7964": { + "op": "JUMPDEST" + }, + "7965": { + "op": "SWAP2" + }, + "7966": { + "op": "SWAP1" + }, + "7967": { + "op": "POP" + }, + "7968": { + "jump": "o", + "op": "JUMP" + }, + "7969": { + "op": "JUMPDEST" + }, + "7970": { + "op": "PUSH0" + }, + "7971": { + "op": "PUSH0" + }, + "7972": { + "op": "PUSH0" + }, + "7973": { + "op": "PUSH0" + }, + "7974": { + "op": "PUSH0" + }, + "7975": { + "op": "PUSH1", + "value": "0x80" + }, + "7977": { + "op": "DUP7" + }, + "7978": { + "op": "DUP9" + }, + "7979": { + "op": "SUB" + }, + "7980": { + "op": "SLT" + }, + "7981": { + "op": "ISZERO" + }, + "7982": { + "op": "PUSH2", + "value": "0x1F35" + }, + "7985": { + "op": "JUMPI" + }, + "7986": { + "op": "PUSH0" + }, + "7987": { + "op": "PUSH0" + }, + "7988": { + "op": "REVERT" + }, + "7989": { + "op": "JUMPDEST" + }, + "7990": { + "op": "DUP6" + }, + "7991": { + "op": "CALLDATALOAD" + }, + "7992": { + "op": "PUSH2", + "value": "0x1F40" + }, + "7995": { + "op": "DUP2" + }, + "7996": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "7999": { + "jump": "i", + "op": "JUMP" + }, + "8000": { + "op": "JUMPDEST" + }, + "8001": { + "op": "SWAP5" + }, + "8002": { + "op": "POP" + }, + "8003": { + "op": "PUSH1", + "value": "0x20" + }, + "8005": { + "op": "DUP7" + }, + "8006": { + "op": "ADD" + }, + "8007": { + "op": "CALLDATALOAD" + }, + "8008": { + "op": "SWAP4" + }, + "8009": { + "op": "POP" + }, + "8010": { + "op": "PUSH1", + "value": "0x40" + }, + "8012": { + "op": "DUP7" + }, + "8013": { + "op": "ADD" + }, + "8014": { + "op": "CALLDATALOAD" + }, + "8015": { + "op": "PUSH1", + "value": "0x1" + }, + "8017": { + "op": "PUSH1", + "value": "0x1" + }, + "8019": { + "op": "PUSH1", + "value": "0x40" + }, + "8021": { + "op": "SHL" + }, + "8022": { + "op": "SUB" + }, + "8023": { + "op": "DUP2" + }, + "8024": { + "op": "GT" + }, + "8025": { + "op": "ISZERO" + }, + "8026": { + "op": "PUSH2", + "value": "0x1F61" + }, + "8029": { + "op": "JUMPI" + }, + "8030": { + "op": "PUSH0" + }, + "8031": { + "op": "PUSH0" + }, + "8032": { + "op": "REVERT" + }, + "8033": { + "op": "JUMPDEST" + }, + "8034": { + "op": "PUSH2", + "value": "0x1F6D" + }, + "8037": { + "op": "DUP9" + }, + "8038": { + "op": "DUP3" + }, + "8039": { + "op": "DUP10" + }, + "8040": { + "op": "ADD" + }, + "8041": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "8044": { + "jump": "i", + "op": "JUMP" + }, + "8045": { + "op": "JUMPDEST" + }, + "8046": { + "op": "SWAP1" + }, + "8047": { + "op": "SWAP5" + }, + "8048": { + "op": "POP" + }, + "8049": { + "op": "SWAP3" + }, + "8050": { + "op": "POP" + }, + "8051": { + "op": "PUSH2", + "value": "0x1F80" + }, + "8054": { + "op": "SWAP1" + }, + "8055": { + "op": "POP" + }, + "8056": { + "op": "PUSH1", + "value": "0x60" + }, + "8058": { + "op": "DUP8" + }, + "8059": { + "op": "ADD" + }, + "8060": { + "op": "PUSH2", + "value": "0x1F0C" + }, + "8063": { + "jump": "i", + "op": "JUMP" + }, + "8064": { + "op": "JUMPDEST" + }, + "8065": { + "op": "SWAP1" + }, + "8066": { + "op": "POP" + }, + "8067": { + "op": "SWAP3" + }, + "8068": { + "op": "SWAP6" + }, + "8069": { + "op": "POP" + }, + "8070": { + "op": "SWAP3" + }, + "8071": { + "op": "SWAP6" + }, + "8072": { + "op": "SWAP1" + }, + "8073": { + "op": "SWAP4" + }, + "8074": { + "op": "POP" + }, + "8075": { + "jump": "o", + "op": "JUMP" + }, + "8076": { + "op": "JUMPDEST" + }, + "8077": { + "op": "PUSH0" + }, + "8078": { + "op": "DUP2" + }, + "8079": { + "op": "MLOAD" + }, + "8080": { + "op": "DUP1" + }, + "8081": { + "op": "DUP5" + }, + "8082": { + "op": "MSTORE" + }, + "8083": { + "op": "DUP1" + }, + "8084": { + "op": "PUSH1", + "value": "0x20" + }, + "8086": { + "op": "DUP5" + }, + "8087": { + "op": "ADD" + }, + "8088": { + "op": "PUSH1", + "value": "0x20" + }, + "8090": { + "op": "DUP7" + }, + "8091": { + "op": "ADD" + }, + "8092": { + "op": "MCOPY" + }, + "8093": { + "op": "PUSH0" + }, + "8094": { + "op": "PUSH1", + "value": "0x20" + }, + "8096": { + "op": "DUP3" + }, + "8097": { + "op": "DUP7" + }, + "8098": { + "op": "ADD" + }, + "8099": { + "op": "ADD" + }, + "8100": { + "op": "MSTORE" + }, + "8101": { + "op": "PUSH1", + "value": "0x20" + }, + "8103": { + "op": "PUSH1", + "value": "0x1F" + }, + "8105": { + "op": "NOT" + }, + "8106": { + "op": "PUSH1", + "value": "0x1F" + }, + "8108": { + "op": "DUP4" + }, + "8109": { + "op": "ADD" + }, + "8110": { + "op": "AND" + }, + "8111": { + "op": "DUP6" + }, + "8112": { + "op": "ADD" + }, + "8113": { + "op": "ADD" + }, + "8114": { + "op": "SWAP2" + }, + "8115": { + "op": "POP" + }, + "8116": { + "op": "POP" + }, + "8117": { + "op": "SWAP3" + }, + "8118": { + "op": "SWAP2" + }, + "8119": { + "op": "POP" + }, + "8120": { + "op": "POP" + }, + "8121": { + "jump": "o", + "op": "JUMP" + }, + "8122": { + "op": "JUMPDEST" + }, + "8123": { + "op": "PUSH1", + "value": "0x20" + }, + "8125": { + "op": "DUP2" + }, + "8126": { + "op": "MSTORE" + }, + "8127": { + "op": "PUSH0" + }, + "8128": { + "op": "PUSH2", + "value": "0x6F9" + }, + "8131": { + "op": "PUSH1", + "value": "0x20" + }, + "8133": { + "op": "DUP4" + }, + "8134": { + "op": "ADD" + }, + "8135": { + "op": "DUP5" + }, + "8136": { + "op": "PUSH2", + "value": "0x1F8C" + }, + "8139": { + "jump": "i", + "op": "JUMP" + }, + "8140": { + "op": "JUMPDEST" + }, + "8141": { + "op": "PUSH0" + }, + "8142": { + "op": "PUSH0" + }, + "8143": { + "op": "PUSH0" + }, + "8144": { + "op": "PUSH1", + "value": "0x40" + }, + "8146": { + "op": "DUP5" + }, + "8147": { + "op": "DUP7" + }, + "8148": { + "op": "SUB" + }, + "8149": { + "op": "SLT" + }, + "8150": { + "op": "ISZERO" + }, + "8151": { + "op": "PUSH2", + "value": "0x1FDE" + }, + "8154": { + "op": "JUMPI" + }, + "8155": { + "op": "PUSH0" + }, + "8156": { + "op": "PUSH0" + }, + "8157": { + "op": "REVERT" + }, + "8158": { + "op": "JUMPDEST" + }, + "8159": { + "op": "DUP4" + }, + "8160": { + "op": "CALLDATALOAD" + }, + "8161": { + "op": "PUSH2", + "value": "0x1FE9" + }, + "8164": { + "op": "DUP2" + }, + "8165": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "8168": { + "jump": "i", + "op": "JUMP" + }, + "8169": { + "op": "JUMPDEST" + }, + "8170": { + "op": "SWAP3" + }, + "8171": { + "op": "POP" + }, + "8172": { + "op": "PUSH1", + "value": "0x20" + }, + "8174": { + "op": "DUP5" + }, + "8175": { + "op": "ADD" + }, + "8176": { + "op": "CALLDATALOAD" + }, + "8177": { + "op": "PUSH1", + "value": "0x1" + }, + "8179": { + "op": "PUSH1", + "value": "0x1" + }, + "8181": { + "op": "PUSH1", + "value": "0x40" + }, + "8183": { + "op": "SHL" + }, + "8184": { + "op": "SUB" + }, + "8185": { + "op": "DUP2" + }, + "8186": { + "op": "GT" + }, + "8187": { + "op": "ISZERO" + }, + "8188": { + "op": "PUSH2", + "value": "0x2003" + }, + "8191": { + "op": "JUMPI" + }, + "8192": { + "op": "PUSH0" + }, + "8193": { + "op": "PUSH0" + }, + "8194": { + "op": "REVERT" + }, + "8195": { + "op": "JUMPDEST" + }, + "8196": { + "op": "PUSH2", + "value": "0x200F" + }, + "8199": { + "op": "DUP7" + }, + "8200": { + "op": "DUP3" + }, + "8201": { + "op": "DUP8" + }, + "8202": { + "op": "ADD" + }, + "8203": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "8206": { + "jump": "i", + "op": "JUMP" + }, + "8207": { + "op": "JUMPDEST" + }, + "8208": { + "op": "SWAP5" + }, + "8209": { + "op": "SWAP8" + }, + "8210": { + "op": "SWAP1" + }, + "8211": { + "op": "SWAP7" + }, + "8212": { + "op": "POP" + }, + "8213": { + "op": "SWAP4" + }, + "8214": { + "op": "SWAP5" + }, + "8215": { + "op": "POP" + }, + "8216": { + "op": "POP" + }, + "8217": { + "op": "POP" + }, + "8218": { + "op": "POP" + }, + "8219": { + "jump": "o", + "op": "JUMP" + }, + "8220": { + "op": "JUMPDEST" + }, + "8221": { + "op": "PUSH0" + }, + "8222": { + "op": "PUSH1", + "value": "0x20" + }, + "8224": { + "op": "DUP3" + }, + "8225": { + "op": "DUP5" + }, + "8226": { + "op": "SUB" + }, + "8227": { + "op": "SLT" + }, + "8228": { + "op": "ISZERO" + }, + "8229": { + "op": "PUSH2", + "value": "0x202C" + }, + "8232": { + "op": "JUMPI" + }, + "8233": { + "op": "PUSH0" + }, + "8234": { + "op": "PUSH0" + }, + "8235": { + "op": "REVERT" + }, + "8236": { + "op": "JUMPDEST" + }, + "8237": { + "op": "DUP2" + }, + "8238": { + "op": "CALLDATALOAD" + }, + "8239": { + "op": "PUSH2", + "value": "0x6F9" + }, + "8242": { + "op": "DUP2" + }, + "8243": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "8246": { + "jump": "i", + "op": "JUMP" + }, + "8247": { + "op": "JUMPDEST" + }, + "8248": { + "op": "PUSH1", + "value": "0xFF" + }, + "8250": { + "op": "PUSH1", + "value": "0xF8" + }, + "8252": { + "op": "SHL" + }, + "8253": { + "op": "DUP9" + }, + "8254": { + "op": "AND" + }, + "8255": { + "op": "DUP2" + }, + "8256": { + "op": "MSTORE" + }, + "8257": { + "op": "PUSH1", + "value": "0xE0" + }, + "8259": { + "op": "PUSH1", + "value": "0x20" + }, + "8261": { + "op": "DUP3" + }, + "8262": { + "op": "ADD" + }, + "8263": { + "op": "MSTORE" + }, + "8264": { + "op": "PUSH0" + }, + "8265": { + "op": "PUSH2", + "value": "0x2055" + }, + "8268": { + "op": "PUSH1", + "value": "0xE0" + }, + "8270": { + "op": "DUP4" + }, + "8271": { + "op": "ADD" + }, + "8272": { + "op": "DUP10" + }, + "8273": { + "op": "PUSH2", + "value": "0x1F8C" + }, + "8276": { + "jump": "i", + "op": "JUMP" + }, + "8277": { + "op": "JUMPDEST" + }, + "8278": { + "op": "DUP3" + }, + "8279": { + "op": "DUP2" + }, + "8280": { + "op": "SUB" + }, + "8281": { + "op": "PUSH1", + "value": "0x40" + }, + "8283": { + "op": "DUP5" + }, + "8284": { + "op": "ADD" + }, + "8285": { + "op": "MSTORE" + }, + "8286": { + "op": "PUSH2", + "value": "0x2067" + }, + "8289": { + "op": "DUP2" + }, + "8290": { + "op": "DUP10" + }, + "8291": { + "op": "PUSH2", + "value": "0x1F8C" + }, + "8294": { + "jump": "i", + "op": "JUMP" + }, + "8295": { + "op": "JUMPDEST" + }, + "8296": { + "op": "PUSH1", + "value": "0x60" + }, + "8298": { + "op": "DUP5" + }, + "8299": { + "op": "ADD" + }, + "8300": { + "op": "DUP9" + }, + "8301": { + "op": "SWAP1" + }, + "8302": { + "op": "MSTORE" + }, + "8303": { + "op": "PUSH1", + "value": "0x1" + }, + "8305": { + "op": "PUSH1", + "value": "0x1" + }, + "8307": { + "op": "PUSH1", + "value": "0xA0" + }, + "8309": { + "op": "SHL" + }, + "8310": { + "op": "SUB" + }, + "8311": { + "op": "DUP8" + }, + "8312": { + "op": "AND" + }, + "8313": { + "op": "PUSH1", + "value": "0x80" + }, + "8315": { + "op": "DUP6" + }, + "8316": { + "op": "ADD" + }, + "8317": { + "op": "MSTORE" + }, + "8318": { + "op": "PUSH1", + "value": "0xA0" + }, + "8320": { + "op": "DUP5" + }, + "8321": { + "op": "ADD" + }, + "8322": { + "op": "DUP7" + }, + "8323": { + "op": "SWAP1" + }, + "8324": { + "op": "MSTORE" + }, + "8325": { + "op": "DUP4" + }, + "8326": { + "op": "DUP2" + }, + "8327": { + "op": "SUB" + }, + "8328": { + "op": "PUSH1", + "value": "0xC0" + }, + "8330": { + "op": "DUP6" + }, + "8331": { + "op": "ADD" + }, + "8332": { + "op": "MSTORE" + }, + "8333": { + "op": "DUP5" + }, + "8334": { + "op": "MLOAD" + }, + "8335": { + "op": "DUP1" + }, + "8336": { + "op": "DUP3" + }, + "8337": { + "op": "MSTORE" + }, + "8338": { + "op": "PUSH1", + "value": "0x20" + }, + "8340": { + "op": "DUP1" + }, + "8341": { + "op": "DUP8" + }, + "8342": { + "op": "ADD" + }, + "8343": { + "op": "SWAP4" + }, + "8344": { + "op": "POP" + }, + "8345": { + "op": "SWAP1" + }, + "8346": { + "op": "SWAP2" + }, + "8347": { + "op": "ADD" + }, + "8348": { + "op": "SWAP1" + }, + "8349": { + "op": "PUSH0" + }, + "8350": { + "op": "JUMPDEST" + }, + "8351": { + "op": "DUP2" + }, + "8352": { + "op": "DUP2" + }, + "8353": { + "op": "LT" + }, + "8354": { + "op": "ISZERO" + }, + "8355": { + "op": "PUSH2", + "value": "0x20BC" + }, + "8358": { + "op": "JUMPI" + }, + "8359": { + "op": "DUP4" + }, + "8360": { + "op": "MLOAD" + }, + "8361": { + "op": "DUP4" + }, + "8362": { + "op": "MSTORE" + }, + "8363": { + "op": "PUSH1", + "value": "0x20" + }, + "8365": { + "op": "SWAP4" + }, + "8366": { + "op": "DUP5" + }, + "8367": { + "op": "ADD" + }, + "8368": { + "op": "SWAP4" + }, + "8369": { + "op": "SWAP1" + }, + "8370": { + "op": "SWAP3" + }, + "8371": { + "op": "ADD" + }, + "8372": { + "op": "SWAP2" + }, + "8373": { + "op": "PUSH1", + "value": "0x1" + }, + "8375": { + "op": "ADD" + }, + "8376": { + "op": "PUSH2", + "value": "0x209E" + }, + "8379": { + "op": "JUMP" + }, + "8380": { + "op": "JUMPDEST" + }, + "8381": { + "op": "POP" + }, + "8382": { + "op": "SWAP1" + }, + "8383": { + "op": "SWAP12" + }, + "8384": { + "op": "SWAP11" + }, + "8385": { + "op": "POP" + }, + "8386": { + "op": "POP" + }, + "8387": { + "op": "POP" + }, + "8388": { + "op": "POP" + }, + "8389": { + "op": "POP" + }, + "8390": { + "op": "POP" + }, + "8391": { + "op": "POP" + }, + "8392": { + "op": "POP" + }, + "8393": { + "op": "POP" + }, + "8394": { + "op": "POP" + }, + "8395": { + "op": "POP" + }, + "8396": { + "jump": "o", + "op": "JUMP" + }, + "8397": { + "op": "JUMPDEST" + }, + "8398": { + "op": "PUSH0" + }, + "8399": { + "op": "PUSH0" + }, + "8400": { + "op": "PUSH0" + }, + "8401": { + "op": "PUSH0" + }, + "8402": { + "op": "PUSH1", + "value": "0x60" + }, + "8404": { + "op": "DUP6" + }, + "8405": { + "op": "DUP8" + }, + "8406": { + "op": "SUB" + }, + "8407": { + "op": "SLT" + }, + "8408": { + "op": "ISZERO" + }, + "8409": { + "op": "PUSH2", + "value": "0x20E0" + }, + "8412": { + "op": "JUMPI" + }, + "8413": { + "op": "PUSH0" + }, + "8414": { + "op": "PUSH0" + }, + "8415": { + "op": "REVERT" + }, + "8416": { + "op": "JUMPDEST" + }, + "8417": { + "op": "DUP5" + }, + "8418": { + "op": "CALLDATALOAD" + }, + "8419": { + "op": "PUSH2", + "value": "0x20EB" + }, + "8422": { + "op": "DUP2" + }, + "8423": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "8426": { + "jump": "i", + "op": "JUMP" + }, + "8427": { + "op": "JUMPDEST" + }, + "8428": { + "op": "SWAP4" + }, + "8429": { + "op": "POP" + }, + "8430": { + "op": "PUSH1", + "value": "0x20" + }, + "8432": { + "op": "DUP6" + }, + "8433": { + "op": "ADD" + }, + "8434": { + "op": "CALLDATALOAD" + }, + "8435": { + "op": "SWAP3" + }, + "8436": { + "op": "POP" + }, + "8437": { + "op": "PUSH1", + "value": "0x40" + }, + "8439": { + "op": "DUP6" + }, + "8440": { + "op": "ADD" + }, + "8441": { + "op": "CALLDATALOAD" + }, + "8442": { + "op": "PUSH1", + "value": "0x1" + }, + "8444": { + "op": "PUSH1", + "value": "0x1" + }, + "8446": { + "op": "PUSH1", + "value": "0x40" + }, + "8448": { + "op": "SHL" + }, + "8449": { + "op": "SUB" + }, + "8450": { + "op": "DUP2" + }, + "8451": { + "op": "GT" + }, + "8452": { + "op": "ISZERO" + }, + "8453": { + "op": "PUSH2", + "value": "0x210C" + }, + "8456": { + "op": "JUMPI" + }, + "8457": { + "op": "PUSH0" + }, + "8458": { + "op": "PUSH0" + }, + "8459": { + "op": "REVERT" + }, + "8460": { + "op": "JUMPDEST" + }, + "8461": { + "op": "PUSH2", + "value": "0x2118" + }, + "8464": { + "op": "DUP8" + }, + "8465": { + "op": "DUP3" + }, + "8466": { + "op": "DUP9" + }, + "8467": { + "op": "ADD" + }, + "8468": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "8471": { + "jump": "i", + "op": "JUMP" + }, + "8472": { + "op": "JUMPDEST" + }, + "8473": { + "op": "SWAP6" + }, + "8474": { + "op": "SWAP9" + }, + "8475": { + "op": "SWAP5" + }, + "8476": { + "op": "SWAP8" + }, + "8477": { + "op": "POP" + }, + "8478": { + "op": "SWAP6" + }, + "8479": { + "op": "POP" + }, + "8480": { + "op": "POP" + }, + "8481": { + "op": "POP" + }, + "8482": { + "op": "POP" + }, + "8483": { + "jump": "o", + "op": "JUMP" + }, + "8484": { + "op": "JUMPDEST" + }, + "8485": { + "op": "PUSH0" + }, + "8486": { + "op": "PUSH0" + }, + "8487": { + "op": "PUSH0" + }, + "8488": { + "op": "PUSH0" + }, + "8489": { + "op": "PUSH0" + }, + "8490": { + "op": "PUSH0" + }, + "8491": { + "op": "PUSH0" + }, + "8492": { + "op": "PUSH0" + }, + "8493": { + "op": "PUSH1", + "value": "0xA0" + }, + "8495": { + "op": "DUP10" + }, + "8496": { + "op": "DUP12" + }, + "8497": { + "op": "SUB" + }, + "8498": { + "op": "SLT" + }, + "8499": { + "op": "ISZERO" + }, + "8500": { + "op": "PUSH2", + "value": "0x213B" + }, + "8503": { + "op": "JUMPI" + }, + "8504": { + "op": "PUSH0" + }, + "8505": { + "op": "PUSH0" + }, + "8506": { + "op": "REVERT" + }, + "8507": { + "op": "JUMPDEST" + }, + "8508": { + "op": "DUP9" + }, + "8509": { + "op": "CALLDATALOAD" + }, + "8510": { + "op": "PUSH2", + "value": "0x2146" + }, + "8513": { + "op": "DUP2" + }, + "8514": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "8517": { + "jump": "i", + "op": "JUMP" + }, + "8518": { + "op": "JUMPDEST" + }, + "8519": { + "op": "SWAP8" + }, + "8520": { + "op": "POP" + }, + "8521": { + "op": "PUSH1", + "value": "0x20" + }, + "8523": { + "op": "DUP10" + }, + "8524": { + "op": "ADD" + }, + "8525": { + "op": "CALLDATALOAD" + }, + "8526": { + "op": "PUSH2", + "value": "0x2156" + }, + "8529": { + "op": "DUP2" + }, + "8530": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "8533": { + "jump": "i", + "op": "JUMP" + }, + "8534": { + "op": "JUMPDEST" + }, + "8535": { + "op": "SWAP7" + }, + "8536": { + "op": "POP" + }, + "8537": { + "op": "PUSH1", + "value": "0x40" + }, + "8539": { + "op": "DUP10" + }, + "8540": { + "op": "ADD" + }, + "8541": { + "op": "CALLDATALOAD" + }, + "8542": { + "op": "PUSH1", + "value": "0x1" + }, + "8544": { + "op": "PUSH1", + "value": "0x1" + }, + "8546": { + "op": "PUSH1", + "value": "0x40" + }, + "8548": { + "op": "SHL" + }, + "8549": { + "op": "SUB" + }, + "8550": { + "op": "DUP2" + }, + "8551": { + "op": "GT" + }, + "8552": { + "op": "ISZERO" + }, + "8553": { + "op": "PUSH2", + "value": "0x2170" + }, + "8556": { + "op": "JUMPI" + }, + "8557": { + "op": "PUSH0" + }, + "8558": { + "op": "PUSH0" + }, + "8559": { + "op": "REVERT" + }, + "8560": { + "op": "JUMPDEST" + }, + "8561": { + "op": "PUSH2", + "value": "0x217C" + }, + "8564": { + "op": "DUP12" + }, + "8565": { + "op": "DUP3" + }, + "8566": { + "op": "DUP13" + }, + "8567": { + "op": "ADD" + }, + "8568": { + "op": "PUSH2", + "value": "0x1E58" + }, + "8571": { + "jump": "i", + "op": "JUMP" + }, + "8572": { + "op": "JUMPDEST" + }, + "8573": { + "op": "SWAP1" + }, + "8574": { + "op": "SWAP8" + }, + "8575": { + "op": "POP" + }, + "8576": { + "op": "SWAP6" + }, + "8577": { + "op": "POP" + }, + "8578": { + "op": "POP" + }, + "8579": { + "op": "PUSH1", + "value": "0x60" + }, + "8581": { + "op": "DUP10" + }, + "8582": { + "op": "ADD" + }, + "8583": { + "op": "CALLDATALOAD" + }, + "8584": { + "op": "PUSH1", + "value": "0x1" + }, + "8586": { + "op": "PUSH1", + "value": "0x1" + }, + "8588": { + "op": "PUSH1", + "value": "0x40" + }, + "8590": { + "op": "SHL" + }, + "8591": { + "op": "SUB" + }, + "8592": { + "op": "DUP2" + }, + "8593": { + "op": "GT" + }, + "8594": { + "op": "ISZERO" + }, + "8595": { + "op": "PUSH2", + "value": "0x219A" + }, + "8598": { + "op": "JUMPI" + }, + "8599": { + "op": "PUSH0" + }, + "8600": { + "op": "PUSH0" + }, + "8601": { + "op": "REVERT" + }, + "8602": { + "op": "JUMPDEST" + }, + "8603": { + "op": "PUSH2", + "value": "0x21A6" + }, + "8606": { + "op": "DUP12" + }, + "8607": { + "op": "DUP3" + }, + "8608": { + "op": "DUP13" + }, + "8609": { + "op": "ADD" + }, + "8610": { + "op": "PUSH2", + "value": "0x1E58" + }, + "8613": { + "jump": "i", + "op": "JUMP" + }, + "8614": { + "op": "JUMPDEST" + }, + "8615": { + "op": "SWAP1" + }, + "8616": { + "op": "SWAP6" + }, + "8617": { + "op": "POP" + }, + "8618": { + "op": "SWAP4" + }, + "8619": { + "op": "POP" + }, + "8620": { + "op": "POP" + }, + "8621": { + "op": "PUSH1", + "value": "0x80" + }, + "8623": { + "op": "DUP10" + }, + "8624": { + "op": "ADD" + }, + "8625": { + "op": "CALLDATALOAD" + }, + "8626": { + "op": "PUSH1", + "value": "0x1" + }, + "8628": { + "op": "PUSH1", + "value": "0x1" + }, + "8630": { + "op": "PUSH1", + "value": "0x40" + }, + "8632": { + "op": "SHL" + }, + "8633": { + "op": "SUB" + }, + "8634": { + "op": "DUP2" + }, + "8635": { + "op": "GT" + }, + "8636": { + "op": "ISZERO" + }, + "8637": { + "op": "PUSH2", + "value": "0x1BDB" + }, + "8640": { + "op": "JUMPI" + }, + "8641": { + "op": "PUSH0" + }, + "8642": { + "op": "PUSH0" + }, + "8643": { + "op": "REVERT" + }, + "8644": { + "op": "JUMPDEST" + }, + "8645": { + "op": "PUSH0" + }, + "8646": { + "op": "PUSH0" + }, + "8647": { + "op": "PUSH0" + }, + "8648": { + "op": "PUSH0" + }, + "8649": { + "op": "PUSH0" + }, + "8650": { + "op": "PUSH0" + }, + "8651": { + "op": "PUSH1", + "value": "0xA0" + }, + "8653": { + "op": "DUP8" + }, + "8654": { + "op": "DUP10" + }, + "8655": { + "op": "SUB" + }, + "8656": { + "op": "SLT" + }, + "8657": { + "op": "ISZERO" + }, + "8658": { + "op": "PUSH2", + "value": "0x21D9" + }, + "8661": { + "op": "JUMPI" + }, + "8662": { + "op": "PUSH0" + }, + "8663": { + "op": "PUSH0" + }, + "8664": { + "op": "REVERT" + }, + "8665": { + "op": "JUMPDEST" + }, + "8666": { + "op": "DUP7" + }, + "8667": { + "op": "CALLDATALOAD" + }, + "8668": { + "op": "PUSH2", + "value": "0x21E4" + }, + "8671": { + "op": "DUP2" + }, + "8672": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "8675": { + "jump": "i", + "op": "JUMP" + }, + "8676": { + "op": "JUMPDEST" + }, + "8677": { + "op": "SWAP6" + }, + "8678": { + "op": "POP" + }, + "8679": { + "op": "PUSH1", + "value": "0x20" + }, + "8681": { + "op": "DUP8" + }, + "8682": { + "op": "ADD" + }, + "8683": { + "op": "CALLDATALOAD" + }, + "8684": { + "op": "SWAP5" + }, + "8685": { + "op": "POP" + }, + "8686": { + "op": "PUSH1", + "value": "0x40" + }, + "8688": { + "op": "DUP8" + }, + "8689": { + "op": "ADD" + }, + "8690": { + "op": "CALLDATALOAD" + }, + "8691": { + "op": "PUSH1", + "value": "0x1" + }, + "8693": { + "op": "PUSH1", + "value": "0x1" + }, + "8695": { + "op": "PUSH1", + "value": "0x40" + }, + "8697": { + "op": "SHL" + }, + "8698": { + "op": "SUB" + }, + "8699": { + "op": "DUP2" + }, + "8700": { + "op": "GT" + }, + "8701": { + "op": "ISZERO" + }, + "8702": { + "op": "PUSH2", + "value": "0x2205" + }, + "8705": { + "op": "JUMPI" + }, + "8706": { + "op": "PUSH0" + }, + "8707": { + "op": "PUSH0" + }, + "8708": { + "op": "REVERT" + }, + "8709": { + "op": "JUMPDEST" + }, + "8710": { + "op": "PUSH2", + "value": "0x2211" + }, + "8713": { + "op": "DUP10" + }, + "8714": { + "op": "DUP3" + }, + "8715": { + "op": "DUP11" + }, + "8716": { + "op": "ADD" + }, + "8717": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "8720": { + "jump": "i", + "op": "JUMP" + }, + "8721": { + "op": "JUMPDEST" + }, + "8722": { + "op": "SWAP1" + }, + "8723": { + "op": "SWAP6" + }, + "8724": { + "op": "POP" + }, + "8725": { + "op": "SWAP4" + }, + "8726": { + "op": "POP" + }, + "8727": { + "op": "PUSH2", + "value": "0x2224" + }, + "8730": { + "op": "SWAP1" + }, + "8731": { + "op": "POP" + }, + "8732": { + "op": "PUSH1", + "value": "0x60" + }, + "8734": { + "op": "DUP9" + }, + "8735": { + "op": "ADD" + }, + "8736": { + "op": "PUSH2", + "value": "0x1F0C" + }, + "8739": { + "jump": "i", + "op": "JUMP" + }, + "8740": { + "op": "JUMPDEST" + }, + "8741": { + "op": "SWAP6" + }, + "8742": { + "op": "SWAP9" + }, + "8743": { + "op": "SWAP5" + }, + "8744": { + "op": "SWAP8" + }, + "8745": { + "op": "POP" + }, + "8746": { + "op": "SWAP3" + }, + "8747": { + "op": "SWAP6" + }, + "8748": { + "op": "SWAP2" + }, + "8749": { + "op": "SWAP5" + }, + "8750": { + "op": "SWAP4" + }, + "8751": { + "op": "PUSH1", + "value": "0x80" + }, + "8753": { + "op": "SWAP1" + }, + "8754": { + "op": "SWAP3" + }, + "8755": { + "op": "ADD" + }, + "8756": { + "op": "CALLDATALOAD" + }, + "8757": { + "op": "SWAP3" + }, + "8758": { + "op": "POP" + }, + "8759": { + "op": "POP" + }, + "8760": { + "jump": "o", + "op": "JUMP" + }, + "8761": { + "op": "JUMPDEST" + }, + "8762": { + "op": "PUSH0" + }, + "8763": { + "op": "PUSH0" + }, + "8764": { + "op": "PUSH0" + }, + "8765": { + "op": "PUSH0" + }, + "8766": { + "op": "PUSH0" + }, + "8767": { + "op": "PUSH0" + }, + "8768": { + "op": "PUSH1", + "value": "0xA0" + }, + "8770": { + "op": "DUP8" + }, + "8771": { + "op": "DUP10" + }, + "8772": { + "op": "SUB" + }, + "8773": { + "op": "SLT" + }, + "8774": { + "op": "ISZERO" + }, + "8775": { + "op": "PUSH2", + "value": "0x224E" + }, + "8778": { + "op": "JUMPI" + }, + "8779": { + "op": "PUSH0" + }, + "8780": { + "op": "PUSH0" + }, + "8781": { + "op": "REVERT" + }, + "8782": { + "op": "JUMPDEST" + }, + "8783": { + "op": "DUP7" + }, + "8784": { + "op": "CALLDATALOAD" + }, + "8785": { + "op": "PUSH2", + "value": "0x2259" + }, + "8788": { + "op": "DUP2" + }, + "8789": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "8792": { + "jump": "i", + "op": "JUMP" + }, + "8793": { + "op": "JUMPDEST" + }, + "8794": { + "op": "SWAP6" + }, + "8795": { + "op": "POP" + }, + "8796": { + "op": "PUSH1", + "value": "0x20" + }, + "8798": { + "op": "DUP8" + }, + "8799": { + "op": "ADD" + }, + "8800": { + "op": "CALLDATALOAD" + }, + "8801": { + "op": "PUSH2", + "value": "0x2269" + }, + "8804": { + "op": "DUP2" + }, + "8805": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "8808": { + "jump": "i", + "op": "JUMP" + }, + "8809": { + "op": "JUMPDEST" + }, + "8810": { + "op": "SWAP5" + }, + "8811": { + "op": "POP" + }, + "8812": { + "op": "PUSH1", + "value": "0x40" + }, + "8814": { + "op": "DUP8" + }, + "8815": { + "op": "ADD" + }, + "8816": { + "op": "CALLDATALOAD" + }, + "8817": { + "op": "SWAP4" + }, + "8818": { + "op": "POP" + }, + "8819": { + "op": "PUSH1", + "value": "0x60" + }, + "8821": { + "op": "DUP8" + }, + "8822": { + "op": "ADD" + }, + "8823": { + "op": "CALLDATALOAD" + }, + "8824": { + "op": "SWAP3" + }, + "8825": { + "op": "POP" + }, + "8826": { + "op": "PUSH1", + "value": "0x80" + }, + "8828": { + "op": "DUP8" + }, + "8829": { + "op": "ADD" + }, + "8830": { + "op": "CALLDATALOAD" + }, + "8831": { + "op": "PUSH1", + "value": "0x1" + }, + "8833": { + "op": "PUSH1", + "value": "0x1" + }, + "8835": { + "op": "PUSH1", + "value": "0x40" + }, + "8837": { + "op": "SHL" + }, + "8838": { + "op": "SUB" + }, + "8839": { + "op": "DUP2" + }, + "8840": { + "op": "GT" + }, + "8841": { + "op": "ISZERO" + }, + "8842": { + "op": "PUSH2", + "value": "0x2291" + }, + "8845": { + "op": "JUMPI" + }, + "8846": { + "op": "PUSH0" + }, + "8847": { + "op": "PUSH0" + }, + "8848": { + "op": "REVERT" + }, + "8849": { + "op": "JUMPDEST" + }, + "8850": { + "op": "PUSH2", + "value": "0x229D" + }, + "8853": { + "op": "DUP10" + }, + "8854": { + "op": "DUP3" + }, + "8855": { + "op": "DUP11" + }, + "8856": { + "op": "ADD" + }, + "8857": { + "op": "PUSH2", + "value": "0x1B0A" + }, + "8860": { + "jump": "i", + "op": "JUMP" + }, + "8861": { + "op": "JUMPDEST" + }, + "8862": { + "op": "SWAP8" + }, + "8863": { + "op": "SWAP11" + }, + "8864": { + "op": "SWAP7" + }, + "8865": { + "op": "SWAP10" + }, + "8866": { + "op": "POP" + }, + "8867": { + "op": "SWAP5" + }, + "8868": { + "op": "SWAP8" + }, + "8869": { + "op": "POP" + }, + "8870": { + "op": "SWAP3" + }, + "8871": { + "op": "SWAP6" + }, + "8872": { + "op": "SWAP4" + }, + "8873": { + "op": "SWAP5" + }, + "8874": { + "op": "SWAP3" + }, + "8875": { + "op": "POP" + }, + "8876": { + "op": "POP" + }, + "8877": { + "op": "POP" + }, + "8878": { + "jump": "o", + "op": "JUMP" + }, + "8879": { + "op": "JUMPDEST" + }, + "8880": { + "op": "DUP3" + }, + "8881": { + "op": "DUP2" + }, + "8882": { + "op": "MSTORE" + }, + "8883": { + "op": "PUSH1", + "value": "0x40" + }, + "8885": { + "op": "PUSH1", + "value": "0x20" + }, + "8887": { + "op": "DUP3" + }, + "8888": { + "op": "ADD" + }, + "8889": { + "op": "MSTORE" + }, + "8890": { + "op": "PUSH0" + }, + "8891": { + "op": "PUSH2", + "value": "0x858" + }, + "8894": { + "op": "PUSH1", + "value": "0x40" + }, + "8896": { + "op": "DUP4" + }, + "8897": { + "op": "ADD" + }, + "8898": { + "op": "DUP5" + }, + "8899": { + "op": "PUSH2", + "value": "0x1F8C" + }, + "8902": { + "jump": "i", + "op": "JUMP" + }, + "8903": { + "op": "JUMPDEST" + }, + "8904": { + "op": "PUSH0" + }, + "8905": { + "op": "PUSH1", + "value": "0x20" + }, + "8907": { + "op": "DUP3" + }, + "8908": { + "op": "DUP5" + }, + "8909": { + "op": "SUB" + }, + "8910": { + "op": "SLT" + }, + "8911": { + "op": "ISZERO" + }, + "8912": { + "op": "PUSH2", + "value": "0x22D7" + }, + "8915": { + "op": "JUMPI" + }, + "8916": { + "op": "PUSH0" + }, + "8917": { + "op": "PUSH0" + }, + "8918": { + "op": "REVERT" + }, + "8919": { + "op": "JUMPDEST" + }, + "8920": { + "op": "DUP2" + }, + "8921": { + "op": "MLOAD" + }, + "8922": { + "op": "PUSH2", + "value": "0x6F9" + }, + "8925": { + "op": "DUP2" + }, + "8926": { + "op": "PUSH2", + "value": "0x1BFB" + }, + "8929": { + "jump": "i", + "op": "JUMP" + }, + "8930": { + "op": "JUMPDEST" + }, + "8931": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "8936": { + "op": "PUSH1", + "value": "0xE0" + }, + "8938": { + "op": "SHL" + }, + "8939": { + "op": "PUSH0" + }, + "8940": { + "op": "MSTORE" + }, + "8941": { + "op": "PUSH1", + "value": "0x32" + }, + "8943": { + "op": "PUSH1", + "value": "0x4" + }, + "8945": { + "op": "MSTORE" + }, + "8946": { + "op": "PUSH1", + "value": "0x24" + }, + "8948": { + "op": "PUSH0" + }, + "8949": { + "op": "REVERT" + }, + "8950": { + "op": "JUMPDEST" + }, + "8951": { + "op": "PUSH0" + }, + "8952": { + "op": "DUP3" + }, + "8953": { + "op": "CALLDATALOAD" + }, + "8954": { + "op": "PUSH1", + "value": "0x5E" + }, + "8956": { + "op": "NOT" + }, + "8957": { + "op": "DUP4" + }, + "8958": { + "op": "CALLDATASIZE" + }, + "8959": { + "op": "SUB" + }, + "8960": { + "op": "ADD" + }, + "8961": { + "op": "DUP2" + }, + "8962": { + "op": "SLT" + }, + "8963": { + "op": "PUSH2", + "value": "0x230A" + }, + "8966": { + "op": "JUMPI" + }, + "8967": { + "op": "PUSH0" + }, + "8968": { + "op": "PUSH0" + }, + "8969": { + "op": "REVERT" + }, + "8970": { + "op": "JUMPDEST" + }, + "8971": { + "op": "SWAP2" + }, + "8972": { + "op": "SWAP1" + }, + "8973": { + "op": "SWAP2" + }, + "8974": { + "op": "ADD" + }, + "8975": { + "op": "SWAP3" + }, + "8976": { + "op": "SWAP2" + }, + "8977": { + "op": "POP" + }, + "8978": { + "op": "POP" + }, + "8979": { + "jump": "o", + "op": "JUMP" + }, + "8980": { + "op": "JUMPDEST" + }, + "8981": { + "op": "PUSH0" + }, + "8982": { + "op": "PUSH0" + }, + "8983": { + "op": "DUP4" + }, + "8984": { + "op": "CALLDATALOAD" + }, + "8985": { + "op": "PUSH1", + "value": "0x1E" + }, + "8987": { + "op": "NOT" + }, + "8988": { + "op": "DUP5" + }, + "8989": { + "op": "CALLDATASIZE" + }, + "8990": { + "op": "SUB" + }, + "8991": { + "op": "ADD" + }, + "8992": { + "op": "DUP2" + }, + "8993": { + "op": "SLT" + }, + "8994": { + "op": "PUSH2", + "value": "0x2329" + }, + "8997": { + "op": "JUMPI" + }, + "8998": { + "op": "PUSH0" + }, + "8999": { + "op": "PUSH0" + }, + "9000": { + "op": "REVERT" + }, + "9001": { + "op": "JUMPDEST" + }, + "9002": { + "op": "DUP4" + }, + "9003": { + "op": "ADD" + }, + "9004": { + "op": "DUP1" + }, + "9005": { + "op": "CALLDATALOAD" + }, + "9006": { + "op": "SWAP2" + }, + "9007": { + "op": "POP" + }, + "9008": { + "op": "PUSH1", + "value": "0x1" + }, + "9010": { + "op": "PUSH1", + "value": "0x1" + }, + "9012": { + "op": "PUSH1", + "value": "0x40" + }, + "9014": { + "op": "SHL" + }, + "9015": { + "op": "SUB" + }, + "9016": { + "op": "DUP3" + }, + "9017": { + "op": "GT" + }, + "9018": { + "op": "ISZERO" + }, + "9019": { + "op": "PUSH2", + "value": "0x2342" + }, + "9022": { + "op": "JUMPI" + }, + "9023": { + "op": "PUSH0" + }, + "9024": { + "op": "PUSH0" + }, + "9025": { + "op": "REVERT" + }, + "9026": { + "op": "JUMPDEST" + }, + "9027": { + "op": "PUSH1", + "value": "0x20" + }, + "9029": { + "op": "ADD" + }, + "9030": { + "op": "SWAP2" + }, + "9031": { + "op": "POP" + }, + "9032": { + "op": "CALLDATASIZE" + }, + "9033": { + "op": "DUP2" + }, + "9034": { + "op": "SWAP1" + }, + "9035": { + "op": "SUB" + }, + "9036": { + "op": "DUP3" + }, + "9037": { + "op": "SGT" + }, + "9038": { + "op": "ISZERO" + }, + "9039": { + "op": "PUSH2", + "value": "0x1B47" + }, + "9042": { + "op": "JUMPI" + }, + "9043": { + "op": "PUSH0" + }, + "9044": { + "op": "PUSH0" + }, + "9045": { + "op": "REVERT" + }, + "9046": { + "op": "JUMPDEST" + }, + "9047": { + "op": "PUSH0" + }, + "9048": { + "op": "PUSH1", + "value": "0x20" + }, + "9050": { + "op": "DUP3" + }, + "9051": { + "op": "DUP5" + }, + "9052": { + "op": "SUB" + }, + "9053": { + "op": "SLT" + }, + "9054": { + "op": "ISZERO" + }, + "9055": { + "op": "PUSH2", + "value": "0x2366" + }, + "9058": { + "op": "JUMPI" + }, + "9059": { + "op": "PUSH0" + }, + "9060": { + "op": "PUSH0" + }, + "9061": { + "op": "REVERT" + }, + "9062": { + "op": "JUMPDEST" + }, + "9063": { + "op": "DUP2" + }, + "9064": { + "op": "MLOAD" + }, + "9065": { + "op": "PUSH2", + "value": "0x6F9" + }, + "9068": { + "op": "DUP2" + }, + "9069": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "9072": { + "jump": "i", + "op": "JUMP" + }, + "9073": { + "op": "JUMPDEST" + }, + "9074": { + "op": "PUSH0" + }, + "9075": { + "op": "PUSH1", + "value": "0x20" + }, + "9077": { + "op": "DUP3" + }, + "9078": { + "op": "DUP5" + }, + "9079": { + "op": "SUB" + }, + "9080": { + "op": "SLT" + }, + "9081": { + "op": "ISZERO" + }, + "9082": { + "op": "PUSH2", + "value": "0x2381" + }, + "9085": { + "op": "JUMPI" + }, + "9086": { + "op": "PUSH0" + }, + "9087": { + "op": "PUSH0" + }, + "9088": { + "op": "REVERT" + }, + "9089": { + "op": "JUMPDEST" + }, + "9090": { + "op": "POP" + }, + "9091": { + "op": "MLOAD" + }, + "9092": { + "op": "SWAP2" + }, + "9093": { + "op": "SWAP1" + }, + "9094": { + "op": "POP" + }, + "9095": { + "jump": "o", + "op": "JUMP" + }, + "9096": { + "op": "JUMPDEST" + }, + "9097": { + "op": "DUP2" + }, + "9098": { + "op": "DUP4" + }, + "9099": { + "op": "MSTORE" + }, + "9100": { + "op": "DUP2" + }, + "9101": { + "op": "DUP2" + }, + "9102": { + "op": "PUSH1", + "value": "0x20" + }, + "9104": { + "op": "DUP6" + }, + "9105": { + "op": "ADD" + }, + "9106": { + "op": "CALLDATACOPY" + }, + "9107": { + "op": "POP" + }, + "9108": { + "op": "PUSH0" + }, + "9109": { + "op": "DUP3" + }, + "9110": { + "op": "DUP3" + }, + "9111": { + "op": "ADD" + }, + "9112": { + "op": "PUSH1", + "value": "0x20" + }, + "9114": { + "op": "SWAP1" + }, + "9115": { + "op": "DUP2" + }, + "9116": { + "op": "ADD" + }, + "9117": { + "op": "SWAP2" + }, + "9118": { + "op": "SWAP1" + }, + "9119": { + "op": "SWAP2" + }, + "9120": { + "op": "MSTORE" + }, + "9121": { + "op": "PUSH1", + "value": "0x1F" + }, + "9123": { + "op": "SWAP1" + }, + "9124": { + "op": "SWAP2" + }, + "9125": { + "op": "ADD" + }, + "9126": { + "op": "PUSH1", + "value": "0x1F" + }, + "9128": { + "op": "NOT" + }, + "9129": { + "op": "AND" + }, + "9130": { + "op": "SWAP1" + }, + "9131": { + "op": "SWAP2" + }, + "9132": { + "op": "ADD" + }, + "9133": { + "op": "ADD" + }, + "9134": { + "op": "SWAP1" + }, + "9135": { + "jump": "o", + "op": "JUMP" + }, + "9136": { + "op": "JUMPDEST" + }, + "9137": { + "op": "PUSH1", + "value": "0x1" + }, + "9139": { + "op": "PUSH1", + "value": "0x1" + }, + "9141": { + "op": "PUSH1", + "value": "0xA0" + }, + "9143": { + "op": "SHL" + }, + "9144": { + "op": "SUB" + }, + "9145": { + "op": "DUP8" + }, + "9146": { + "op": "AND" + }, + "9147": { + "op": "DUP2" + }, + "9148": { + "op": "MSTORE" + }, + "9149": { + "op": "PUSH1", + "value": "0x80" + }, + "9151": { + "op": "PUSH1", + "value": "0x20" + }, + "9153": { + "op": "DUP3" + }, + "9154": { + "op": "ADD" + }, + "9155": { + "op": "DUP2" + }, + "9156": { + "op": "SWAP1" + }, + "9157": { + "op": "MSTORE" + }, + "9158": { + "op": "PUSH0" + }, + "9159": { + "op": "SWAP1" + }, + "9160": { + "op": "PUSH2", + "value": "0x23D4" + }, + "9163": { + "op": "SWAP1" + }, + "9164": { + "op": "DUP4" + }, + "9165": { + "op": "ADD" + }, + "9166": { + "op": "DUP8" + }, + "9167": { + "op": "DUP10" + }, + "9168": { + "op": "PUSH2", + "value": "0x2388" + }, + "9171": { + "jump": "i", + "op": "JUMP" + }, + "9172": { + "op": "JUMPDEST" + }, + "9173": { + "op": "DUP3" + }, + "9174": { + "op": "DUP2" + }, + "9175": { + "op": "SUB" + }, + "9176": { + "op": "PUSH1", + "value": "0x40" + }, + "9178": { + "op": "DUP5" + }, + "9179": { + "op": "ADD" + }, + "9180": { + "op": "MSTORE" + }, + "9181": { + "op": "PUSH2", + "value": "0x23E7" + }, + "9184": { + "op": "DUP2" + }, + "9185": { + "op": "DUP7" + }, + "9186": { + "op": "DUP9" + }, + "9187": { + "op": "PUSH2", + "value": "0x2388" + }, + "9190": { + "jump": "i", + "op": "JUMP" + }, + "9191": { + "op": "JUMPDEST" + }, + "9192": { + "op": "SWAP2" + }, + "9193": { + "op": "POP" + }, + "9194": { + "op": "POP" + }, + "9195": { + "op": "PUSH1", + "value": "0x1" + }, + "9197": { + "op": "DUP1" + }, + "9198": { + "op": "PUSH1", + "value": "0xA0" + }, + "9200": { + "op": "SHL" + }, + "9201": { + "op": "SUB" + }, + "9202": { + "op": "DUP4" + }, + "9203": { + "op": "AND" + }, + "9204": { + "op": "PUSH1", + "value": "0x60" + }, + "9206": { + "op": "DUP4" + }, + "9207": { + "op": "ADD" + }, + "9208": { + "op": "MSTORE" + }, + "9209": { + "op": "SWAP8" + }, + "9210": { + "op": "SWAP7" + }, + "9211": { + "op": "POP" + }, + "9212": { + "op": "POP" + }, + "9213": { + "op": "POP" + }, + "9214": { + "op": "POP" + }, + "9215": { + "op": "POP" + }, + "9216": { + "op": "POP" + }, + "9217": { + "op": "POP" + }, + "9218": { + "jump": "o", + "op": "JUMP" + }, + "9219": { + "op": "JUMPDEST" + }, + "9220": { + "op": "PUSH0" + }, + "9221": { + "op": "PUSH1", + "value": "0x1" + }, + "9223": { + "op": "DUP3" + }, + "9224": { + "op": "ADD" + }, + "9225": { + "op": "PUSH2", + "value": "0x2420" + }, + "9228": { + "op": "JUMPI" + }, + "9229": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "9234": { + "op": "PUSH1", + "value": "0xE0" + }, + "9236": { + "op": "SHL" + }, + "9237": { + "op": "PUSH0" + }, + "9238": { + "op": "MSTORE" + }, + "9239": { + "op": "PUSH1", + "value": "0x11" + }, + "9241": { + "op": "PUSH1", + "value": "0x4" + }, + "9243": { + "op": "MSTORE" + }, + "9244": { + "op": "PUSH1", + "value": "0x24" + }, + "9246": { + "op": "PUSH0" + }, + "9247": { + "op": "REVERT" + }, + "9248": { + "op": "JUMPDEST" + }, + "9249": { + "op": "POP" + }, + "9250": { + "op": "PUSH1", + "value": "0x1" + }, + "9252": { + "op": "ADD" + }, + "9253": { + "op": "SWAP1" + }, + "9254": { + "jump": "o", + "op": "JUMP" + }, + "9255": { + "op": "JUMPDEST" + }, + "9256": { + "op": "PUSH1", + "value": "0x1" + }, + "9258": { + "op": "DUP2" + }, + "9259": { + "op": "DUP2" + }, + "9260": { + "op": "SHR" + }, + "9261": { + "op": "SWAP1" + }, + "9262": { + "op": "DUP3" + }, + "9263": { + "op": "AND" + }, + "9264": { + "op": "DUP1" + }, + "9265": { + "op": "PUSH2", + "value": "0x243B" + }, + "9268": { + "op": "JUMPI" + }, + "9269": { + "op": "PUSH1", + "value": "0x7F" + }, + "9271": { + "op": "DUP3" + }, + "9272": { + "op": "AND" + }, + "9273": { + "op": "SWAP2" + }, + "9274": { + "op": "POP" + }, + "9275": { + "op": "JUMPDEST" + }, + "9276": { + "op": "PUSH1", + "value": "0x20" + }, + "9278": { + "op": "DUP3" + }, + "9279": { + "op": "LT" + }, + "9280": { + "op": "DUP2" + }, + "9281": { + "op": "SUB" + }, + "9282": { + "op": "PUSH2", + "value": "0x2459" + }, + "9285": { + "op": "JUMPI" + }, + "9286": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "9291": { + "op": "PUSH1", + "value": "0xE0" + }, + "9293": { + "op": "SHL" + }, + "9294": { + "op": "PUSH0" + }, + "9295": { + "op": "MSTORE" + }, + "9296": { + "op": "PUSH1", + "value": "0x22" + }, + "9298": { + "op": "PUSH1", + "value": "0x4" + }, + "9300": { + "op": "MSTORE" + }, + "9301": { + "op": "PUSH1", + "value": "0x24" + }, + "9303": { + "op": "PUSH0" + }, + "9304": { + "op": "REVERT" + }, + "9305": { + "op": "JUMPDEST" + }, + "9306": { + "op": "POP" + }, + "9307": { + "op": "SWAP2" + }, + "9308": { + "op": "SWAP1" + }, + "9309": { + "op": "POP" + }, + "9310": { + "jump": "o", + "op": "JUMP" + }, + "9311": { + "op": "JUMPDEST" + }, + "9312": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "9317": { + "op": "PUSH1", + "value": "0xE0" + }, + "9319": { + "op": "SHL" + }, + "9320": { + "op": "PUSH0" + }, + "9321": { + "op": "MSTORE" + }, + "9322": { + "op": "PUSH1", + "value": "0x21" + }, + "9324": { + "op": "PUSH1", + "value": "0x4" + }, + "9326": { + "op": "MSTORE" + }, + "9327": { + "op": "PUSH1", + "value": "0x24" + }, + "9329": { + "op": "PUSH0" + }, + "9330": { + "op": "REVERT" + }, + "9331": { + "op": "JUMPDEST" + }, + "9332": { + "op": "DUP2" + }, + "9333": { + "op": "DUP4" + }, + "9334": { + "op": "DUP3" + }, + "9335": { + "op": "CALLDATACOPY" + }, + "9336": { + "op": "PUSH0" + }, + "9337": { + "op": "SWAP2" + }, + "9338": { + "op": "ADD" + }, + "9339": { + "op": "SWAP1" + }, + "9340": { + "op": "DUP2" + }, + "9341": { + "op": "MSTORE" + }, + "9342": { + "op": "SWAP2" + }, + "9343": { + "op": "SWAP1" + }, + "9344": { + "op": "POP" + }, + "9345": { + "jump": "o", + "op": "JUMP" + }, + "9346": { + "op": "JUMPDEST" + }, + "9347": { + "op": "PUSH1", + "value": "0x1F" + }, + "9349": { + "op": "DUP3" + }, + "9350": { + "op": "GT" + }, + "9351": { + "op": "ISZERO" + }, + "9352": { + "op": "PUSH2", + "value": "0x1176" + }, + "9355": { + "op": "JUMPI" + }, + "9356": { + "op": "DUP1" + }, + "9357": { + "op": "PUSH0" + }, + "9358": { + "op": "MSTORE" + }, + "9359": { + "op": "PUSH1", + "value": "0x20" + }, + "9361": { + "op": "PUSH0" + }, + "9362": { + "op": "KECCAK256" + }, + "9363": { + "op": "PUSH1", + "value": "0x1F" + }, + "9365": { + "op": "DUP5" + }, + "9366": { + "op": "ADD" + }, + "9367": { + "op": "PUSH1", + "value": "0x5" + }, + "9369": { + "op": "SHR" + }, + "9370": { + "op": "DUP2" + }, + "9371": { + "op": "ADD" + }, + "9372": { + "op": "PUSH1", + "value": "0x20" + }, + "9374": { + "op": "DUP6" + }, + "9375": { + "op": "LT" + }, + "9376": { + "op": "ISZERO" + }, + "9377": { + "op": "PUSH2", + "value": "0x24A7" + }, + "9380": { + "op": "JUMPI" + }, + "9381": { + "op": "POP" + }, + "9382": { + "op": "DUP1" + }, + "9383": { + "op": "JUMPDEST" + }, + "9384": { + "op": "PUSH1", + "value": "0x1F" + }, + "9386": { + "op": "DUP5" + }, + "9387": { + "op": "ADD" + }, + "9388": { + "op": "PUSH1", + "value": "0x5" + }, + "9390": { + "op": "SHR" + }, + "9391": { + "op": "DUP3" + }, + "9392": { + "op": "ADD" + }, + "9393": { + "op": "SWAP2" + }, + "9394": { + "op": "POP" + }, + "9395": { + "op": "JUMPDEST" + }, + "9396": { + "op": "DUP2" + }, + "9397": { + "op": "DUP2" + }, + "9398": { + "op": "LT" + }, + "9399": { + "op": "ISZERO" + }, + "9400": { + "op": "PUSH2", + "value": "0xA69" + }, + "9403": { + "op": "JUMPI" + }, + "9404": { + "op": "PUSH0" + }, + "9405": { + "op": "DUP2" + }, + "9406": { + "op": "SSTORE" + }, + "9407": { + "op": "PUSH1", + "value": "0x1" + }, + "9409": { + "op": "ADD" + }, + "9410": { + "op": "PUSH2", + "value": "0x24B3" + }, + "9413": { + "op": "JUMP" + }, + "9414": { + "op": "JUMPDEST" + }, + "9415": { + "op": "DUP2" + }, + "9416": { + "op": "MLOAD" + }, + "9417": { + "op": "PUSH1", + "value": "0x1" + }, + "9419": { + "op": "PUSH1", + "value": "0x1" + }, + "9421": { + "op": "PUSH1", + "value": "0x40" + }, + "9423": { + "op": "SHL" + }, + "9424": { + "op": "SUB" + }, + "9425": { + "op": "DUP2" + }, + "9426": { + "op": "GT" + }, + "9427": { + "op": "ISZERO" + }, + "9428": { + "op": "PUSH2", + "value": "0x24DF" + }, + "9431": { + "op": "JUMPI" + }, + "9432": { + "op": "PUSH2", + "value": "0x24DF" + }, + "9435": { + "op": "PUSH2", + "value": "0x1D2A" + }, + "9438": { + "jump": "i", + "op": "JUMP" + }, + "9439": { + "op": "JUMPDEST" + }, + "9440": { + "op": "PUSH2", + "value": "0x24F3" + }, + "9443": { + "op": "DUP2" + }, + "9444": { + "op": "PUSH2", + "value": "0x24ED" + }, + "9447": { + "op": "DUP5" + }, + "9448": { + "op": "SLOAD" + }, + "9449": { + "op": "PUSH2", + "value": "0x2427" + }, + "9452": { + "jump": "i", + "op": "JUMP" + }, + "9453": { + "op": "JUMPDEST" + }, + "9454": { + "op": "DUP5" + }, + "9455": { + "op": "PUSH2", + "value": "0x2482" + }, + "9458": { + "jump": "i", + "op": "JUMP" + }, + "9459": { + "op": "JUMPDEST" + }, + "9460": { + "op": "PUSH1", + "value": "0x20" + }, + "9462": { + "op": "PUSH1", + "value": "0x1F" + }, + "9464": { + "op": "DUP3" + }, + "9465": { + "op": "GT" + }, + "9466": { + "op": "PUSH1", + "value": "0x1" + }, + "9468": { + "op": "DUP2" + }, + "9469": { + "op": "EQ" + }, + "9470": { + "op": "PUSH2", + "value": "0x2525" + }, + "9473": { + "op": "JUMPI" + }, + "9474": { + "op": "PUSH0" + }, + "9475": { + "op": "DUP4" + }, + "9476": { + "op": "ISZERO" + }, + "9477": { + "op": "PUSH2", + "value": "0x250E" + }, + "9480": { + "op": "JUMPI" + }, + "9481": { + "op": "POP" + }, + "9482": { + "op": "DUP5" + }, + "9483": { + "op": "DUP3" + }, + "9484": { + "op": "ADD" + }, + "9485": { + "op": "MLOAD" + }, + "9486": { + "op": "JUMPDEST" + }, + "9487": { + "op": "PUSH0" + }, + "9488": { + "op": "NOT" + }, + "9489": { + "op": "PUSH1", + "value": "0x3" + }, + "9491": { + "op": "DUP6" + }, + "9492": { + "op": "SWAP1" + }, + "9493": { + "op": "SHL" + }, + "9494": { + "op": "SHR" + }, + "9495": { + "op": "NOT" + }, + "9496": { + "op": "AND" + }, + "9497": { + "op": "PUSH1", + "value": "0x1" + }, + "9499": { + "op": "DUP5" + }, + "9500": { + "op": "SWAP1" + }, + "9501": { + "op": "SHL" + }, + "9502": { + "op": "OR" + }, + "9503": { + "op": "DUP5" + }, + "9504": { + "op": "SSTORE" + }, + "9505": { + "op": "PUSH2", + "value": "0xA69" + }, + "9508": { + "op": "JUMP" + }, + "9509": { + "op": "JUMPDEST" + }, + "9510": { + "op": "PUSH0" + }, + "9511": { + "op": "DUP5" + }, + "9512": { + "op": "DUP2" + }, + "9513": { + "op": "MSTORE" + }, + "9514": { + "op": "PUSH1", + "value": "0x20" + }, + "9516": { + "op": "DUP2" + }, + "9517": { + "op": "KECCAK256" + }, + "9518": { + "op": "PUSH1", + "value": "0x1F" + }, + "9520": { + "op": "NOT" + }, + "9521": { + "op": "DUP6" + }, + "9522": { + "op": "AND" + }, + "9523": { + "op": "SWAP2" + }, + "9524": { + "op": "JUMPDEST" + }, + "9525": { + "op": "DUP3" + }, + "9526": { + "op": "DUP2" + }, + "9527": { + "op": "LT" + }, + "9528": { + "op": "ISZERO" + }, + "9529": { + "op": "PUSH2", + "value": "0x2554" + }, + "9532": { + "op": "JUMPI" + }, + "9533": { + "op": "DUP8" + }, + "9534": { + "op": "DUP6" + }, + "9535": { + "op": "ADD" + }, + "9536": { + "op": "MLOAD" + }, + "9537": { + "op": "DUP3" + }, + "9538": { + "op": "SSTORE" + }, + "9539": { + "op": "PUSH1", + "value": "0x20" + }, + "9541": { + "op": "SWAP5" + }, + "9542": { + "op": "DUP6" + }, + "9543": { + "op": "ADD" + }, + "9544": { + "op": "SWAP5" + }, + "9545": { + "op": "PUSH1", + "value": "0x1" + }, + "9547": { + "op": "SWAP1" + }, + "9548": { + "op": "SWAP3" + }, + "9549": { + "op": "ADD" + }, + "9550": { + "op": "SWAP2" + }, + "9551": { + "op": "ADD" + }, + "9552": { + "op": "PUSH2", + "value": "0x2534" + }, + "9555": { + "op": "JUMP" + }, + "9556": { + "op": "JUMPDEST" + }, + "9557": { + "op": "POP" + }, + "9558": { + "op": "DUP5" + }, + "9559": { + "op": "DUP3" + }, + "9560": { + "op": "LT" + }, + "9561": { + "op": "ISZERO" + }, + "9562": { + "op": "PUSH2", + "value": "0x2571" + }, + "9565": { + "op": "JUMPI" + }, + "9566": { + "op": "DUP7" + }, + "9567": { + "op": "DUP5" + }, + "9568": { + "op": "ADD" + }, + "9569": { + "op": "MLOAD" + }, + "9570": { + "op": "PUSH0" + }, + "9571": { + "op": "NOT" + }, + "9572": { + "op": "PUSH1", + "value": "0x3" + }, + "9574": { + "op": "DUP8" + }, + "9575": { + "op": "SWAP1" + }, + "9576": { + "op": "SHL" + }, + "9577": { + "op": "PUSH1", + "value": "0xF8" + }, + "9579": { + "op": "AND" + }, + "9580": { + "op": "SHR" + }, + "9581": { + "op": "NOT" + }, + "9582": { + "op": "AND" + }, + "9583": { + "op": "DUP2" + }, + "9584": { + "op": "SSTORE" + }, + "9585": { + "op": "JUMPDEST" + }, + "9586": { + "op": "POP" + }, + "9587": { + "op": "POP" + }, + "9588": { + "op": "POP" + }, + "9589": { + "op": "POP" + }, + "9590": { + "op": "PUSH1", + "value": "0x1" + }, + "9592": { + "op": "SWAP1" + }, + "9593": { + "op": "DUP2" + }, + "9594": { + "op": "SHL" + }, + "9595": { + "op": "ADD" + }, + "9596": { + "op": "SWAP1" + }, + "9597": { + "op": "SSTORE" + }, + "9598": { + "op": "POP" + }, + "9599": { + "jump": "o", + "op": "JUMP" + }, + "9600": { + "op": "JUMPDEST" + }, + "9601": { + "op": "PUSH0" + }, + "9602": { + "op": "PUSH0" + }, + "9603": { + "op": "PUSH0" + }, + "9604": { + "op": "PUSH1", + "value": "0x60" + }, + "9606": { + "op": "DUP5" + }, + "9607": { + "op": "DUP7" + }, + "9608": { + "op": "SUB" + }, + "9609": { + "op": "SLT" + }, + "9610": { + "op": "ISZERO" + }, + "9611": { + "op": "PUSH2", + "value": "0x2592" + }, + "9614": { + "op": "JUMPI" + }, + "9615": { + "op": "PUSH0" + }, + "9616": { + "op": "PUSH0" + }, + "9617": { + "op": "REVERT" + }, + "9618": { + "op": "JUMPDEST" + }, + "9619": { + "op": "DUP4" + }, + "9620": { + "op": "MLOAD" + }, + "9621": { + "op": "PUSH1", + "value": "0x20" + }, + "9623": { + "op": "DUP6" + }, + "9624": { + "op": "ADD" + }, + "9625": { + "op": "MLOAD" + }, + "9626": { + "op": "SWAP1" + }, + "9627": { + "op": "SWAP4" + }, + "9628": { + "op": "POP" + }, + "9629": { + "op": "PUSH2", + "value": "0x25A5" + }, + "9632": { + "op": "DUP2" + }, + "9633": { + "op": "PUSH2", + "value": "0x1AF6" + }, + "9636": { + "jump": "i", + "op": "JUMP" + }, + "9637": { + "op": "JUMPDEST" + }, + "9638": { + "op": "PUSH1", + "value": "0x40" + }, + "9640": { + "op": "SWAP5" + }, + "9641": { + "op": "SWAP1" + }, + "9642": { + "op": "SWAP5" + }, + "9643": { + "op": "ADD" + }, + "9644": { + "op": "MLOAD" + }, + "9645": { + "op": "SWAP3" + }, + "9646": { + "op": "SWAP6" + }, + "9647": { + "op": "SWAP4" + }, + "9648": { + "op": "SWAP5" + }, + "9649": { + "op": "POP" + }, + "9650": { + "op": "SWAP2" + }, + "9651": { + "op": "SWAP3" + }, + "9652": { + "op": "SWAP2" + }, + "9653": { + "op": "POP" + }, + "9654": { + "op": "POP" + }, + "9655": { + "jump": "o", + "op": "JUMP" + }, + "9656": { + "op": "JUMPDEST" + }, + "9657": { + "op": "PUSH0" + }, + "9658": { + "op": "DUP3" + }, + "9659": { + "op": "MLOAD" + }, + "9660": { + "op": "DUP1" + }, + "9661": { + "op": "PUSH1", + "value": "0x20" + }, + "9663": { + "op": "DUP6" + }, + "9664": { + "op": "ADD" + }, + "9665": { + "op": "DUP5" + }, + "9666": { + "op": "MCOPY" + }, + "9667": { + "op": "PUSH0" + }, + "9668": { + "op": "SWAP3" + }, + "9669": { + "op": "ADD" + }, + "9670": { + "op": "SWAP2" + }, + "9671": { + "op": "DUP3" + }, + "9672": { + "op": "MSTORE" + }, + "9673": { + "op": "POP" + }, + "9674": { + "op": "SWAP2" + }, + "9675": { + "op": "SWAP1" + }, + "9676": { + "op": "POP" + }, + "9677": { + "jump": "o", + "op": "JUMP" + } + }, + "sha1": "bc4c54fad80a0accdfe0651f39aeb188fcb67257", + "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport {HyperAccountMinterUpgradable} from \"./HyperAccountMinterUpgradable.sol\";\n\ncontract HyperAccountMinter is HyperAccountMinterUpgradable {\n constructor(address _hypermap) HyperAccountMinterUpgradable(_hypermap) {}\n\n function initialize() public initializer {\n __UUPSUpgradeable_init();\n __EIP712_init(\"HyperAccountMinter\", \"1\");\n }\n}\n", + "sourceMap": "147:279:100:-:0;;;1171:4:68;1128:48;;213:73:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;273:9;1967:22:101;:20;:22::i;:::-;-1:-1:-1;;;;;2000:32:101;;;-1:-1:-1;147:279:100;;7711:422:67;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:67;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:67;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:67;-1:-1:-1;;;;;8035:33:67;;;;;8087:29;;453:50:149;;;8087:29:67;;441:2:149;426:18;8087:29:67;;;;;;;7981:146;7760:373;7711:422::o;14:290:149:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:149;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:149:o;309:200::-;147:279:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "sourcePath": "src/account/HyperAccountMinter.sol", + "type": "contract" +} \ No newline at end of file diff --git a/contracts/HyperAccountPermissionedMinter.json b/contracts/HyperAccountPermissionedMinter.json new file mode 100644 index 00000000..5cc0be87 --- /dev/null +++ b/contracts/HyperAccountPermissionedMinter.json @@ -0,0 +1,45999 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_hypermap", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "error", + "type": "bytes" + } + ], + "name": "ExecuteError", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "InsufficientAllowance", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "actual", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + } + ], + "name": "InvalidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "NotOperatorOrEntryPoint", + "type": "error" + }, + { + "inputs": [], + "name": "OwnershipCycle", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [], + "name": "EIP712DomainChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "SIG_VALIDATION_FAILED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SIG_VALIDATION_SUCCEEDED", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_allowance", + "type": "uint256" + } + ], + "name": "auth", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "who", + "type": "address" + } + ], + "name": "deauth", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "eip712Domain", + "outputs": [ + { + "internalType": "bytes1", + "name": "fields", + "type": "bytes1" + }, + { + "internalType": "string", + "name": "name", + "type": "string" + }, + { + "internalType": "string", + "name": "version", + "type": "string" + }, + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "verifyingContract", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256[]", + "name": "extensions", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "entryPoint", + "outputs": [ + { + "internalType": "contract IEntryPoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint8", + "name": "operation", + "type": "uint8" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint8", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "txGas", + "type": "uint256" + } + ], + "name": "execute", + "outputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct BaseAccount.Call[]", + "name": "calls", + "type": "tuple[]" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getNonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "hypermap", + "outputs": [ + { + "internalType": "contract IHypermap", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "isOperator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "isValidSigner", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "bytes", + "name": "name", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "initialization", + "type": "bytes" + }, + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "mint", + "outputs": [ + { + "internalType": "address", + "name": "tba", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "receivedTokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "state", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "uint256", + "name": "chainId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "tokenContract", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "accountGasLimits", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "gasFees", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct PackedUserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "allSourcePaths": { + "10": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC5267.sol", + "101": "src/account/HyperAccountMinterUpgradable.sol", + "104": "src/account/HyperAccountPermissionedMinter.sol", + "109": "src/account/mech/Account.sol", + "110": "src/account/mech/ERC721TokenBoundMech.sol", + "111": "src/account/mech/Mech.sol", + "112": "src/account/mech/Receiver.sol", + "113": "src/account/mech/TokenBoundMech.sol", + "126": "src/interfaces/IHyperAccountMinter.sol", + "129": "src/interfaces/IHyperAccountPermissioned.sol", + "13": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/draft-IERC1822.sol", + "134": "src/interfaces/IMech.sol", + "5": "./dependencies/@openzeppelin-contracts-5.1.0/interfaces/IERC1271.sol", + "67": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/Initializable.sol", + "68": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/proxy/utils/UUPSUpgradeable.sol", + "75": "./dependencies/@openzeppelin-contracts-upgradeable-5.1.0/utils/cryptography/EIP712Upgradeable.sol", + "77": "./dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Account.sol", + "78": "./dependencies/erc6551-reference-0.3.1/src/interfaces/IERC6551Executable.sol", + "82": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC1155TokenReceiver.sol", + "83": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC721TokenReceiver.sol", + "84": "./dependencies/safe-global-safe-smart-account-1.5.0/contracts/interfaces/ERC777TokensRecipient.sol", + "85": "dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/core/BaseAccount.sol", + "88": "dependencies/eth-infinitism-account-abstraction-0.8.0/contracts/interfaces/IAccount.sol", + "96": "src/account/HyperAccount.sol" + }, + "ast": { + "absolutePath": "src/account/HyperAccountPermissionedMinter.sol", + "exportedSymbols": { + "HyperAccountMinterUpgradable": [ + 914 + ], + "HyperAccountPermissionedMinter": [ + 2169 + ], + "IHyperAccountPermissioned": [ + 8071 + ] + }, + "id": 2170, + "license": "Apache-2.0", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1976, + "literals": [ + "solidity", + "^", + "0.8", + ".27" + ], + "nodeType": "PragmaDirective", + "src": "39:24:104" + }, + { + "absolutePath": "src/account/HyperAccountMinterUpgradable.sol", + "file": "./HyperAccountMinterUpgradable.sol", + "id": 1978, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2170, + "sourceUnit": 915, + "src": "65:80:104", + "symbolAliases": [ + { + "foreign": { + "id": 1977, + "name": "HyperAccountMinterUpgradable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 914, + "src": "73:28:104", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "src/interfaces/IHyperAccountPermissioned.sol", + "file": "../../src/interfaces/IHyperAccountPermissioned.sol", + "id": 1980, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2170, + "sourceUnit": 8072, + "src": "146:93:104", + "symbolAliases": [ + { + "foreign": { + "id": 1979, + "name": "IHyperAccountPermissioned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8071, + "src": "154:25:104", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 1981, + "name": "IHyperAccountPermissioned", + "nameLocations": [ + "284:25:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 8071, + "src": "284:25:104" + }, + "id": 1982, + "nodeType": "InheritanceSpecifier", + "src": "284:25:104" + }, + { + "baseName": { + "id": 1983, + "name": "HyperAccountMinterUpgradable", + "nameLocations": [ + "311:28:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 914, + "src": "311:28:104" + }, + "id": 1984, + "nodeType": "InheritanceSpecifier", + "src": "311:28:104" + } + ], + "canonicalName": "HyperAccountPermissionedMinter", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 2169, + "linearizedBaseContracts": [ + 2169, + 914, + 15626, + 28628, + 15282, + 28603, + 15100, + 85, + 3694, + 4328, + 17446, + 4052, + 4152, + 17392, + 17412, + 17374, + 3613, + 17278, + 8539, + 25136, + 15976, + 17337, + 7929, + 8071 + ], + "name": "HyperAccountPermissionedMinter", + "nameLocation": "250:30:104", + "nodeType": "ContractDefinition", + "nodes": [ + { + "errorSelector": "bf2b58ec", + "id": 1988, + "name": "InsufficientAllowance", + "nameLocation": "366:21:104", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 1987, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1986, + "mutability": "mutable", + "name": "who", + "nameLocation": "396:3:104", + "nodeType": "VariableDeclaration", + "scope": 1988, + "src": "388:11:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1985, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "388:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "387:13:104" + }, + "src": "360:41:104" + }, + { + "constant": true, + "documentation": { + "id": 1989, + "nodeType": "StructuredDocumentation", + "src": "407:268:104", + "text": "@dev The storage slot at which HyperAccountPermissionedMinter storage starts, following the EIP-7201 standard.\n @dev Calculated as `keccak256(abi.encode(uint256(keccak256(\"hyperware.HyperAccountPermissionedMinter.storage\")) - 1)) & ~bytes32(uint256(0xff))`." + }, + "id": 1992, + "mutability": "constant", + "name": "_HYPERACCOUNT_PERMISSIONED_MINTER_STORAGE", + "nameLocation": "705:41:104", + "nodeType": "VariableDeclaration", + "scope": 2169, + "src": "680:143:104", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1990, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "680:7:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833356262653438373363383935343539616234626461356632363566356535666136356534623931356362653864633237616466366561316661336261343030", + "id": 1991, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "757:66:104", + "typeDescriptions": { + "typeIdentifier": "t_rational_24304558620161776344157792315721083877530010080994943630367872567043073745920_by_1", + "typeString": "int_const 2430...(69 digits omitted)...5920" + }, + "value": "0x35bbe4873c895459ab4bda5f265f5e5fa65e4b915cbe8dc27adf6ea1fa3ba400" + }, + "visibility": "private" + }, + { + "canonicalName": "HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage", + "id": 1997, + "members": [ + { + "constant": false, + "id": 1996, + "mutability": "mutable", + "name": "allowances", + "nameLocation": "913:10:104", + "nodeType": "VariableDeclaration", + "scope": 1997, + "src": "885:38:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1995, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 1993, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "893:7:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "885:27:104", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "904:7:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "HyperAccountPermissionedMinterStorage", + "nameLocation": "837:37:104", + "nodeType": "StructDefinition", + "scope": 2169, + "src": "830:100:104", + "visibility": "public" + }, + { + "body": { + "id": 2004, + "nodeType": "Block", + "src": "1089:100:104", + "statements": [ + { + "AST": { + "nativeSrc": "1108:75:104", + "nodeType": "YulBlock", + "src": "1108:75:104", + "statements": [ + { + "nativeSrc": "1122:51:104", + "nodeType": "YulAssignment", + "src": "1122:51:104", + "value": { + "name": "_HYPERACCOUNT_PERMISSIONED_MINTER_STORAGE", + "nativeSrc": "1132:41:104", + "nodeType": "YulIdentifier", + "src": "1132:41:104" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1122:6:104", + "nodeType": "YulIdentifier", + "src": "1122:6:104" + } + ] + } + ] + }, + "evmVersion": "cancun", + "externalReferences": [ + { + "declaration": 2001, + "isOffset": false, + "isSlot": true, + "src": "1122:6:104", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 1992, + "isOffset": false, + "isSlot": false, + "src": "1132:41:104", + "valueSize": 1 + } + ], + "id": 2003, + "nodeType": "InlineAssembly", + "src": "1099:84:104" + } + ] + }, + "id": 2005, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getHyperAccountPermissionedMinterStorage", + "nameLocation": "945:41:104", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1998, + "nodeType": "ParameterList", + "parameters": [], + "src": "986:2:104" + }, + "returnParameters": { + "id": 2002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2001, + "mutability": "mutable", + "name": "$", + "nameLocation": "1082:1:104", + "nodeType": "VariableDeclaration", + "scope": 2005, + "src": "1036:47:104", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + }, + "typeName": { + "id": 2000, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1999, + "name": "HyperAccountPermissionedMinterStorage", + "nameLocations": [ + "1036:37:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1997, + "src": "1036:37:104" + }, + "referencedDeclaration": 1997, + "src": "1036:37:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1035:49:104" + }, + "scope": 2169, + "src": "936:253:104", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2013, + "nodeType": "Block", + "src": "1266:2:104", + "statements": [] + }, + "id": 2014, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "id": 2010, + "name": "_hypermap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2007, + "src": "1255:9:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 2011, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 2009, + "name": "HyperAccountMinterUpgradable", + "nameLocations": [ + "1226:28:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 914, + "src": "1226:28:104" + }, + "nodeType": "ModifierInvocation", + "src": "1226:39:104" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2008, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2007, + "mutability": "mutable", + "name": "_hypermap", + "nameLocation": "1215:9:104", + "nodeType": "VariableDeclaration", + "scope": 2014, + "src": "1207:17:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2006, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1207:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1206:19:104" + }, + "returnParameters": { + "id": 2012, + "nodeType": "ParameterList", + "parameters": [], + "src": "1266:0:104" + }, + "scope": 2169, + "src": "1195:73:104", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 7909 + ], + "body": { + "id": 2027, + "nodeType": "Block", + "src": "1315:103:104", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2019, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15154, + "src": "1325:22:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2020, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1325:24:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2021, + "nodeType": "ExpressionStatement", + "src": "1325:24:104" + }, + { + "expression": { + "arguments": [ + { + "hexValue": "48797065724163636f756e745065726d697373696f6e65644d696e746572", + "id": 2023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1373:32:104", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6e6737d0e59a20eca031083125115ced829c248de29a82083bd792feb5105091", + "typeString": "literal_string \"HyperAccountPermissionedMinter\"" + }, + "value": "HyperAccountPermissionedMinter" + }, + { + "hexValue": "31", + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1407:3:104", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_6e6737d0e59a20eca031083125115ced829c248de29a82083bd792feb5105091", + "typeString": "literal_string \"HyperAccountPermissionedMinter\"" + }, + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 2022, + "name": "__EIP712_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15339, + "src": "1359:13:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 2025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1359:52:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2026, + "nodeType": "ExpressionStatement", + "src": "1359:52:104" + } + ] + }, + "functionSelector": "8129fc1c", + "id": 2028, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2017, + "kind": "modifierInvocation", + "modifierName": { + "id": 2016, + "name": "initializer", + "nameLocations": [ + "1303:11:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14954, + "src": "1303:11:104" + }, + "nodeType": "ModifierInvocation", + "src": "1303:11:104" + } + ], + "name": "initialize", + "nameLocation": "1283:10:104", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2015, + "nodeType": "ParameterList", + "parameters": [], + "src": "1293:2:104" + }, + "returnParameters": { + "id": 2018, + "nodeType": "ParameterList", + "parameters": [], + "src": "1315:0:104" + }, + "scope": 2169, + "src": "1274:144:104", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 8058 + ], + "body": { + "id": 2052, + "nodeType": "Block", + "src": "1577:150:104", + "statements": [ + { + "assignments": [ + 2040 + ], + "declarations": [ + { + "constant": false, + "id": 2040, + "mutability": "mutable", + "name": "$", + "nameLocation": "1633:1:104", + "nodeType": "VariableDeclaration", + "scope": 2052, + "src": "1587:47:104", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + }, + "typeName": { + "id": 2039, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2038, + "name": "HyperAccountPermissionedMinterStorage", + "nameLocations": [ + "1587:37:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1997, + "src": "1587:37:104" + }, + "referencedDeclaration": 1997, + "src": "1587:37:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2043, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2041, + "name": "_getHyperAccountPermissionedMinterStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "1637:41:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr_$", + "typeString": "function () pure returns (struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer)" + } + }, + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1637:43:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1587:93:104" + }, + { + "expression": { + "id": 2050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2044, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2040, + "src": "1690:1:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "id": 2047, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1692:10:104", + "memberName": "allowances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1996, + "src": "1690:12:104", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2048, + "indexExpression": { + "id": 2046, + "name": "who", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2031, + "src": "1703:3:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1690:17:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2049, + "name": "_allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "1710:10:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1690:30:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2051, + "nodeType": "ExpressionStatement", + "src": "1690:30:104" + } + ] + }, + "documentation": { + "id": 2029, + "nodeType": "StructuredDocumentation", + "src": "1424:71:104", + "text": "@notice Authorize a minter to mint a specific number of sub-entries" + }, + "functionSelector": "e901d89b", + "id": 2053, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2036, + "kind": "modifierInvocation", + "modifierName": { + "id": 2035, + "name": "onlyOperator", + "nameLocations": [ + "1564:12:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3747, + "src": "1564:12:104" + }, + "nodeType": "ModifierInvocation", + "src": "1564:12:104" + } + ], + "name": "auth", + "nameLocation": "1509:4:104", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2034, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2031, + "mutability": "mutable", + "name": "who", + "nameLocation": "1522:3:104", + "nodeType": "VariableDeclaration", + "scope": 2053, + "src": "1514:11:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1514:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2033, + "mutability": "mutable", + "name": "_allowance", + "nameLocation": "1535:10:104", + "nodeType": "VariableDeclaration", + "scope": 2053, + "src": "1527:18:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1527:7:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1513:33:104" + }, + "returnParameters": { + "id": 2037, + "nodeType": "ParameterList", + "parameters": [], + "src": "1577:0:104" + }, + "scope": 2169, + "src": "1500:227:104", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 8063 + ], + "body": { + "id": 2074, + "nodeType": "Block", + "src": "1792:141:104", + "statements": [ + { + "assignments": [ + 2062 + ], + "declarations": [ + { + "constant": false, + "id": 2062, + "mutability": "mutable", + "name": "$", + "nameLocation": "1848:1:104", + "nodeType": "VariableDeclaration", + "scope": 2074, + "src": "1802:47:104", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + }, + "typeName": { + "id": 2061, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2060, + "name": "HyperAccountPermissionedMinterStorage", + "nameLocations": [ + "1802:37:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1997, + "src": "1802:37:104" + }, + "referencedDeclaration": 1997, + "src": "1802:37:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2065, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2063, + "name": "_getHyperAccountPermissionedMinterStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "1852:41:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr_$", + "typeString": "function () pure returns (struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer)" + } + }, + "id": 2064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1852:43:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1802:93:104" + }, + { + "expression": { + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2066, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "1905:1:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "id": 2069, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1907:10:104", + "memberName": "allowances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1996, + "src": "1905:12:104", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2070, + "indexExpression": { + "id": 2068, + "name": "who", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2055, + "src": "1918:3:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1905:17:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 2071, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1925:1:104", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1905:21:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2073, + "nodeType": "ExpressionStatement", + "src": "1905:21:104" + } + ] + }, + "functionSelector": "12084f59", + "id": 2075, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2058, + "kind": "modifierInvocation", + "modifierName": { + "id": 2057, + "name": "onlyOperator", + "nameLocations": [ + "1779:12:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3747, + "src": "1779:12:104" + }, + "nodeType": "ModifierInvocation", + "src": "1779:12:104" + } + ], + "name": "deauth", + "nameLocation": "1742:6:104", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2055, + "mutability": "mutable", + "name": "who", + "nameLocation": "1757:3:104", + "nodeType": "VariableDeclaration", + "scope": 2075, + "src": "1749:11:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1749:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1748:13:104" + }, + "returnParameters": { + "id": 2059, + "nodeType": "ParameterList", + "parameters": [], + "src": "1792:0:104" + }, + "scope": 2169, + "src": "1733:200:104", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 8070 + ], + "body": { + "id": 2093, + "nodeType": "Block", + "src": "2003:144:104", + "statements": [ + { + "assignments": [ + 2084 + ], + "declarations": [ + { + "constant": false, + "id": 2084, + "mutability": "mutable", + "name": "$", + "nameLocation": "2059:1:104", + "nodeType": "VariableDeclaration", + "scope": 2093, + "src": "2013:47:104", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + }, + "typeName": { + "id": 2083, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2082, + "name": "HyperAccountPermissionedMinterStorage", + "nameLocations": [ + "2013:37:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1997, + "src": "2013:37:104" + }, + "referencedDeclaration": 1997, + "src": "2013:37:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2087, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2085, + "name": "_getHyperAccountPermissionedMinterStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "2063:41:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr_$", + "typeString": "function () pure returns (struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer)" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2063:43:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2013:93:104" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 2088, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2084, + "src": "2123:1:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "id": 2089, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2125:10:104", + "memberName": "allowances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1996, + "src": "2123:12:104", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2091, + "indexExpression": { + "id": 2090, + "name": "who", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2077, + "src": "2136:3:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2123:17:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2081, + "id": 2092, + "nodeType": "Return", + "src": "2116:24:104" + } + ] + }, + "functionSelector": "3e5beab9", + "id": 2094, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1948:9:104", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2077, + "mutability": "mutable", + "name": "who", + "nameLocation": "1966:3:104", + "nodeType": "VariableDeclaration", + "scope": 2094, + "src": "1958:11:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1958:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1957:13:104" + }, + "returnParameters": { + "id": 2081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2080, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2094, + "src": "1994:7:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2079, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1994:7:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1993:9:104" + }, + "scope": 2169, + "src": "1939:208:104", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 803 + ], + "body": { + "id": 2115, + "nodeType": "Block", + "src": "2318:122:104", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2105, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2096, + "src": "2359:11:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 2103, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2335:5:104", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_HyperAccountPermissionedMinter_$2169_$", + "typeString": "type(contract super HyperAccountPermissionedMinter)" + } + }, + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2341:17:104", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 803, + "src": "2335:23:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2335:36:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2107, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2096, + "src": "2375:11:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2109, + "name": "IHyperAccountPermissioned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8071, + "src": "2395:25:104", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IHyperAccountPermissioned_$8071_$", + "typeString": "type(contract IHyperAccountPermissioned)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IHyperAccountPermissioned_$8071_$", + "typeString": "type(contract IHyperAccountPermissioned)" + } + ], + "id": 2108, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2390:4:104", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2390:31:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IHyperAccountPermissioned_$8071", + "typeString": "type(contract IHyperAccountPermissioned)" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2422:11:104", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "2390:43:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2375:58:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2335:98:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2102, + "id": 2114, + "nodeType": "Return", + "src": "2328:105:104" + } + ] + }, + "functionSelector": "01ffc9a7", + "id": 2116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "2162:17:104", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2099, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 2098, + "name": "HyperAccountMinterUpgradable", + "nameLocations": [ + "2261:28:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 914, + "src": "2261:28:104" + } + ], + "src": "2252:38:104" + }, + "parameters": { + "id": 2097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2096, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "2187:11:104", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "2180:18:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2095, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2180:6:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "2179:20:104" + }, + "returnParameters": { + "id": 2102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2101, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2116, + "src": "2308:4:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2100, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2308:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2307:6:104" + }, + "scope": 2169, + "src": "2153:287:104", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 846 + ], + "body": { + "id": 2167, + "nodeType": "Block", + "src": "2633:331:104", + "statements": [ + { + "assignments": [ + 2132 + ], + "declarations": [ + { + "constant": false, + "id": 2132, + "mutability": "mutable", + "name": "$", + "nameLocation": "2689:1:104", + "nodeType": "VariableDeclaration", + "scope": 2167, + "src": "2643:47:104", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + }, + "typeName": { + "id": 2131, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2130, + "name": "HyperAccountPermissionedMinterStorage", + "nameLocations": [ + "2643:37:104" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1997, + "src": "2643:37:104" + }, + "referencedDeclaration": 1997, + "src": "2643:37:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2135, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2133, + "name": "_getHyperAccountPermissionedMinterStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "2693:41:104", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr_$", + "typeString": "function () pure returns (struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer)" + } + }, + "id": 2134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2693:43:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2643:93:104" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 2136, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2132, + "src": "2751:1:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "id": 2137, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2753:10:104", + "memberName": "allowances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1996, + "src": "2751:12:104", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2140, + "indexExpression": { + "expression": { + "id": 2138, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2764:3:104", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2768:6:104", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2764:10:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2751:24:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "31", + "id": 2141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2778:1:104", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2751:28:104", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2149, + "nodeType": "IfStatement", + "src": "2747:99:104", + "trueBody": { + "id": 2148, + "nodeType": "Block", + "src": "2781:65:104", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 2144, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2824:3:104", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2828:6:104", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2824:10:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2143, + "name": "InsufficientAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1988, + "src": "2802:21:104", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$_t_error_$", + "typeString": "function (address) pure returns (error)" + } + }, + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2802:33:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_error", + "typeString": "error" + } + }, + "id": 2147, + "nodeType": "RevertStatement", + "src": "2795:40:104" + } + ] + } + }, + { + "expression": { + "id": 2157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2150, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2132, + "src": "2855:1:104", + "typeDescriptions": { + "typeIdentifier": "t_struct$_HyperAccountPermissionedMinterStorage_$1997_storage_ptr", + "typeString": "struct HyperAccountPermissionedMinter.HyperAccountPermissionedMinterStorage storage pointer" + } + }, + "id": 2154, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2857:10:104", + "memberName": "allowances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1996, + "src": "2855:12:104", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 2155, + "indexExpression": { + "expression": { + "id": 2152, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2868:3:104", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2872:6:104", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2868:10:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2855:24:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "hexValue": "31", + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2883:1:104", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2855:29:104", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2158, + "nodeType": "ExpressionStatement", + "src": "2855:29:104" + }, + { + "expression": { + "arguments": [ + { + "id": 2161, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "2916:2:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2162, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2120, + "src": "2920:4:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 2163, + "name": "initialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2122, + "src": "2926:14:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + { + "id": 2164, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2124, + "src": "2942:14:104", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2159, + "name": "_HYPERMAP", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "2901:9:104", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IHypermap_$8500", + "typeString": "contract IHypermap" + } + }, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2911:4:104", + "memberName": "mint", + "nodeType": "MemberAccess", + "referencedDeclaration": 8431, + "src": "2901:14:104", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_address_$returns$_t_address_$", + "typeString": "function (address,bytes memory,bytes memory,address) external returns (address)" + } + }, + "id": 2165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2901:56:104", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2129, + "id": 2166, + "nodeType": "Return", + "src": "2894:63:104" + } + ] + }, + "id": 2168, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "2455:5:104", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2126, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2590:8:104" + }, + "parameters": { + "id": 2125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2118, + "mutability": "mutable", + "name": "to", + "nameLocation": "2469:2:104", + "nodeType": "VariableDeclaration", + "scope": 2168, + "src": "2461:10:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2461:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2120, + "mutability": "mutable", + "name": "name", + "nameLocation": "2488:4:104", + "nodeType": "VariableDeclaration", + "scope": 2168, + "src": "2473:19:104", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2119, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2473:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2122, + "mutability": "mutable", + "name": "initialization", + "nameLocation": "2509:14:104", + "nodeType": "VariableDeclaration", + "scope": 2168, + "src": "2494:29:104", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2121, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2494:5:104", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2124, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "2533:14:104", + "nodeType": "VariableDeclaration", + "scope": 2168, + "src": "2525:22:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2525:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2460:88:104" + }, + "returnParameters": { + "id": 2129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2128, + "mutability": "mutable", + "name": "tba", + "nameLocation": "2624:3:104", + "nodeType": "VariableDeclaration", + "scope": 2168, + "src": "2616:11:104", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2616:7:104", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2615:13:104" + }, + "scope": 2169, + "src": "2446:518:104", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2170, + "src": "241:2725:104", + "usedErrors": [ + 1988, + 4168, + 7897, + 8516, + 14296, + 14301, + 14306, + 14863, + 14866, + 15127, + 15132, + 16694, + 16707, + 17042, + 29057, + 36773 + ], + "usedEvents": [ + 14871, + 28608, + 29024 + ] + } + ], + "src": "39:2928:104" + }, + "bytecode": "60c060405230608052348015610013575f5ffd5b50604051612a48380380612a48833981016040819052610032916100ff565b8061003b61004d565b6001600160a01b031660a0525061012c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161561009d5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100fc5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f6020828403121561010f575f5ffd5b81516001600160a01b0381168114610125575f5ffd5b9392505050565b60805160a0516128e66101625f395f81816104990152610f7a01525f81816111ec0152818161121501526113f001526128e65ff3fe6080604052600436106101bc575f3560e01c80638129fc1c116100f2578063b61d27f611610092578063d087d28811610062578063d087d28814610531578063e901d89b14610545578063f23a6e6114610564578063fc0c546a14610590575f5ffd5b8063b61d27f6146104bd578063bc197c81146104dc578063c19d93fb1461050a578063ca3b98bb1461051e575f5ffd5b80639cdf379c116100cd5780639cdf379c14610422578063ad3cb1cc14610435578063b0d691fe14610465578063b479d6001461048b575f5ffd5b80638129fc1c146103d357806384b0196e146103e75780638f41ec5a1461040e575f5ffd5b806334fcd5be1161015d57806351945447116101385780635194544714610361578063523e32601461038157806352d1902d146103a05780636d70f7ae146103b4575f5ffd5b806334fcd5be146102ef5780633e5beab91461030e5780634f1ef2861461034e575f5ffd5b806312084f591161019857806312084f591461024c578063150b7a021461026b5780631626ba7e146102a357806319822f7c146102c2575f5ffd5b806223de29146101c757806301ffc9a7146101ed578063094cefed14610221575f5ffd5b366101c357005b5f5ffd5b3480156101d2575f5ffd5b506101eb6101e1366004611d8b565b5050505050505050565b005b3480156101f8575f5ffd5b5061020c610207366004611e4d565b6105c7565b60405190151581526020015b60405180910390f35b61023461022f366004611e68565b6105f2565b6040516001600160a01b039091168152602001610218565b348015610257575f5ffd5b506101eb610266366004611efa565b61060c565b348015610276575f5ffd5b5061028a610285366004611f15565b610679565b6040516001600160e01b03199091168152602001610218565b3480156102ae575f5ffd5b5061028a6102bd36600461201f565b6106d3565b3480156102cd575f5ffd5b506102e16102dc366004612062565b6107f8565b604051908152602001610218565b3480156102fa575f5ffd5b506101eb6103093660046120f0565b61082a565b348015610319575f5ffd5b506102e1610328366004611efa565b6001600160a01b03165f9081525f5160206128915f395f51905f52602052604090205490565b6101eb61035c36600461212e565b61091a565b61037461036f366004612179565b610939565b6040516102189190612212565b34801561038c575f5ffd5b5061028a61039b366004612224565b610965565b3480156103ab575f5ffd5b506102e161098a565b3480156103bf575f5ffd5b5061020c6103ce366004611efa565b6109a5565b3480156103de575f5ffd5b506101eb610a43565b3480156103f2575f5ffd5b506103fb610ba5565b6040516102189796959493929190612274565b348015610419575f5ffd5b506102e1600181565b34801561042d575f5ffd5b506102e15f81565b348015610440575f5ffd5b50610374604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610470575f5ffd5b50734337084d9e255ff0702461cf8895ce9e3b5ff108610234565b348015610496575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610234565b3480156104c8575f5ffd5b506101eb6104d736600461230a565b610c4e565b3480156104e7575f5ffd5b5061028a6104f6366004612361565b63bc197c8160e01b98975050505050505050565b348015610515575f5ffd5b506102e1610ca6565b61037461052c366004612401565b610d8d565b34801561053c575f5ffd5b506102e1610dc6565b348015610550575f5ffd5b506101eb61055f366004612476565b610e4f565b34801561056f575f5ffd5b5061028a61057e3660046124a0565b63f23a6e6160e01b9695505050505050565b34801561059b575f5ffd5b506105a4610ebf565b604080519384526001600160a01b03909216602084015290820152606001610218565b5f6105d182610ed5565b806105ec57506001600160e01b0319821663c5527d7b60e01b145b92915050565b5f610601878787878787610eff565b979650505050505050565b610615336109a5565b158015610636575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b1561065457604051634780295360e11b815260040160405180910390fd5b6001600160a01b03165f9081525f5160206128915f395f51905f526020526040812055565b5f5f5f610684610ebf565b909350915050336001600160a01b0383161480156106a157508086145b156106bf5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f6106f385602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f036107be5782858301602001610714826109a5565b15801561072a57506001600160a01b0382163014155b1561074557506001600160e01b031994506105ec9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610773908b908590600401612516565b602060405180830381865afa15801561078e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b2919061252e565b955050505050506105ec565b6107cd6103ce87838686611005565b156107e55750630b135d3f60e11b92506105ec915050565b506001600160e01b031995945050505050565b5f610801611031565b61080b8484611096565b905061081a84602001356110f3565b6108238261113c565b9392505050565b610832611181565b805f5b81811015610914573684848381811061085057610850612549565b9050602002810190610862919061255d565b90505f6108c06108756020840184611efa565b6020840135610887604086018661257b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611189565b90508061090a57836001036108dc576108d761119f565b61090a565b826108e65f6111b0565b604051635a15467560e01b8152600401610901929190612516565b60405180910390fd5b5050600101610835565b50505050565b6109226111e1565b61092b82611285565b61093582826112cd565b5050565b60605f61094a87878787875a61138e565b925090508061095b57815160208301fd5b5095945050505050565b5f61096f846109a5565b610979575f610982565b630291f19360e51b5b949350505050565b5f6109936113e5565b505f5160206128715f395f51905f5290565b5f5f5f6109b0610ebf565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa1580156109fd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2191906125bd565b6001600160a01b031614801561098257505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610a875750825b90505f826001600160401b03166001148015610aa25750303b155b905081158015610ab0575080155b15610ace5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610af857845460ff60401b1916600160401b1785555b610b0061142e565b610b586040518060400160405280601e81526020017f48797065724163636f756e745065726d697373696f6e65644d696e7465720000815250604051806040016040528060018152602001603160f81b815250611436565b8315610b9e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f60608082808083815f5160206128515f395f51905f528054909150158015610bd057506001810154155b610c145760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610901565b610c1c611448565b610c24611508565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b610c56611181565b5f610c97858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611189565b905080610b9e57610b9e61119f565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610d2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4f91906125d8565b8254604051919250610d6e918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f610daa88888888888815610da4578861138e565b5a61138e565b9250905080610dbb57815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610e26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4a91906125d8565b905090565b610e58336109a5565b158015610e79575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15610e9757604051634780295360e11b815260040160405180910390fd5b6001600160a01b03919091165f9081525f5160206128915f395f51905f526020526040902055565b5f5f5f610eca611546565b925092509250909192565b5f610edf82611552565b806105ec57506001600160e01b03198216633c1cc5f160e01b1492915050565b335f9081525f5160206128915f395f51905f526020819052604082205460011115610f3f57604051632fcad63b60e21b8152336004820152602401610901565b335f908152602082905260408120805460019290610f5e908490612603565b909155505060405163094cefed60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed90610fb9908b908b908b908b908b908b9060040161263e565b6020604051808303815f875af1158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff991906125bd565b98975050505050505050565b5f5f5f5f6110158888888861157c565b9250925092506110258282611644565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff108146110945760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610901565b565b5f60046110a6606085018561257b565b905011156110e9575f6110c46110bf606086018661257b565b6116fc565b905063f6b3101360e01b6001600160e01b03198216016110e7575f9150506105ec565b505b6108238383611713565b6001600160401b0381106111395760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610901565b50565b8015611139576040515f90339083908381818185875af1925050503d805f8114610b9e576040519150601f19603f3d011682016040523d82523d5f602084013e610b9e565b611094611031565b5f5f5f845160208601878987f195945050505050565b6110946111ab5f6111b0565b611820565b60603d82156111c457828111156111c45750815b604051602082018101604052818152815f602083013e9392505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061126757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661125b5f5160206128715f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156110945760405163703e46dd60e11b815260040160405180910390fd5b61128e336109a5565b1580156112af575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b1561113957604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611327575060408051601f3d908101601f19168201909252611324918101906125d8565b60015b61134f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610901565b5f5160206128715f395f51905f52811461137f57604051632a87526960e21b815260048101829052602401610901565b6113898383611828565b505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f9160609181846113c183612691565b91905055506113d489898989898961187d565b92509250505b965096945050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110945760405163703e46dd60e11b815260040160405180910390fd5b6110946119d4565b61143e6119d4565b6109358282611a1d565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f5160206128515f395f51905f5291611486906126a9565b80601f01602080910402602001604051908101604052809291908181526020018280546114b2906126a9565b80156114fd5780601f106114d4576101008083540402835291602001916114fd565b820191905f5260205f20905b8154815290600101906020018083116114e057829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f5160206128515f395f51905f5291611486906126a9565b5f5f5f610eca30611a7c565b5f61155c82611ad0565b806105ec57506001600160e01b03198216636faff5f160e01b1492915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115b557505f9150600390508261163a565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611606573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661163157505f92506001915082905061163a565b92505f91508190505b9450945094915050565b5f826003811115611657576116576126e1565b03611660575050565b6001826003811115611674576116746126e1565b036116925760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116a6576116a66126e1565b036116c75760405163fce698f760e01b815260048101829052602401610901565b60038260038111156116db576116db6126e1565b03610935576040516335e2f38360e21b815260048101829052602401610901565b5f600482101561170d57505f6105ec565b50503590565b5f80806117618461172861010088018861257b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b7192505050565b5090925090505f81600381111561177a5761177a6126e1565b14801561178b575061178b826109a5565b1561179a575f925050506105ec565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c90206117da8161172861010089018961257b565b5090935091505f8260038111156117f3576117f36126e1565b1480156118045750611804836109a5565b15611814575f93505050506105ec565b50600195945050505050565b805160208201fd5b61183182611bba565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611875576113898282611c1d565b610935611c8f565b5f6060611889336109a5565b1580156118aa575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b156118c857604051634780295360e11b815260040160405180910390fd5b8360ff165f0361193957876001600160a01b0316838888886040516118ee9291906126f5565b5f60405180830381858888f193505050503d805f8114611929576040519150601f19603f3d011682016040523d82523d5f602084013e61192e565b606091505b5090925090506113da565b8360ff1660010361199857876001600160a01b031683878760405161195f9291906126f5565b5f604051808303818686f4925050503d805f8114611929576040519150601f19603f3d011682016040523d82523d5f602084013e61192e565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610901565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661109457604051631afcd79f60e31b815260040160405180910390fd5b611a256119d4565b5f5160206128515f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611a5e8482612748565b5060038101611a6d8382612748565b505f8082556001909101555050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611ac29190612802565b935093509350509193909250565b5f6001600160e01b03198216633ce4a3e960e01b1480611b0057506001600160e01b031982166301ffc9a760e01b145b80611b1b57506001600160e01b031982166306608bdf60e21b145b80611b3657506001600160e01b03198216630b135d3f60e11b145b80611b5157506001600160e01b03198216630271189760e51b145b806105ec57506001600160e01b03198216635194544760e01b1492915050565b5f5f5f8351604103611ba8576020840151604085015160608601515f1a611b9a8882858561157c565b955095509550505050611bb3565b505081515f91506002905b9250925092565b806001600160a01b03163b5f03611bef57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610901565b5f5160206128715f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c39919061283a565b5f60405180830381855af49150503d805f8114611c71576040519150601f19603f3d011682016040523d82523d5f602084013e611c76565b606091505b5091509150611c86858383611cae565b95945050505050565b34156110945760405163b398979f60e01b815260040160405180910390fd5b606082611cc357611cbe82611d0a565b610823565b8151158015611cda57506001600160a01b0384163b155b15611d0357604051639996b31560e01b81526001600160a01b0385166004820152602401610901565b5080610823565b805115611d1a5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114611139575f5ffd5b5f5f83601f840112611d57575f5ffd5b5081356001600160401b03811115611d6d575f5ffd5b602083019150836020828501011115611d84575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611da2575f5ffd5b8835611dad81611d33565b97506020890135611dbd81611d33565b96506040890135611dcd81611d33565b95506060890135945060808901356001600160401b03811115611dee575f5ffd5b611dfa8b828c01611d47565b90955093505060a08901356001600160401b03811115611e18575f5ffd5b611e248b828c01611d47565b999c989b5096995094979396929594505050565b6001600160e01b031981168114611139575f5ffd5b5f60208284031215611e5d575f5ffd5b813561082381611e38565b5f5f5f5f5f5f60808789031215611e7d575f5ffd5b8635611e8881611d33565b955060208701356001600160401b03811115611ea2575f5ffd5b611eae89828a01611d47565b90965094505060408701356001600160401b03811115611ecc575f5ffd5b611ed889828a01611d47565b9094509250506060870135611eec81611d33565b809150509295509295509295565b5f60208284031215611f0a575f5ffd5b813561082381611d33565b5f5f5f5f5f60808688031215611f29575f5ffd5b8535611f3481611d33565b94506020860135611f4481611d33565b93506040860135925060608601356001600160401b03811115611f65575f5ffd5b611f7188828901611d47565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611fa5575f5ffd5b81356001600160401b03811115611fbe57611fbe611f82565b604051601f8201601f19908116603f011681016001600160401b0381118282101715611fec57611fec611f82565b604052818152838201602001851015612003575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612030575f5ffd5b8235915060208301356001600160401b0381111561204c575f5ffd5b61205885828601611f96565b9150509250929050565b5f5f5f60608486031215612074575f5ffd5b83356001600160401b03811115612089575f5ffd5b8401610120818703121561209b575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f8401126120c0575f5ffd5b5081356001600160401b038111156120d6575f5ffd5b6020830191508360208260051b8501011115611d84575f5ffd5b5f5f60208385031215612101575f5ffd5b82356001600160401b03811115612116575f5ffd5b612122858286016120b0565b90969095509350505050565b5f5f6040838503121561213f575f5ffd5b823561214a81611d33565b915060208301356001600160401b0381111561204c575f5ffd5b803560ff81168114612174575f5ffd5b919050565b5f5f5f5f5f6080868803121561218d575f5ffd5b853561219881611d33565b94506020860135935060408601356001600160401b038111156121b9575f5ffd5b6121c588828901611d47565b90945092506121d8905060608701612164565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082360208301846121e4565b5f5f5f60408486031215612236575f5ffd5b833561224181611d33565b925060208401356001600160401b0381111561225b575f5ffd5b61226786828701611d47565b9497909650939450505050565b60ff60f81b8816815260e060208201525f61229260e08301896121e4565b82810360408401526122a481896121e4565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156122f95783518352602093840193909201916001016122db565b50909b9a5050505050505050505050565b5f5f5f5f6060858703121561231d575f5ffd5b843561232881611d33565b93506020850135925060408501356001600160401b03811115612349575f5ffd5b61235587828801611d47565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b031215612378575f5ffd5b883561238381611d33565b9750602089013561239381611d33565b965060408901356001600160401b038111156123ad575f5ffd5b6123b98b828c016120b0565b90975095505060608901356001600160401b038111156123d7575f5ffd5b6123e38b828c016120b0565b90955093505060808901356001600160401b03811115611e18575f5ffd5b5f5f5f5f5f5f60a08789031215612416575f5ffd5b863561242181611d33565b95506020870135945060408701356001600160401b03811115612442575f5ffd5b61244e89828a01611d47565b9095509350612461905060608801612164565b95989497509295919493608090920135925050565b5f5f60408385031215612487575f5ffd5b823561249281611d33565b946020939093013593505050565b5f5f5f5f5f5f60a087890312156124b5575f5ffd5b86356124c081611d33565b955060208701356124d081611d33565b9450604087013593506060870135925060808701356001600160401b038111156124f8575f5ffd5b61250489828a01611d47565b979a9699509497509295939492505050565b828152604060208201525f61098260408301846121e4565b5f6020828403121561253e575f5ffd5b815161082381611e38565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612571575f5ffd5b9190910192915050565b5f5f8335601e19843603018112612590575f5ffd5b8301803591506001600160401b038211156125a9575f5ffd5b602001915036819003821315611d84575f5ffd5b5f602082840312156125cd575f5ffd5b815161082381611d33565b5f602082840312156125e8575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156105ec576105ec6125ef565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f906126629083018789612616565b8281036040840152612675818688612616565b91505060018060a01b0383166060830152979650505050505050565b5f600182016126a2576126a26125ef565b5060010190565b600181811c908216806126bd57607f821691505b6020821081036126db57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b601f82111561138957805f5260205f20601f840160051c810160208510156127295750805b601f840160051c820191505b81811015610b9e575f8155600101612735565b81516001600160401b0381111561276157612761611f82565b6127758161276f84546126a9565b84612704565b6020601f8211600181146127a7575f83156127905750848201515b5f19600385901b1c1916600184901b178455610b9e565b5f84815260208120601f198516915b828110156127d657878501518255602094850194600190920191016127b6565b50848210156127f357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f5f60608486031215612814575f5ffd5b8351602085015190935061282781611d33565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc35bbe4873c895459ab4bda5f265f5e5fa65e4b915cbe8dc27adf6ea1fa3ba400a2646970667358221220f16405238afeb988238533645916dc1af1bf30954d3b574e734aa82b24f372c164736f6c634300081c0033", + "bytecodeSha1": "30feec20a82fdd681668473ae8de507f724c75e5", + "compiler": { + "evm_version": "cancun", + "optimizer": { + "enabled": true, + "runs": 200 + }, + "version": "0.8.28+commit.7893614a" + }, + "contractName": "HyperAccountPermissionedMinter", + "coverageMap": { + "branches": { + "10": {}, + "101": { + "HyperAccountMinterUpgradable._selector": { + "86": [ + 3689, + 3704, + false + ] + }, + "HyperAccountMinterUpgradable._validateSignature": { + "84": [ + 3172, + 3198, + false + ], + "85": [ + 3346, + 3366, + false + ] + } + }, + "104": {}, + "109": { + "Account._validateNonce": { + "70": [ + 1459, + 1483, + true + ] + } + }, + "110": { + "ERC721TokenBoundMech.onERC721Received": { + "78": [ + 839, + 871, + false + ], + "79": [ + 875, + 906, + false + ] + } + }, + "111": { + "Mech._exec": { + "92": [ + 1240, + 1262, + false + ], + "93": [ + 1266, + 1301, + false + ], + "94": [ + 4218, + 4232, + false + ], + "95": [ + 4332, + 4346, + false + ] + }, + "Mech.execute": { + "91": [ + 5191, + 5201, + true + ] + }, + "Mech.isValidSignature": { + "87": [ + 2501, + 2507, + false + ], + "88": [ + 3200, + 3227, + false + ], + "89": [ + 3231, + 3263, + false + ], + "90": [ + 3480, + 3520, + false + ] + } + }, + "112": {}, + "113": { + "TokenBoundMech.isValidSigner": { + "96": [ + 3113, + 3131, + true + ] + } + }, + "126": {}, + "129": {}, + "13": {}, + "134": {}, + "5": {}, + "67": {}, + "68": { + "UUPSUpgradeable._checkNotDelegated": { + "100": [ + 5098, + 5121, + false + ] + }, + "UUPSUpgradeable._checkProxy": { + "97": [ + 4675, + 4698, + true + ], + "98": [ + 4753, + 4795, + false + ] + }, + "UUPSUpgradeable._upgradeToAndCallUUPS": { + "99": [ + 6250, + 6290, + false + ] + } + }, + "75": { + "EIP712Upgradeable.eip712Domain": { + "76": [ + 5777, + 5795, + false + ], + "77": [ + 5799, + 5820, + true + ] + } + }, + "77": {}, + "78": {}, + "82": {}, + "83": {}, + "84": {}, + "85": { + "BaseAccount._payPrefund": { + "75": [ + 5892, + 5916, + false + ] + }, + "BaseAccount._requireFromEntryPoint": { + "74": [ + 3040, + 3075, + true + ] + }, + "BaseAccount.execute": { + "73": [ + 1576, + 1578, + false + ] + }, + "BaseAccount.executeBatch": { + "71": [ + 2218, + 2220, + false + ], + "72": [ + 2244, + 2260, + false + ] + } + }, + "88": {}, + "96": { + "HyperAccount._validateSignature": { + "80": [ + 831, + 866, + false + ], + "81": [ + 870, + 897, + false + ], + "82": [ + 1180, + 1215, + false + ], + "83": [ + 1219, + 1246, + false + ] + } + } + }, + "statements": { + "10": {}, + "101": { + "HyperAccountMinterUpgradable._selector": { + "56": [ + 3706, + 3722 + ] + }, + "HyperAccountMinterUpgradable._validateSignature": { + "42": [ + 3386, + 3417 + ], + "43": [ + 3536, + 3587 + ] + }, + "HyperAccountMinterUpgradable.hypermap": { + "1": [ + 2117, + 2133 + ] + }, + "HyperAccountMinterUpgradable.mint": { + "3": [ + 2554, + 2608 + ] + }, + "HyperAccountMinterUpgradable.supportsInterface": { + "37": [ + 2263, + 2362 + ] + } + }, + "104": { + "HyperAccountPermissionedMinter._mint": { + "38": [ + 2747, + 2846 + ], + "39": [ + 2855, + 2884 + ], + "40": [ + 2894, + 2957 + ] + }, + "HyperAccountPermissionedMinter.allowance": { + "0": [ + 2116, + 2140 + ] + }, + "HyperAccountPermissionedMinter.auth": { + "35": [ + 1690, + 1720 + ] + }, + "HyperAccountPermissionedMinter.deauth": { + "4": [ + 1905, + 1926 + ] + }, + "HyperAccountPermissionedMinter.initialize": { + "25": [ + 1325, + 1349 + ], + "26": [ + 1359, + 1411 + ] + }, + "HyperAccountPermissionedMinter.supportsInterface": { + "2": [ + 2328, + 2433 + ] + } + }, + "109": { + "Account._validateNonce": { + "44": [ + 1451, + 1501 + ] + } + }, + "110": { + "ERC721TokenBoundMech.isOperator": { + "24": [ + 498, + 578 + ] + }, + "ERC721TokenBoundMech.onERC721Received": { + "5": [ + 835, + 956 + ], + "6": [ + 966, + 1003 + ] + } + }, + "111": { + "Mech._exec": { + "60": [ + 4248, + 4311 + ], + "61": [ + 4362, + 4419 + ], + "62": [ + 4450, + 4477 + ] + }, + "Mech.execute": { + "21": [ + 5972, + 6040 + ], + "22": [ + 6051, + 6254 + ], + "32": [ + 5133, + 5222 + ], + "33": [ + 5233, + 5436 + ] + }, + "Mech.isValidSignature": { + "7": [ + 2448, + 2486 + ], + "8": [ + 3283, + 3300 + ], + "9": [ + 3329, + 3403 + ], + "10": [ + 3540, + 3565 + ], + "11": [ + 3600, + 3617 + ] + }, + "Mech.supportsInterface": { + "69": [ + 7141, + 7452 + ] + } + }, + "112": {}, + "113": { + "TokenBoundMech._exec": { + "49": [ + 3601, + 3617 + ], + "50": [ + 3666, + 3719 + ] + }, + "TokenBoundMech.isValidSigner": { + "23": [ + 3106, + 3184 + ] + }, + "TokenBoundMech.state": { + "31": [ + 2406, + 2478 + ] + }, + "TokenBoundMech.supportsInterface": { + "55": [ + 3833, + 3928 + ] + }, + "TokenBoundMech.token": { + "36": [ + 2596, + 2628 + ] + } + }, + "126": {}, + "129": {}, + "13": {}, + "134": {}, + "5": {}, + "67": { + "Initializable._checkInitializing": { + "64": [ + 7146, + 7219 + ] + }, + "Initializable._isInitializing": { + "63": [ + 8553, + 8600 + ] + } + }, + "68": { + "UUPSUpgradeable._checkNotDelegated": { + "51": [ + 5094, + 5239 + ] + }, + "UUPSUpgradeable._checkProxy": { + "46": [ + 4658, + 4909 + ] + }, + "UUPSUpgradeable._upgradeToAndCallUUPS": { + "47": [ + 6246, + 6366 + ], + "48": [ + 6379, + 6433 + ] + }, + "UUPSUpgradeable.upgradeToAndCall": { + "19": [ + 4276, + 4312 + ], + "20": [ + 4322, + 4368 + ] + } + }, + "75": { + "EIP712Upgradeable._EIP712Name": { + "53": [ + 6434, + 6448 + ] + }, + "EIP712Upgradeable._EIP712Version": { + "54": [ + 6819, + 6836 + ] + }, + "EIP712Upgradeable.__EIP712_init": { + "52": [ + 3548, + 3586 + ] + }, + "EIP712Upgradeable.__EIP712_init_unchained": { + "65": [ + 3766, + 3780 + ], + "66": [ + 3790, + 3810 + ], + "67": [ + 3875, + 3892 + ], + "68": [ + 3902, + 3922 + ] + }, + "EIP712Upgradeable.eip712Domain": { + "27": [ + 5769, + 5846 + ], + "28": [ + 5857, + 6069 + ] + } + }, + "77": {}, + "78": {}, + "82": {}, + "83": {}, + "84": {}, + "85": { + "BaseAccount._requireForExecute": { + "45": [ + 3204, + 3228 + ] + }, + "BaseAccount._requireFromEntryPoint": { + "41": [ + 3019, + 3129 + ] + }, + "BaseAccount.execute": { + "29": [ + 1479, + 1499 + ], + "30": [ + 1594, + 1621 + ] + }, + "BaseAccount.executeBatch": { + "16": [ + 1959, + 1979 + ], + "17": [ + 2284, + 2311 + ], + "18": [ + 2071, + 2074 + ] + }, + "BaseAccount.getNonce": { + "34": [ + 1049, + 1095 + ] + }, + "BaseAccount.validateUserOp": { + "12": [ + 2696, + 2720 + ], + "13": [ + 2730, + 2785 + ], + "14": [ + 2795, + 2823 + ], + "15": [ + 2833, + 2865 + ] + } + }, + "88": {}, + "96": { + "HyperAccount._validateSignature": { + "57": [ + 913, + 944 + ], + "58": [ + 1097, + 1165 + ], + "59": [ + 1262, + 1293 + ] + } + } + } + }, + "dependencies": [ + "Account", + "BaseAccount", + "EIP712Upgradeable", + "ERC1155TokenReceiver", + "ERC721TokenBoundMech", + "ERC721TokenReceiver", + "ERC777TokensRecipient", + "HyperAccount", + "HyperAccountMinterUpgradable", + "IAccount", + "IERC1271", + "IERC1822Proxiable", + "IERC5267", + "IERC6551Account", + "IERC6551Executable", + "IHyperAccountMinter", + "IHyperAccountPermissioned", + "IMech", + "Initializable", + "Mech", + "Receiver", + "TokenBoundMech", + "UUPSUpgradeable" + ], + "deployedBytecode": "6080604052600436106101bc575f3560e01c80638129fc1c116100f2578063b61d27f611610092578063d087d28811610062578063d087d28814610531578063e901d89b14610545578063f23a6e6114610564578063fc0c546a14610590575f5ffd5b8063b61d27f6146104bd578063bc197c81146104dc578063c19d93fb1461050a578063ca3b98bb1461051e575f5ffd5b80639cdf379c116100cd5780639cdf379c14610422578063ad3cb1cc14610435578063b0d691fe14610465578063b479d6001461048b575f5ffd5b80638129fc1c146103d357806384b0196e146103e75780638f41ec5a1461040e575f5ffd5b806334fcd5be1161015d57806351945447116101385780635194544714610361578063523e32601461038157806352d1902d146103a05780636d70f7ae146103b4575f5ffd5b806334fcd5be146102ef5780633e5beab91461030e5780634f1ef2861461034e575f5ffd5b806312084f591161019857806312084f591461024c578063150b7a021461026b5780631626ba7e146102a357806319822f7c146102c2575f5ffd5b806223de29146101c757806301ffc9a7146101ed578063094cefed14610221575f5ffd5b366101c357005b5f5ffd5b3480156101d2575f5ffd5b506101eb6101e1366004611d8b565b5050505050505050565b005b3480156101f8575f5ffd5b5061020c610207366004611e4d565b6105c7565b60405190151581526020015b60405180910390f35b61023461022f366004611e68565b6105f2565b6040516001600160a01b039091168152602001610218565b348015610257575f5ffd5b506101eb610266366004611efa565b61060c565b348015610276575f5ffd5b5061028a610285366004611f15565b610679565b6040516001600160e01b03199091168152602001610218565b3480156102ae575f5ffd5b5061028a6102bd36600461201f565b6106d3565b3480156102cd575f5ffd5b506102e16102dc366004612062565b6107f8565b604051908152602001610218565b3480156102fa575f5ffd5b506101eb6103093660046120f0565b61082a565b348015610319575f5ffd5b506102e1610328366004611efa565b6001600160a01b03165f9081525f5160206128915f395f51905f52602052604090205490565b6101eb61035c36600461212e565b61091a565b61037461036f366004612179565b610939565b6040516102189190612212565b34801561038c575f5ffd5b5061028a61039b366004612224565b610965565b3480156103ab575f5ffd5b506102e161098a565b3480156103bf575f5ffd5b5061020c6103ce366004611efa565b6109a5565b3480156103de575f5ffd5b506101eb610a43565b3480156103f2575f5ffd5b506103fb610ba5565b6040516102189796959493929190612274565b348015610419575f5ffd5b506102e1600181565b34801561042d575f5ffd5b506102e15f81565b348015610440575f5ffd5b50610374604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610470575f5ffd5b50734337084d9e255ff0702461cf8895ce9e3b5ff108610234565b348015610496575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610234565b3480156104c8575f5ffd5b506101eb6104d736600461230a565b610c4e565b3480156104e7575f5ffd5b5061028a6104f6366004612361565b63bc197c8160e01b98975050505050505050565b348015610515575f5ffd5b506102e1610ca6565b61037461052c366004612401565b610d8d565b34801561053c575f5ffd5b506102e1610dc6565b348015610550575f5ffd5b506101eb61055f366004612476565b610e4f565b34801561056f575f5ffd5b5061028a61057e3660046124a0565b63f23a6e6160e01b9695505050505050565b34801561059b575f5ffd5b506105a4610ebf565b604080519384526001600160a01b03909216602084015290820152606001610218565b5f6105d182610ed5565b806105ec57506001600160e01b0319821663c5527d7b60e01b145b92915050565b5f610601878787878787610eff565b979650505050505050565b610615336109a5565b158015610636575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b1561065457604051634780295360e11b815260040160405180910390fd5b6001600160a01b03165f9081525f5160206128915f395f51905f526020526040812055565b5f5f5f610684610ebf565b909350915050336001600160a01b0383161480156106a157508086145b156106bf5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f6106f385602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f036107be5782858301602001610714826109a5565b15801561072a57506001600160a01b0382163014155b1561074557506001600160e01b031994506105ec9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610773908b908590600401612516565b602060405180830381865afa15801561078e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b2919061252e565b955050505050506105ec565b6107cd6103ce87838686611005565b156107e55750630b135d3f60e11b92506105ec915050565b506001600160e01b031995945050505050565b5f610801611031565b61080b8484611096565b905061081a84602001356110f3565b6108238261113c565b9392505050565b610832611181565b805f5b81811015610914573684848381811061085057610850612549565b9050602002810190610862919061255d565b90505f6108c06108756020840184611efa565b6020840135610887604086018661257b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611189565b90508061090a57836001036108dc576108d761119f565b61090a565b826108e65f6111b0565b604051635a15467560e01b8152600401610901929190612516565b60405180910390fd5b5050600101610835565b50505050565b6109226111e1565b61092b82611285565b61093582826112cd565b5050565b60605f61094a87878787875a61138e565b925090508061095b57815160208301fd5b5095945050505050565b5f61096f846109a5565b610979575f610982565b630291f19360e51b5b949350505050565b5f6109936113e5565b505f5160206128715f395f51905f5290565b5f5f5f6109b0610ebf565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa1580156109fd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2191906125bd565b6001600160a01b031614801561098257505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610a875750825b90505f826001600160401b03166001148015610aa25750303b155b905081158015610ab0575080155b15610ace5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610af857845460ff60401b1916600160401b1785555b610b0061142e565b610b586040518060400160405280601e81526020017f48797065724163636f756e745065726d697373696f6e65644d696e7465720000815250604051806040016040528060018152602001603160f81b815250611436565b8315610b9e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f60608082808083815f5160206128515f395f51905f528054909150158015610bd057506001810154155b610c145760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b6044820152606401610901565b610c1c611448565b610c24611508565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b610c56611181565b5f610c97858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050505a611189565b905080610b9e57610b9e61119f565b5f807fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480090505f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610d2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4f91906125d8565b8254604051919250610d6e918390602001918252602082015260400190565b604051602081830303815290604052805190602001205f1c9250505090565b60605f610daa88888888888815610da4578861138e565b5a61138e565b9250905080610dbb57815160208301fd5b509695505050505050565b5f734337084d9e255ff0702461cf8895ce9e3b5ff108604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610e26573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e4a91906125d8565b905090565b610e58336109a5565b158015610e79575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b15610e9757604051634780295360e11b815260040160405180910390fd5b6001600160a01b03919091165f9081525f5160206128915f395f51905f526020526040902055565b5f5f5f610eca611546565b925092509250909192565b5f610edf82611552565b806105ec57506001600160e01b03198216633c1cc5f160e01b1492915050565b335f9081525f5160206128915f395f51905f526020819052604082205460011115610f3f57604051632fcad63b60e21b8152336004820152602401610901565b335f908152602082905260408120805460019290610f5e908490612603565b909155505060405163094cefed60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed90610fb9908b908b908b908b908b908b9060040161263e565b6020604051808303815f875af1158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff991906125bd565b98975050505050505050565b5f5f5f5f6110158888888861157c565b9250925092506110258282611644565b50909695505050505050565b33734337084d9e255ff0702461cf8895ce9e3b5ff108146110945760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610901565b565b5f60046110a6606085018561257b565b905011156110e9575f6110c46110bf606086018661257b565b6116fc565b905063f6b3101360e01b6001600160e01b03198216016110e7575f9150506105ec565b505b6108238383611713565b6001600160401b0381106111395760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610901565b50565b8015611139576040515f90339083908381818185875af1925050503d805f8114610b9e576040519150601f19603f3d011682016040523d82523d5f602084013e610b9e565b611094611031565b5f5f5f845160208601878987f195945050505050565b6110946111ab5f6111b0565b611820565b60603d82156111c457828111156111c45750815b604051602082018101604052818152815f602083013e9392505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061126757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661125b5f5160206128715f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156110945760405163703e46dd60e11b815260040160405180910390fd5b61128e336109a5565b1580156112af575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b1561113957604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611327575060408051601f3d908101601f19168201909252611324918101906125d8565b60015b61134f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610901565b5f5160206128715f395f51905f52811461137f57604051632a87526960e21b815260048101829052602401610901565b6113898383611828565b505050565b7fe4b1c7558f331d2752f6cb495b2cf8e1b8ae3112bcc78ec0c3bfebfbe3cd480080545f9160609181846113c183612691565b91905055506113d489898989898961187d565b92509250505b965096945050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146110945760405163703e46dd60e11b815260040160405180910390fd5b6110946119d4565b61143e6119d4565b6109358282611a1d565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f5160206128515f395f51905f5291611486906126a9565b80601f01602080910402602001604051908101604052809291908181526020018280546114b2906126a9565b80156114fd5780601f106114d4576101008083540402835291602001916114fd565b820191905f5260205f20905b8154815290600101906020018083116114e057829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f5160206128515f395f51905f5291611486906126a9565b5f5f5f610eca30611a7c565b5f61155c82611ad0565b806105ec57506001600160e01b03198216636faff5f160e01b1492915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115b557505f9150600390508261163a565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611606573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661163157505f92506001915082905061163a565b92505f91508190505b9450945094915050565b5f826003811115611657576116576126e1565b03611660575050565b6001826003811115611674576116746126e1565b036116925760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156116a6576116a66126e1565b036116c75760405163fce698f760e01b815260048101829052602401610901565b60038260038111156116db576116db6126e1565b03610935576040516335e2f38360e21b815260048101829052602401610901565b5f600482101561170d57505f6105ec565b50503590565b5f80806117618461172861010088018861257b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611b7192505050565b5090925090505f81600381111561177a5761177a6126e1565b14801561178b575061178b826109a5565b1561179a575f925050506105ec565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c859052603c90206117da8161172861010089018961257b565b5090935091505f8260038111156117f3576117f36126e1565b1480156118045750611804836109a5565b15611814575f93505050506105ec565b50600195945050505050565b805160208201fd5b61183182611bba565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611875576113898282611c1d565b610935611c8f565b5f6060611889336109a5565b1580156118aa575033734337084d9e255ff0702461cf8895ce9e3b5ff10814155b156118c857604051634780295360e11b815260040160405180910390fd5b8360ff165f0361193957876001600160a01b0316838888886040516118ee9291906126f5565b5f60405180830381858888f193505050503d805f8114611929576040519150601f19603f3d011682016040523d82523d5f602084013e61192e565b606091505b5090925090506113da565b8360ff1660010361199857876001600160a01b031683878760405161195f9291906126f5565b5f604051808303818686f4925050503d805f8114611929576040519150601f19603f3d011682016040523d82523d5f602084013e61192e565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610901565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661109457604051631afcd79f60e31b815260040160405180910390fd5b611a256119d4565b5f5160206128515f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611a5e8482612748565b5060038101611a6d8382612748565b505f8082556001909101555050565b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190611ac29190612802565b935093509350509193909250565b5f6001600160e01b03198216633ce4a3e960e01b1480611b0057506001600160e01b031982166301ffc9a760e01b145b80611b1b57506001600160e01b031982166306608bdf60e21b145b80611b3657506001600160e01b03198216630b135d3f60e11b145b80611b5157506001600160e01b03198216630271189760e51b145b806105ec57506001600160e01b03198216635194544760e01b1492915050565b5f5f5f8351604103611ba8576020840151604085015160608601515f1a611b9a8882858561157c565b955095509550505050611bb3565b505081515f91506002905b9250925092565b806001600160a01b03163b5f03611bef57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610901565b5f5160206128715f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611c39919061283a565b5f60405180830381855af49150503d805f8114611c71576040519150601f19603f3d011682016040523d82523d5f602084013e611c76565b606091505b5091509150611c86858383611cae565b95945050505050565b34156110945760405163b398979f60e01b815260040160405180910390fd5b606082611cc357611cbe82611d0a565b610823565b8151158015611cda57506001600160a01b0384163b155b15611d0357604051639996b31560e01b81526001600160a01b0385166004820152602401610901565b5080610823565b805115611d1a5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114611139575f5ffd5b5f5f83601f840112611d57575f5ffd5b5081356001600160401b03811115611d6d575f5ffd5b602083019150836020828501011115611d84575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b031215611da2575f5ffd5b8835611dad81611d33565b97506020890135611dbd81611d33565b96506040890135611dcd81611d33565b95506060890135945060808901356001600160401b03811115611dee575f5ffd5b611dfa8b828c01611d47565b90955093505060a08901356001600160401b03811115611e18575f5ffd5b611e248b828c01611d47565b999c989b5096995094979396929594505050565b6001600160e01b031981168114611139575f5ffd5b5f60208284031215611e5d575f5ffd5b813561082381611e38565b5f5f5f5f5f5f60808789031215611e7d575f5ffd5b8635611e8881611d33565b955060208701356001600160401b03811115611ea2575f5ffd5b611eae89828a01611d47565b90965094505060408701356001600160401b03811115611ecc575f5ffd5b611ed889828a01611d47565b9094509250506060870135611eec81611d33565b809150509295509295509295565b5f60208284031215611f0a575f5ffd5b813561082381611d33565b5f5f5f5f5f60808688031215611f29575f5ffd5b8535611f3481611d33565b94506020860135611f4481611d33565b93506040860135925060608601356001600160401b03811115611f65575f5ffd5b611f7188828901611d47565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611fa5575f5ffd5b81356001600160401b03811115611fbe57611fbe611f82565b604051601f8201601f19908116603f011681016001600160401b0381118282101715611fec57611fec611f82565b604052818152838201602001851015612003575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612030575f5ffd5b8235915060208301356001600160401b0381111561204c575f5ffd5b61205885828601611f96565b9150509250929050565b5f5f5f60608486031215612074575f5ffd5b83356001600160401b03811115612089575f5ffd5b8401610120818703121561209b575f5ffd5b95602085013595506040909401359392505050565b5f5f83601f8401126120c0575f5ffd5b5081356001600160401b038111156120d6575f5ffd5b6020830191508360208260051b8501011115611d84575f5ffd5b5f5f60208385031215612101575f5ffd5b82356001600160401b03811115612116575f5ffd5b612122858286016120b0565b90969095509350505050565b5f5f6040838503121561213f575f5ffd5b823561214a81611d33565b915060208301356001600160401b0381111561204c575f5ffd5b803560ff81168114612174575f5ffd5b919050565b5f5f5f5f5f6080868803121561218d575f5ffd5b853561219881611d33565b94506020860135935060408601356001600160401b038111156121b9575f5ffd5b6121c588828901611d47565b90945092506121d8905060608701612164565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082360208301846121e4565b5f5f5f60408486031215612236575f5ffd5b833561224181611d33565b925060208401356001600160401b0381111561225b575f5ffd5b61226786828701611d47565b9497909650939450505050565b60ff60f81b8816815260e060208201525f61229260e08301896121e4565b82810360408401526122a481896121e4565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b818110156122f95783518352602093840193909201916001016122db565b50909b9a5050505050505050505050565b5f5f5f5f6060858703121561231d575f5ffd5b843561232881611d33565b93506020850135925060408501356001600160401b03811115612349575f5ffd5b61235587828801611d47565b95989497509550505050565b5f5f5f5f5f5f5f5f60a0898b031215612378575f5ffd5b883561238381611d33565b9750602089013561239381611d33565b965060408901356001600160401b038111156123ad575f5ffd5b6123b98b828c016120b0565b90975095505060608901356001600160401b038111156123d7575f5ffd5b6123e38b828c016120b0565b90955093505060808901356001600160401b03811115611e18575f5ffd5b5f5f5f5f5f5f60a08789031215612416575f5ffd5b863561242181611d33565b95506020870135945060408701356001600160401b03811115612442575f5ffd5b61244e89828a01611d47565b9095509350612461905060608801612164565b95989497509295919493608090920135925050565b5f5f60408385031215612487575f5ffd5b823561249281611d33565b946020939093013593505050565b5f5f5f5f5f5f60a087890312156124b5575f5ffd5b86356124c081611d33565b955060208701356124d081611d33565b9450604087013593506060870135925060808701356001600160401b038111156124f8575f5ffd5b61250489828a01611d47565b979a9699509497509295939492505050565b828152604060208201525f61098260408301846121e4565b5f6020828403121561253e575f5ffd5b815161082381611e38565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612571575f5ffd5b9190910192915050565b5f5f8335601e19843603018112612590575f5ffd5b8301803591506001600160401b038211156125a9575f5ffd5b602001915036819003821315611d84575f5ffd5b5f602082840312156125cd575f5ffd5b815161082381611d33565b5f602082840312156125e8575f5ffd5b5051919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156105ec576105ec6125ef565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f906126629083018789612616565b8281036040840152612675818688612616565b91505060018060a01b0383166060830152979650505050505050565b5f600182016126a2576126a26125ef565b5060010190565b600181811c908216806126bd57607f821691505b6020821081036126db57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b818382375f9101908152919050565b601f82111561138957805f5260205f20601f840160051c810160208510156127295750805b601f840160051c820191505b81811015610b9e575f8155600101612735565b81516001600160401b0381111561276157612761611f82565b6127758161276f84546126a9565b84612704565b6020601f8211600181146127a7575f83156127905750848201515b5f19600385901b1c1916600184901b178455610b9e565b5f84815260208120601f198516915b828110156127d657878501518255602094850194600190920191016127b6565b50848210156127f357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f5f60608486031215612814575f5ffd5b8351602085015190935061282781611d33565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d100360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc35bbe4873c895459ab4bda5f265f5e5fa65e4b915cbe8dc27adf6ea1fa3ba400a2646970667358221220f16405238afeb988238533645916dc1af1bf30954d3b574e734aa82b24f372c164736f6c634300081c0033", + "deployedSourceMap": "241:2725:104:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:187:112;;;;;;;;;;-1:-1:-1;1416:187:112;;;;;:::i;:::-;;;;;;;;;;;;2153:287:104;;;;;;;;;;-1:-1:-1;2153:287:104;;;;;:::i;:::-;;:::i;:::-;;;2310:14:149;;2303:22;2285:41;;2273:2;2258:18;2153:287:104;;;;;;;;2375:240:101;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;3495:32:149;;;3477:51;;3465:2;3450:18;2375:240:101;3331:203:149;1733:200:104;;;;;;;;;;-1:-1:-1;1733:200:104;;;;;:::i;:::-;;:::i;591:419:110:-;;;;;;;;;;-1:-1:-1;591:419:110;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;4764:33:149;;;4746:52;;4734:2;4719:18;591:419:110;4602:202:149;2199:1425:111;;;;;;;;;;-1:-1:-1;2199:1425:111;;;;;:::i;:::-;;:::i;2487:385:85:-;;;;;;;;;;-1:-1:-1;2487:385:85;;;;;:::i;:::-;;:::i;:::-;;;6895:25:149;;;6883:2;6868:18;2487:385:85;6749:177:149;1887:565:85;;;;;;;;;;-1:-1:-1;1887:565:85;;;;;:::i;:::-;;:::i;1939:208:104:-;;;;;;;;;;-1:-1:-1;1939:208:104;;;;;:::i;:::-;-1:-1:-1;;;;;2123:17:104;1994:7;2123:17;;;-1:-1:-1;;;;;;;;;;;2123:17:104;;;;;;;1939:208;4161:214:68;;;;;;:::i;:::-;;:::i;5779:481:111:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2999:192:113:-;;;;;;;;;;-1:-1:-1;2999:192:113;;;;;:::i;:::-;;:::i;3708:134:68:-;;;;;;;;;;;;;:::i;346:239:110:-;;;;;;;;;;-1:-1:-1;346:239:110;;;;;:::i;:::-;;:::i;1274:144:104:-;;;;;;;;;;;;;:::i;5173:903:75:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;737:49:109:-;;;;;;;;;;;;785:1;737:49;;679:52;;;;;;;;;;;;730:1;679:52;;1819:58:68;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:68;;;;;1043:108:109;;;;;;;;;;-1:-1:-1;961:42:109;1043:108;;2045:95:101;;;;;;;;;;-1:-1:-1;2124:9:101;2045:95;;1383:255:85;;;;;;;;;;-1:-1:-1;1383:255:85;;;;;:::i;:::-;;:::i;931:258:112:-;;;;;;;;;;-1:-1:-1;931:258:112;;;;;:::i;:::-;-1:-1:-1;;;931:258:112;;;;;;;;;;;2128:357:113;;;;;;;;;;;;;:::i;4927:515:111:-;;;;;;:::i;:::-;;:::i;981:121:85:-;;;;;;;;;;;;;:::i;1500:227:104:-;;;;;;;;;;-1:-1:-1;1500:227:104;;;;;:::i;:::-;;:::i;699:226:112:-;;;;;;;;;;-1:-1:-1;699:226:112;;;;;:::i;:::-;-1:-1:-1;;;699:226:112;;;;;;;;;2491:144:113;;;;;;;;;;;;;:::i;:::-;;;;16739:25:149;;;-1:-1:-1;;;;;16800:32:149;;;16795:2;16780:18;;16773:60;16849:18;;;16842:34;16727:2;16712:18;2491:144:113;16537:345:149;2153:287:104;2308:4;2335:36;2359:11;2335:23;:36::i;:::-;:98;;;-1:-1:-1;;;;;;;2375:58:104;;-1:-1:-1;;;2375:58:104;2335:98;2328:105;2153:287;-1:-1:-1;;2153:287:104:o;2375:240:101:-;2527:11;2561:47;2567:2;2571:4;;2577:14;;2593;2561:5;:47::i;:::-;2554:54;2375:240;-1:-1:-1;;;;;;;2375:240:101:o;1733:200:104:-;1240:22:111;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:111;961:42:109;1266:35:111;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:111;;;;;;;;;;;1235:125;-1:-1:-1;;;;;1905:17:104::1;1802:47;1905:17:::0;;;-1:-1:-1;;;;;;;;;;;1905:17:104::1;::::0;;;;:21;1733:200::o;591:419:110:-;740:6;765:26;793:20;817:7;:5;:7::i;:::-;762:62;;-1:-1:-1;762:62:110;-1:-1:-1;;839:10:110;-1:-1:-1;;;;;839:32:110;;;:67;;;;;894:12;875:15;:31;839:67;835:121;;;929:16;;-1:-1:-1;;;929:16:110;;;;;;;;;;;835:121;-1:-1:-1;;;;973:30:110;591:419;-1:-1:-1;;;;;;;591:419:110:o;2199:1425:111:-;2360:17;2393:9;2412;2431:7;2460:26;2476:9;6792:4;6777:20;;6771:27;6837:4;6822:20;;6816:27;6890:4;6875:20;;;6869:27;6472:7;6861:36;;6771:27;;6816;6400:513;2460:26;2448:38;;-1:-1:-1;2448:38:111;-1:-1:-1;2448:38:111;-1:-1:-1;2501:6:111;;;2506:1;2501:6;2497:1093;;2688:1;3011:17;;;3030:4;3007:28;3200:27;2688:1;3200:10;:27::i;:::-;3199:28;:64;;;;-1:-1:-1;;;;;;3231:32:111;;3258:4;3231:32;;3199:64;3195:120;;;-1:-1:-1;;;;;;;3283:17:111;-1:-1:-1;3283:17:111;;-1:-1:-1;;;;3283:17:111;3195:120;3336:67;;-1:-1:-1;;;3336:67:111;;-1:-1:-1;;;;;3336:42:111;;;;;:67;;3379:4;;3385:17;;3336:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3329:74;;;;;;;;;2497:1093;3480:40;3491:28;3505:4;3511:1;3514;3517;3491:13;:28::i;3480:40::-;3476:104;;;-1:-1:-1;;;;3547:18:111;-1:-1:-1;3540:25:111;;-1:-1:-1;;3540:25:111;3476:104;-1:-1:-1;;;;;;;3600:17:111;2199:1425;-1:-1:-1;;;;;2199:1425:111:o;2487:385:85:-;2662:22;2696:24;:22;:24::i;:::-;2747:38;2766:6;2774:10;2747:18;:38::i;:::-;2730:55;;2795:28;2810:6;:12;;;2795:14;:28::i;:::-;2833:32;2845:19;2833:11;:32::i;:::-;2487:385;;;;;:::o;1887:565::-;1959:20;:18;:20::i;:::-;2012:5;1990:19;2034:412;2058:11;2054:1;:15;2034:412;;;2090:18;2111:5;;2117:1;2111:8;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;2090:29;-1:-1:-1;2133:7:85;2143:56;2153:11;;;;2090:29;2153:11;:::i;:::-;2166:10;;;;2178:9;;;;2166:4;2178:9;:::i;:::-;2143:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;2189:9:85;2143;:56::i;:::-;2133:66;;2218:2;2213:223;;2244:11;2259:1;2244:16;2240:182;;2284:27;:25;:27::i;:::-;2240:182;;;2378:1;2381:21;2400:1;2381:18;:21::i;:::-;2365:38;;-1:-1:-1;;;2365:38:85;;;;;;;;;:::i;:::-;;;;;;;;2240:182;-1:-1:-1;;2071:3:85;;2034:412;;;;1949:503;1887:565;;:::o;4161:214:68:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;5779:481:111:-;5911:23;5950:12;5996:44;6002:2;6006:5;6013:4;;6019:9;6030;5996:5;:44::i;:::-;5972:68;-1:-1:-1;5972:68:111;-1:-1:-1;5972:68:111;6051:203;;6218:10;6212:17;6205:4;6193:10;6189:21;6182:48;6051:203;5940:320;5779:481;;;;;;;:::o;2999:192:113:-;3077:17;3113:18;3124:6;3113:10;:18::i;:::-;:71;;3182:1;3113:71;;;-1:-1:-1;;;3113:71:113;3106:78;2999:192;-1:-1:-1;;;;2999:192:113:o;3708:134:68:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:68;:::o;346:239:110:-;420:4;439:21;462:15;481:7;:5;:7::i;:::-;505:39;;-1:-1:-1;;;505:39:110;;;;;6895:25:149;;;436:52:110;;-1:-1:-1;436:52:110;-1:-1:-1;;;;;;505:49:110;;;;-1:-1:-1;505:30:110;;;;;6868:18:149;;505:39:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;505:49:110;;:73;;;;-1:-1:-1;;;;;;;;;558:20:110;;;;346:239::o;1274:144:104:-;8870:21:67;4302:15;;-1:-1:-1;;;4302:15:67;;;;4301:16;;-1:-1:-1;;;;;4348:14:67;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:67;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:67;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:67;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:67;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:67;-1:-1:-1;;;5013:22:67;;;4979:67;1325:24:104::1;:22;:24::i;:::-;1359:52;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1359:52:104::1;;::::0;:13:::1;:52::i;:::-;5070:14:67::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:67;;;5142:14;;-1:-1:-1;19121:50:149;;5142:14:67;;19109:2:149;19094:18;5142:14:67;;;;;;;5066:101;4092:1081;;;;;1274:144:104:o;5173:903:75:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:75;;5511:45;;-1:-1:-1;5777:18:75;:43;;;;-1:-1:-1;5799:16:75;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:75;;19384:2:149;5769:77:75;;;19366:21:149;19423:2;19403:18;;;19396:30;-1:-1:-1;;;19442:18:149;;;19435:51;19503:18;;5769:77:75;19182:345:149;5769:77:75;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:75;;;-1:-1:-1;5857:212:75;;-1:-1:-1;5965:13:75;;-1:-1:-1;6000:4:75;;-1:-1:-1;6027:1:75;-1:-1:-1;6043:16:75;-1:-1:-1;5857:212:75;-1:-1:-1;;5173:903:75:o;1383:255:85:-;1479:20;:18;:20::i;:::-;1510:7;1520:41;1530:6;1538:5;1545:4;;1520:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;1551:9:85;1520;:41::i;:::-;1510:51;;1576:2;1571:61;;1594:27;:25;:27::i;2128:357:113:-;2168:7;;1108:25;2187:61;-1:-1:-1;2331:23:113;961:42:109;2357:39:113;;-1:-1:-1;;;2357:39:113;;2387:4;2357:39;;;19714:51:149;2394:1:113;19781:18:149;;;19774:60;-1:-1:-1;;;;;2357:21:113;;;;;;;19687:18:149;;2357:39:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2443:14;;2432:43;;2331:65;;-1:-1:-1;2432:43:113;;2331:65;;2432:43;;20254:25:149;;;20310:2;20295:18;;20288:34;20242:2;20227:18;;20080:248;2432:43:113;;;;;;;;;;;;;2422:54;;;;;;2414:63;;2406:72;;;;2128:357;:::o;4927:515:111:-;5072:23;5111:12;5157:65;5163:2;5167:5;5174:4;;5180:9;5191:10;;:30;;5216:5;5157;:65::i;5191:30::-;5204:9;5157:5;:65::i;:::-;5133:89;-1:-1:-1;5133:89:111;-1:-1:-1;5133:89:111;5233:203;;5400:10;5394:17;5387:4;5375:10;5371:21;5364:48;5233:203;5101:341;4927:515;;;;;;;;:::o;981:121:85:-;1030:7;961:42:109;1056:39:85;;-1:-1:-1;;;1056:39:85;;1086:4;1056:39;;;19714:51:149;1093:1:85;19781:18:149;;;19774:60;-1:-1:-1;;;;;1056:21:85;;;;;;;19687:18:149;;1056:39:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1049:46;;981:121;:::o;1500:227:104:-;1240:22:111;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:111;961:42:109;1266:35:111;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:111;;;;;;;;;;;1235:125;-1:-1:-1;;;;;1690:17:104;;;::::1;1587:47;1690:17:::0;;;-1:-1:-1;;;;;;;;;;;1690:17:104::1;::::0;;;;:30;1500:227::o;2491:144:113:-;2529:15;2546:21;2569:15;2603:25;:23;:25::i;:::-;2596:32;;;;;;2491:144;;;:::o;2146:223:101:-;2247:4;2270:36;2294:11;2270:23;:36::i;:::-;:92;;;-1:-1:-1;;;;;;;2310:52:101;;-1:-1:-1;;;2310:52:101;2263:99;2146:223;-1:-1:-1;;2146:223:101:o;2446:518:104:-;2764:10;2616:11;2751:24;;;-1:-1:-1;;;;;;;;;;;2751:24:104;;;;;;;;2778:1;-1:-1:-1;2747:99:104;;;2802:33;;-1:-1:-1;;;2802:33:104;;2824:10;2802:33;;;3477:51:149;3450:18;;2802:33:104;3331:203:149;2747:99:104;2868:10;2855:12;:24;;;;;;;;;;:29;;2883:1;;2855:12;:29;;2883:1;;2855:29;:::i;:::-;;;;-1:-1:-1;;2901:56:104;;-1:-1:-1;;;2901:56:104;;-1:-1:-1;;;;;2901:9:104;:14;;;;:56;;2916:2;;2920:4;;;;2926:14;;;;2942;;2901:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2894:63;2446:518;-1:-1:-1;;;;;;;;2446:518:104:o;6887:260:43:-;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:43;;6887:260;-1:-1:-1;;;;;;6887:260:43:o;2953:183:85:-;3040:10;961:42:109;3040:35:85;3019:110;;;;-1:-1:-1;;;3019:110:85;;21703:2:149;3019:110:85;;;21685:21:149;21742:2;21722:18;;;21715:30;21781;21761:18;;;21754:58;21829:18;;3019:110:85;21501:352:149;3019:110:85;2953:183::o;2978:616:101:-;3130:22;3197:1;3172:15;;;;:6;:15;:::i;:::-;:22;;:26;3168:274;;;3214:10;3227:26;3237:15;;;;:6;:15;:::i;:::-;3227:9;:26::i;:::-;3214:39;-1:-1:-1;;;;;;;;;;3346:20:101;;;3342:90;;730:1:109;3386:31:101;;;;;3342:90;3200:242;3168:274;3543:44;3568:6;3576:10;3543:24;:44::i;1189:319:109:-;-1:-1:-1;;;;;1459:24:109;;1451:50;;;;-1:-1:-1;;;1451:50:109;;22060:2:149;1451:50:109;;;22042:21:149;22099:2;22079:18;;;22072:30;-1:-1:-1;;;22118:18:149;;;22111:43;22171:18;;1451:50:109;21858:337:149;1451:50:109;1189:319;:::o;5811:350:85:-;5892:24;;5888:267;;5950:94;;5933:12;;5958:10;;6003:19;;5933:12;5950:94;5933:12;5950:94;6003:19;5958:10;5950:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3142:93;3204:24;:22;:24::i;213:279:95:-;344:12;474:1;471;464:4;458:11;451:4;445;441:15;434:5;430:2;423:5;418:58;407:69;213:279;-1:-1:-1;;;;;213:279:95:o;1988:95::-;2044:32;2059:16;2073:1;2059:13;:16::i;:::-;2044:14;:32::i;1176:508::-;1238:23;1323:16;1355:12;;1352:120;;1397:6;1392:3;1389:15;1386:72;;;-1:-1:-1;1434:6:95;1386:72;1502:4;1496:11;1551:4;1546:3;1542:14;1537:3;1533:24;1527:4;1520:38;1583:3;1578;1571:16;1634:3;1631:1;1624:4;1619:3;1615:14;1600:38;1665:3;1176:508;-1:-1:-1;;;1176:508:95:o;4603:312:68:-;4683:4;-1:-1:-1;;;;;4692:6:68;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:68;:32;-1:-1:-1;;;;;;;;;;;1519:53:16;-1:-1:-1;;;;;1519:53:16;;1441:138;4753:32:68;-1:-1:-1;;;;;4753:42:68;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:68;;;;;;;;;;;2877:95:101;1240:22:111;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:111;961:42:109;1266:35:111;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:111;;;;;;;;;;;6057:538:68;6174:17;-1:-1:-1;;;;;6156:50:68;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:68;;;;;;;;-1:-1:-1;;6156:52:68;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:68;;-1:-1:-1;;;;;3495:32:149;;6518:60:68;;;3477:51:149;3450:18;;6518:60:68;3331:203:149;6152:437:68;-1:-1:-1;;;;;;;;;;;6250:40:68;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:68;;;;;6895:25:149;;;6868:18;;6317:34:68;6749:177:149;6246:120:68;6379:54;6409:17;6428:4;6379:29;:54::i;:::-;6209:235;6057:538;;:::o;3263:463:113:-;1108:25;3601:16;;3425:12;;3439:23;;1108:25;3425:12;3601:16;;;:::i;:::-;;;;;;3673:46;3685:2;3689:5;3696:4;;3702:9;3713:5;3673:11;:46::i;:::-;3666:53;;;;;3263:463;;;;;;;;;;:::o;5032:213:68:-;5106:4;-1:-1:-1;;;;;5115:6:68;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:68;;;;;;;;;;;2970:67;6931:20:67;:18;:20::i;3446:147:75:-;6931:20:67;:18;:20::i;:::-;3548:38:75::1;3572:4;3578:7;3548:23;:38::i;6300:155::-:0;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:75;6434:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6300:155;:::o;6682:161::-;6826:10;6819:17;;6739:13;;-1:-1:-1;;;;;;;;;;;2839:21:75;6819:17;;;:::i;2191:111:80:-;2231:7;2240;2249;2275:20;2289:4;2275:5;:20::i;3732:203:113:-;3817:4;3840:36;3864:11;3840:23;:36::i;:::-;:88;;;-1:-1:-1;;;;;;;3880:48:113;;-1:-1:-1;;;3880:48:113;3833:95;3732:203;-1:-1:-1;;3732:203:113:o;5203:1551:43:-;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:43;;-1:-1:-1;6385:30:43;;-1:-1:-1;6417:1:43;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;23351:25:149;;;23424:4;23412:17;;23392:18;;;23385:45;;;;23446:18;;;23439:34;;;23489:18;;;23482:34;;;6541:24:43;;23323:19:149;;6541:24:43;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:43;;-1:-1:-1;;6541:24:43;;;-1:-1:-1;;;;;;;6579:20:43;;6575:113;;-1:-1:-1;6631:1:43;;-1:-1:-1;6635:29:43;;-1:-1:-1;6631:1:43;;-1:-1:-1;6615:62:43;;6575:113;6706:6;-1:-1:-1;6714:20:43;;-1:-1:-1;6714:20:43;;-1:-1:-1;5203:1551:43;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:43;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:43;;;;;6895:25:149;;;6868:18;;7634:46:43;6749:177:149;7563:243:43;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:43;;;;;6895:25:149;;;6868:18;;7763:32:43;6749:177:149;3600:203:101;3663:10;3703:1;3689:15;;3685:37;;;-1:-1:-1;3720:1:101;3706:16;;3685:37;-1:-1:-1;;3762:25:101;;3600:203::o;525:824:96:-;677:22;;;770:46;787:10;799:16;;;;:6;:16;:::i;:::-;770:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;770:16:96;;-1:-1:-1;;;770:46:96:i;:::-;-1:-1:-1;715:101:96;;-1:-1:-1;715:101:96;-1:-1:-1;840:26:96;831:5;:35;;;;;;;;:::i;:::-;;:66;;;;;870:27;881:15;870:10;:27::i;:::-;827:128;;;730:1:109;913:31:96;;;;;;827:128;1376:34:47;1021:12:96;1363:48:47;;;1472:4;1465:25;;;1570:4;1554:21;;1125:40:96;1554:21:47;1148:16:96;;;;;;:::i;1125:40::-;-1:-1:-1;1097:68:96;;-1:-1:-1;1097:68:96;-1:-1:-1;1189:26:96;1180:5;:35;;;;;;;;:::i;:::-;;:66;;;;;1219:27;1230:15;1219:10;:27::i;:::-;1176:128;;;730:1:109;1262:31:96;;;;;;;1176:128;-1:-1:-1;785:1:109;;525:824:96;-1:-1:-1;;;;;525:824:96:o;1764:174:95:-;1910:10;1904:17;1899:2;1887:10;1883:19;1876:46;2264:344:16;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:16;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;3995:499:111:-;4161:12;4175:23;1240:22;1251:10;1240;:22::i;:::-;1239:23;:62;;;;-1:-1:-1;1266:10:111;961:42:109;1266:35:111;;1239:62;1235:125;;;1324:25;;-1:-1:-1;;;1324:25:111;;;;;;;;;;;1235:125;4218:9:::1;:14;;4231:1;4218:14:::0;4214:274:::1;;4272:2;-1:-1:-1::0;;;;;4272:7:111::1;4285:5;4299;4306:4;;4272:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;4248:63:111;;-1:-1:-1;4248:63:111;-1:-1:-1;4214:274:111::1;;;4332:9;:14;;4345:1;4332:14:::0;4328:160:::1;;4386:2;-1:-1:-1::0;;;;;4386:15:111::1;4407:5;4414:4;;4386:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4328:160;4450:27;::::0;-1:-1:-1;;;4450:27:111;;24137:2:149;4450:27:111::1;::::0;::::1;24119:21:149::0;24176:2;24156:18;;;24149:30;-1:-1:-1;;;24195:18:149;;;24188:47;24252:18;;4450:27:111::1;23935:341:149::0;7084:141:67;8870:21;8560:40;-1:-1:-1;;;8560:40:67;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:67;;;;;;;;;;;3599:330:75;6931:20:67;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:75;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:75::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:75::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:75:o;1824:361:80:-;1943:15;;;1953:4;1943:15;;;;;;;;;1879:7;;;;;;;;1943:15;;;;;;;;;;;-1:-1:-1;1943:15:80;1916:42;;2094:4;2088;2081;2068:11;2064:22;2055:7;2043:56;2137:11;2126:52;;;;;;;;;;;;:::i;:::-;2119:59;;;;;;;1824:361;;;;;:::o;7049:410:111:-;7125:4;-1:-1:-1;;;;;;7148:38:111;;-1:-1:-1;;;7148:38:111;;:82;;-1:-1:-1;;;;;;;7190:40:111;;-1:-1:-1;;;7190:40:111;7148:82;:139;;;-1:-1:-1;;;;;;;7246:41:111;;-1:-1:-1;;;7246:41:111;7148:139;:184;;;-1:-1:-1;;;;;;;7291:41:111;;-1:-1:-1;;;7291:41:111;7148:184;:249;;;-1:-1:-1;;;;;;;7348:49:111;;-1:-1:-1;;;7348:49:111;7148:249;:304;;;-1:-1:-1;;;;;;;7401:51:111;;-1:-1:-1;;;7401:51:111;7141:311;7049:410;-1:-1:-1;;7049:410:111:o;2129:778:43:-;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:43;;2823:1;;-1:-1:-1;2827:35:43;;2295:606;2129:778;;;;;:::o;1671:281:16:-;1748:17;-1:-1:-1;;;;;1748:29:16;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:16;;-1:-1:-1;;;;;3495:32:149;;1805:47:16;;;3477:51:149;3450:18;;1805:47:16;3331:203:149;1744:119:16;-1:-1:-1;;;;;;;;;;;1872:73:16;;-1:-1:-1;;;;;;1872:73:16;-1:-1:-1;;;;;1872:73:16;;;;;;;;;;1671:281::o;3900:253:33:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:33;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:33:o;6113:122:16:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:16;;;;;;;;;;;4421:582:33;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:33;;;:23;4841:49;4837:119;;;4917:24;;-1:-1:-1;;;4917:24:33;;-1:-1:-1;;;;;3495:32:149;;4917:24:33;;;3477:51:149;3450:18;;4917:24:33;3331:203:149;4837:119:33;-1:-1:-1;4976:10:33;4969:17;;5543:487;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:33;;;;;;;;;;;14:131:149;-1:-1:-1;;;;;89:31:149;;79:42;;69:70;;135:1;132;125:12;150:347;201:8;211:6;265:3;258:4;250:6;246:17;242:27;232:55;;283:1;280;273:12;232:55;-1:-1:-1;306:20:149;;-1:-1:-1;;;;;338:30:149;;335:50;;;381:1;378;371:12;335:50;418:4;410:6;406:17;394:29;;470:3;463:4;454:6;446;442:19;438:30;435:39;432:59;;;487:1;484;477:12;432:59;150:347;;;;;:::o;502:1252::-;628:6;636;644;652;660;668;676;684;737:3;725:9;716:7;712:23;708:33;705:53;;;754:1;751;744:12;705:53;793:9;780:23;812:31;837:5;812:31;:::i;:::-;862:5;-1:-1:-1;919:2:149;904:18;;891:32;932:33;891:32;932:33;:::i;:::-;984:7;-1:-1:-1;1043:2:149;1028:18;;1015:32;1056:33;1015:32;1056:33;:::i;:::-;1108:7;-1:-1:-1;1188:2:149;1173:18;;1160:32;;-1:-1:-1;1269:3:149;1254:19;;1241:33;-1:-1:-1;;;;;1286:30:149;;1283:50;;;1329:1;1326;1319:12;1283:50;1368:58;1418:7;1409:6;1398:9;1394:22;1368:58;:::i;:::-;1445:8;;-1:-1:-1;1342:84:149;-1:-1:-1;;1533:3:149;1518:19;;1505:33;-1:-1:-1;;;;;1550:32:149;;1547:52;;;1595:1;1592;1585:12;1547:52;1634:60;1686:7;1675:8;1664:9;1660:24;1634:60;:::i;:::-;502:1252;;;;-1:-1:-1;502:1252:149;;-1:-1:-1;502:1252:149;;;;;;1713:8;-1:-1:-1;;;502:1252:149:o;1759:131::-;-1:-1:-1;;;;;;1833:32:149;;1823:43;;1813:71;;1880:1;1877;1870:12;1895:245;1953:6;2006:2;1994:9;1985:7;1981:23;1977:32;1974:52;;;2022:1;2019;2012:12;1974:52;2061:9;2048:23;2080:30;2104:5;2080:30;:::i;2337:989::-;2445:6;2453;2461;2469;2477;2485;2538:3;2526:9;2517:7;2513:23;2509:33;2506:53;;;2555:1;2552;2545:12;2506:53;2594:9;2581:23;2613:31;2638:5;2613:31;:::i;:::-;2663:5;-1:-1:-1;2719:2:149;2704:18;;2691:32;-1:-1:-1;;;;;2735:30:149;;2732:50;;;2778:1;2775;2768:12;2732:50;2817:58;2867:7;2858:6;2847:9;2843:22;2817:58;:::i;:::-;2894:8;;-1:-1:-1;2791:84:149;-1:-1:-1;;2982:2:149;2967:18;;2954:32;-1:-1:-1;;;;;2998:32:149;;2995:52;;;3043:1;3040;3033:12;2995:52;3082:60;3134:7;3123:8;3112:9;3108:24;3082:60;:::i;:::-;3161:8;;-1:-1:-1;3056:86:149;-1:-1:-1;;3248:2:149;3233:18;;3220:32;3261:33;3220:32;3261:33;:::i;:::-;3313:7;3303:17;;;2337:989;;;;;;;;:::o;3539:247::-;3598:6;3651:2;3639:9;3630:7;3626:23;3622:32;3619:52;;;3667:1;3664;3657:12;3619:52;3706:9;3693:23;3725:31;3750:5;3725:31;:::i;3791:806::-;3888:6;3896;3904;3912;3920;3973:3;3961:9;3952:7;3948:23;3944:33;3941:53;;;3990:1;3987;3980:12;3941:53;4029:9;4016:23;4048:31;4073:5;4048:31;:::i;:::-;4098:5;-1:-1:-1;4155:2:149;4140:18;;4127:32;4168:33;4127:32;4168:33;:::i;:::-;4220:7;-1:-1:-1;4300:2:149;4285:18;;4272:32;;-1:-1:-1;4381:2:149;4366:18;;4353:32;-1:-1:-1;;;;;4397:30:149;;4394:50;;;4440:1;4437;4430:12;4394:50;4479:58;4529:7;4520:6;4509:9;4505:22;4479:58;:::i;:::-;3791:806;;;;-1:-1:-1;3791:806:149;;-1:-1:-1;4556:8:149;;4453:84;3791:806;-1:-1:-1;;;3791:806:149:o;4809:127::-;4870:10;4865:3;4861:20;4858:1;4851:31;4901:4;4898:1;4891:15;4925:4;4922:1;4915:15;4941:725;4983:5;5036:3;5029:4;5021:6;5017:17;5013:27;5003:55;;5054:1;5051;5044:12;5003:55;5094:6;5081:20;-1:-1:-1;;;;;5116:6:149;5113:30;5110:56;;;5146:18;;:::i;:::-;5195:2;5189:9;5287:2;5249:17;;-1:-1:-1;;5245:31:149;;;5278:2;5241:40;5237:54;5225:67;;-1:-1:-1;;;;;5307:34:149;;5343:22;;;5304:62;5301:88;;;5369:18;;:::i;:::-;5405:2;5398:22;5429;;;5470:19;;;5491:4;5466:30;5463:39;-1:-1:-1;5460:59:149;;;5515:1;5512;5505:12;5460:59;5579:6;5572:4;5564:6;5560:17;5553:4;5545:6;5541:17;5528:58;5634:1;5606:19;;;5627:4;5602:30;5595:41;;;;5610:6;4941:725;-1:-1:-1;;;4941:725:149:o;5671:434::-;5748:6;5756;5809:2;5797:9;5788:7;5784:23;5780:32;5777:52;;;5825:1;5822;5815:12;5777:52;5870:23;;;-1:-1:-1;5968:2:149;5953:18;;5940:32;-1:-1:-1;;;;;5984:30:149;;5981:50;;;6027:1;6024;6017:12;5981:50;6050:49;6091:7;6082:6;6071:9;6067:22;6050:49;:::i;:::-;6040:59;;;5671:434;;;;;:::o;6110:634::-;6227:6;6235;6243;6296:2;6284:9;6275:7;6271:23;6267:32;6264:52;;;6312:1;6309;6302:12;6264:52;6352:9;6339:23;-1:-1:-1;;;;;6377:6:149;6374:30;6371:50;;;6417:1;6414;6407:12;6371:50;6440:22;;6496:3;6478:16;;;6474:26;6471:46;;;6513:1;6510;6503:12;6471:46;6536:2;6607;6592:18;;6579:32;;-1:-1:-1;6708:2:149;6693:18;;;6680:32;;6110:634;-1:-1:-1;;;6110:634:149:o;6931:380::-;7007:8;7017:6;7071:3;7064:4;7056:6;7052:17;7048:27;7038:55;;7089:1;7086;7079:12;7038:55;-1:-1:-1;7112:20:149;;-1:-1:-1;;;;;7144:30:149;;7141:50;;;7187:1;7184;7177:12;7141:50;7224:4;7216:6;7212:17;7200:29;;7284:3;7277:4;7267:6;7264:1;7260:14;7252:6;7248:27;7244:38;7241:47;7238:67;;;7301:1;7298;7291:12;7316:475;7427:6;7435;7488:2;7476:9;7467:7;7463:23;7459:32;7456:52;;;7504:1;7501;7494:12;7456:52;7544:9;7531:23;-1:-1:-1;;;;;7569:6:149;7566:30;7563:50;;;7609:1;7606;7599:12;7563:50;7648:83;7723:7;7714:6;7703:9;7699:22;7648:83;:::i;:::-;7750:8;;7622:109;;-1:-1:-1;7316:475:149;-1:-1:-1;;;;7316:475:149:o;7796:455::-;7873:6;7881;7934:2;7922:9;7913:7;7909:23;7905:32;7902:52;;;7950:1;7947;7940:12;7902:52;7989:9;7976:23;8008:31;8033:5;8008:31;:::i;:::-;8058:5;-1:-1:-1;8114:2:149;8099:18;;8086:32;-1:-1:-1;;;;;8130:30:149;;8127:50;;;8173:1;8170;8163:12;8256:156;8322:20;;8382:4;8371:16;;8361:27;;8351:55;;8402:1;8399;8392:12;8351:55;8256:156;;;:::o;8417:735::-;8512:6;8520;8528;8536;8544;8597:3;8585:9;8576:7;8572:23;8568:33;8565:53;;;8614:1;8611;8604:12;8565:53;8653:9;8640:23;8672:31;8697:5;8672:31;:::i;:::-;8722:5;-1:-1:-1;8800:2:149;8785:18;;8772:32;;-1:-1:-1;8881:2:149;8866:18;;8853:32;-1:-1:-1;;;;;8897:30:149;;8894:50;;;8940:1;8937;8930:12;8894:50;8979:58;9029:7;9020:6;9009:9;9005:22;8979:58;:::i;:::-;9056:8;;-1:-1:-1;8953:84:149;-1:-1:-1;9110:36:149;;-1:-1:-1;9142:2:149;9127:18;;9110:36;:::i;:::-;9100:46;;8417:735;;;;;;;;:::o;9157:288::-;9198:3;9236:5;9230:12;9263:6;9258:3;9251:19;9319:6;9312:4;9305:5;9301:16;9294:4;9289:3;9285:14;9279:47;9371:1;9364:4;9355:6;9350:3;9346:16;9342:27;9335:38;9434:4;9427:2;9423:7;9418:2;9410:6;9406:15;9402:29;9397:3;9393:39;9389:50;9382:57;;;9157:288;;;;:::o;9450:217::-;9597:2;9586:9;9579:21;9560:4;9617:44;9657:2;9646:9;9642:18;9634:6;9617:44;:::i;9672:544::-;9751:6;9759;9767;9820:2;9808:9;9799:7;9795:23;9791:32;9788:52;;;9836:1;9833;9826:12;9788:52;9875:9;9862:23;9894:31;9919:5;9894:31;:::i;:::-;9944:5;-1:-1:-1;10000:2:149;9985:18;;9972:32;-1:-1:-1;;;;;10016:30:149;;10013:50;;;10059:1;10056;10049:12;10013:50;10098:58;10148:7;10139:6;10128:9;10124:22;10098:58;:::i;:::-;9672:544;;10175:8;;-1:-1:-1;10072:84:149;;-1:-1:-1;;;;9672:544:149:o;10403:1236::-;10809:3;10804;10800:13;10792:6;10788:26;10777:9;10770:45;10851:3;10846:2;10835:9;10831:18;10824:31;10751:4;10878:45;10918:3;10907:9;10903:19;10895:6;10878:45;:::i;:::-;10971:9;10963:6;10959:22;10954:2;10943:9;10939:18;10932:50;11005:32;11030:6;11022;11005:32;:::i;:::-;11068:2;11053:18;;11046:34;;;-1:-1:-1;;;;;11117:32:149;;11111:3;11096:19;;11089:61;11137:3;11166:19;;11159:35;;;11231:22;;;11225:3;11210:19;;11203:51;11303:13;;11325:22;;;11375:2;11401:15;;;;-1:-1:-1;11363:15:149;;;;-1:-1:-1;11444:169:149;11458:6;11455:1;11452:13;11444:169;;;11519:13;;11507:26;;11562:2;11588:15;;;;11553:12;;;;11480:1;11473:9;11444:169;;;-1:-1:-1;11630:3:149;;10403:1236;-1:-1:-1;;;;;;;;;;;10403:1236:149:o;12323:664::-;12411:6;12419;12427;12435;12488:2;12476:9;12467:7;12463:23;12459:32;12456:52;;;12504:1;12501;12494:12;12456:52;12543:9;12530:23;12562:31;12587:5;12562:31;:::i;:::-;12612:5;-1:-1:-1;12690:2:149;12675:18;;12662:32;;-1:-1:-1;12771:2:149;12756:18;;12743:32;-1:-1:-1;;;;;12787:30:149;;12784:50;;;12830:1;12827;12820:12;12784:50;12869:58;12919:7;12910:6;12899:9;12895:22;12869:58;:::i;:::-;12323:664;;;;-1:-1:-1;12946:8:149;-1:-1:-1;;;;12323:664:149:o;12992:1375::-;13152:6;13160;13168;13176;13184;13192;13200;13208;13261:3;13249:9;13240:7;13236:23;13232:33;13229:53;;;13278:1;13275;13268:12;13229:53;13317:9;13304:23;13336:31;13361:5;13336:31;:::i;:::-;13386:5;-1:-1:-1;13443:2:149;13428:18;;13415:32;13456:33;13415:32;13456:33;:::i;:::-;13508:7;-1:-1:-1;13566:2:149;13551:18;;13538:32;-1:-1:-1;;;;;13582:30:149;;13579:50;;;13625:1;13622;13615:12;13579:50;13664:83;13739:7;13730:6;13719:9;13715:22;13664:83;:::i;:::-;13766:8;;-1:-1:-1;13638:109:149;-1:-1:-1;;13854:2:149;13839:18;;13826:32;-1:-1:-1;;;;;13870:32:149;;13867:52;;;13915:1;13912;13905:12;13867:52;13954:85;14031:7;14020:8;14009:9;14005:24;13954:85;:::i;:::-;14058:8;;-1:-1:-1;13928:111:149;-1:-1:-1;;14146:3:149;14131:19;;14118:33;-1:-1:-1;;;;;14163:32:149;;14160:52;;;14208:1;14205;14198:12;14372:856;14476:6;14484;14492;14500;14508;14516;14569:3;14557:9;14548:7;14544:23;14540:33;14537:53;;;14586:1;14583;14576:12;14537:53;14625:9;14612:23;14644:31;14669:5;14644:31;:::i;:::-;14694:5;-1:-1:-1;14772:2:149;14757:18;;14744:32;;-1:-1:-1;14853:2:149;14838:18;;14825:32;-1:-1:-1;;;;;14869:30:149;;14866:50;;;14912:1;14909;14902:12;14866:50;14951:58;15001:7;14992:6;14981:9;14977:22;14951:58;:::i;:::-;15028:8;;-1:-1:-1;14925:84:149;-1:-1:-1;15082:36:149;;-1:-1:-1;15114:2:149;15099:18;;15082:36;:::i;:::-;14372:856;;;;-1:-1:-1;14372:856:149;;;;;15191:3;15176:19;;;15163:33;;-1:-1:-1;;14372:856:149:o;15233:367::-;15301:6;15309;15362:2;15350:9;15341:7;15337:23;15333:32;15330:52;;;15378:1;15375;15368:12;15330:52;15417:9;15404:23;15436:31;15461:5;15436:31;:::i;:::-;15486:5;15564:2;15549:18;;;;15536:32;;-1:-1:-1;;;15233:367:149:o;15605:927::-;15711:6;15719;15727;15735;15743;15751;15804:3;15792:9;15783:7;15779:23;15775:33;15772:53;;;15821:1;15818;15811:12;15772:53;15860:9;15847:23;15879:31;15904:5;15879:31;:::i;:::-;15929:5;-1:-1:-1;15986:2:149;15971:18;;15958:32;15999:33;15958:32;15999:33;:::i;:::-;16051:7;-1:-1:-1;16131:2:149;16116:18;;16103:32;;-1:-1:-1;16234:2:149;16219:18;;16206:32;;-1:-1:-1;16315:3:149;16300:19;;16287:33;-1:-1:-1;;;;;16332:30:149;;16329:50;;;16375:1;16372;16365:12;16329:50;16414:58;16464:7;16455:6;16444:9;16440:22;16414:58;:::i;:::-;15605:927;;;;-1:-1:-1;15605:927:149;;-1:-1:-1;15605:927:149;;16491:8;;15605:927;-1:-1:-1;;;15605:927:149:o;16887:288::-;17062:6;17051:9;17044:25;17105:2;17100;17089:9;17085:18;17078:30;17025:4;17125:44;17165:2;17154:9;17150:18;17142:6;17125:44;:::i;17180:249::-;17249:6;17302:2;17290:9;17281:7;17277:23;17273:32;17270:52;;;17318:1;17315;17308:12;17270:52;17350:9;17344:16;17369:30;17393:5;17369:30;:::i;17434:127::-;17495:10;17490:3;17486:20;17483:1;17476:31;17526:4;17523:1;17516:15;17550:4;17547:1;17540:15;17566:322;17657:4;17715:11;17702:25;17809:2;17805:7;17794:8;17778:14;17774:29;17770:43;17750:18;17746:68;17736:96;;17828:1;17825;17818:12;17736:96;17849:33;;;;;17566:322;-1:-1:-1;;17566:322:149:o;17893:521::-;17970:4;17976:6;18036:11;18023:25;18130:2;18126:7;18115:8;18099:14;18095:29;18091:43;18071:18;18067:68;18057:96;;18149:1;18146;18139:12;18057:96;18176:33;;18228:20;;;-1:-1:-1;;;;;;18260:30:149;;18257:50;;;18303:1;18300;18293:12;18257:50;18336:4;18324:17;;-1:-1:-1;18367:14:149;18363:27;;;18353:38;;18350:58;;;18404:1;18401;18394:12;18712:251;18782:6;18835:2;18823:9;18814:7;18810:23;18806:32;18803:52;;;18851:1;18848;18841:12;18803:52;18883:9;18877:16;18902:31;18927:5;18902:31;:::i;19845:230::-;19915:6;19968:2;19956:9;19947:7;19943:23;19939:32;19936:52;;;19984:1;19981;19974:12;19936:52;-1:-1:-1;20029:16:149;;19845:230;-1:-1:-1;19845:230:149:o;20333:127::-;20394:10;20389:3;20385:20;20382:1;20375:31;20425:4;20422:1;20415:15;20449:4;20446:1;20439:15;20465:128;20532:9;;;20553:11;;;20550:37;;;20567:18;;:::i;20598:266::-;20686:6;20681:3;20674:19;20738:6;20731:5;20724:4;20719:3;20715:14;20702:43;-1:-1:-1;20790:1:149;20765:16;;;20783:4;20761:27;;;20754:38;;;;20846:2;20825:15;;;-1:-1:-1;;20821:29:149;20812:39;;;20808:50;;20598:266::o;20869:627::-;-1:-1:-1;;;;;21138:32:149;;21120:51;;21207:3;21202:2;21187:18;;21180:31;;;-1:-1:-1;;21234:62:149;;21276:19;;21268:6;21260;21234:62;:::i;:::-;21344:9;21336:6;21332:22;21327:2;21316:9;21312:18;21305:50;21372:49;21414:6;21406;21398;21372:49;:::i;:::-;21364:57;;;21486:1;21482;21477:3;21473:11;21469:19;21461:6;21457:32;21452:2;21441:9;21437:18;21430:60;20869:627;;;;;;;;;:::o;22599:135::-;22638:3;22659:17;;;22656:43;;22679:18;;:::i;:::-;-1:-1:-1;22726:1:149;22715:13;;22599:135::o;22739:380::-;22818:1;22814:12;;;;22861;;;22882:61;;22936:4;22928:6;22924:17;22914:27;;22882:61;22989:2;22981:6;22978:14;22958:18;22955:38;22952:161;;23035:10;23030:3;23026:20;23023:1;23016:31;23070:4;23067:1;23060:15;23098:4;23095:1;23088:15;22952:161;;22739:380;;;:::o;23527:127::-;23588:10;23583:3;23579:20;23576:1;23569:31;23619:4;23616:1;23609:15;23643:4;23640:1;23633:15;23659:271;23842:6;23834;23829:3;23816:33;23798:3;23868:16;;23893:13;;;23868:16;23659:271;-1:-1:-1;23659:271:149:o;24407:518::-;24509:2;24504:3;24501:11;24498:421;;;24545:5;24542:1;24535:16;24589:4;24586:1;24576:18;24659:2;24647:10;24643:19;24640:1;24636:27;24630:4;24626:38;24695:4;24683:10;24680:20;24677:47;;;-1:-1:-1;24718:4:149;24677:47;24773:2;24768:3;24764:12;24761:1;24757:20;24751:4;24747:31;24737:41;;24828:81;24846:2;24839:5;24836:13;24828:81;;;24905:1;24891:16;;24872:1;24861:13;24828:81;;25101:1299;25227:3;25221:10;-1:-1:-1;;;;;25246:6:149;25243:30;25240:56;;;25276:18;;:::i;:::-;25305:97;25395:6;25355:38;25387:4;25381:11;25355:38;:::i;:::-;25349:4;25305:97;:::i;:::-;25451:4;25482:2;25471:14;;25499:1;25494:649;;;;26187:1;26204:6;26201:89;;;-1:-1:-1;26256:19:149;;;26250:26;26201:89;-1:-1:-1;;25058:1:149;25054:11;;;25050:24;25046:29;25036:40;25082:1;25078:11;;;25033:57;26303:81;;25464:930;;25494:649;24354:1;24347:14;;;24391:4;24378:18;;-1:-1:-1;;25530:20:149;;;25648:222;25662:7;25659:1;25656:14;25648:222;;;25744:19;;;25738:26;25723:42;;25851:4;25836:20;;;;25804:1;25792:14;;;;25678:12;25648:222;;;25652:3;25898:6;25889:7;25886:19;25883:201;;;25959:19;;;25953:26;-1:-1:-1;;26042:1:149;26038:14;;;26054:3;26034:24;26030:37;26026:42;26011:58;25996:74;;25883:201;-1:-1:-1;;;;26130:1:149;26114:14;;;26110:22;26097:36;;-1:-1:-1;25101:1299:149:o;26405:485::-;26501:6;26509;26517;26570:2;26558:9;26549:7;26545:23;26541:32;26538:52;;;26586:1;26583;26576:12;26538:52;26631:16;;26716:2;26701:18;;26695:25;26631:16;;-1:-1:-1;26729:33:149;26695:25;26729:33;:::i;:::-;26854:2;26839:18;;;;26833:25;26405:485;;26781:7;;-1:-1:-1;26833:25:149;;26405:485;-1:-1:-1;;26405:485:149:o;26895:301::-;27024:3;27062:6;27056:13;27108:6;27101:4;27093:6;27089:17;27084:3;27078:37;27170:1;27134:16;;27159:13;;;-1:-1:-1;27134:16:149;26895:301;-1:-1:-1;26895:301:149:o", + "language": "Solidity", + "natspec": { + "errors": { + "AddressEmptyCode(address)": [ + { + "details": "There's no code at `target` (it is not a contract)." + } + ], + "ECDSAInvalidSignature()": [ + { + "details": "The signature derives the `address(0)`." + } + ], + "ECDSAInvalidSignatureLength(uint256)": [ + { + "details": "The signature has an invalid length." + } + ], + "ECDSAInvalidSignatureS(bytes32)": [ + { + "details": "The signature has an S value that is in the upper half order." + } + ], + "ERC1967InvalidImplementation(address)": [ + { + "details": "The `implementation` of the proxy is invalid." + } + ], + "ERC1967NonPayable()": [ + { + "details": "An upgrade function sees `msg.value > 0` that may be lost." + } + ], + "FailedCall()": [ + { + "details": "A call to an address target failed. The target may have reverted." + } + ], + "InvalidInitialization()": [ + { + "details": "The contract is already initialized." + } + ], + "NotInitializing()": [ + { + "details": "The contract is not initializing." + } + ], + "UUPSUnauthorizedCallContext()": [ + { + "details": "The call is from an unauthorized context." + } + ], + "UUPSUnsupportedProxiableUUID(bytes32)": [ + { + "details": "The storage `slot` is unsupported as a UUID." + } + ] + }, + "events": { + "EIP712DomainChanged()": { + "details": "MAY be emitted to signal that the domain could have changed." + }, + "Initialized(uint64)": { + "details": "Triggered when the contract has been initialized or reinitialized." + }, + "Upgraded(address)": { + "details": "Emitted when the implementation is upgraded." + } + }, + "kind": "dev", + "methods": { + "auth(address,uint256)": { + "notice": "Authorize a minter to mint a specific number of sub-entries" + }, + "eip712Domain()": { + "details": "See {IERC-5267}." + }, + "entryPoint()": { + "notice": "Return the entryPoint used by this account. Subclass should return the current entryPoint used by this account." + }, + "execute(address,uint256,bytes)": { + "notice": "execute a single call from the account." + }, + "execute(address,uint256,bytes,uint8)": { + "details": "Allows the mech operator to execute arbitrary transactions", + "params": { + "data": "Data payload of transaction.", + "operation": "Operation type of transaction.", + "to": "Destination address of transaction.", + "value": "Ether value of transaction." + }, + "returns": { + "returnData": "Return data of the call" + } + }, + "execute(address,uint256,bytes,uint8,uint256)": { + "details": "Allows the mech operator to execute arbitrary transactions", + "params": { + "data": "Data payload of transaction.", + "operation": "Operation type of transaction.", + "to": "Destination address of transaction.", + "txGas": "Gas to send for executing the meta transaction, if 0 all left will be sent", + "value": "Ether value of transaction." + }, + "returns": { + "returnData": "Return data of the call" + } + }, + "executeBatch((address,uint256,bytes)[])": { + "notice": "execute a batch of calls. revert on the first call that fails. If the batch reverts, and it contains more than a single call, then wrap the revert with ExecuteError, to mark the failing call index." + }, + "getNonce()": { + "notice": "Return the account nonce. This method returns the next sequential nonce. For a nonce of a specific key, use `entrypoint.getNonce(account, key)`" + }, + "isOperator(address)": { + "details": "Return if the passed address is authorized to sign on behalf of the mech, must be implemented by the child contract", + "params": { + "signer": "The address to check" + } + }, + "isValidSignature(bytes32,bytes)": { + "details": "Checks whether the signature provided is valid for the provided hash, complies with EIP-1271. A signature is valid if either: - It's a valid ECDSA signature by the mech operator - It's a valid EIP-1271 signature by the mech operator - It's a valid EIP-1271 signature by the mech itself", + "params": { + "hash": "Hash of the data (could be either a message hash or transaction hash)", + "signature": "Signature to validate. Can be an ECDSA signature or a EIP-1271 contract signature (identified by v=0)" + } + }, + "isValidSigner(address,bytes)": { + "details": "Returns a magic value indicating whether a given signer is authorized to act on behalf of the account", + "params": { + "signer": "The address to check signing authorization for" + }, + "returns": { + "magicValue": "Magic value indicating whether the signer is valid" + } + }, + "proxiableUUID()": { + "details": "Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." + }, + "state()": { + "details": "Returns the current account state per EIP-6551NOTE: This does not change for arbitrary account state changes!The model used here is to change it for *owner-initiated* state changes.E.g., sending a token held by this account should change the state(),but receiving a token should not.This is to prevent griefing if, e.g., a marketplace requires constant state()from listing to sale: an attacked could send a spam token to kill the sale.However, even here, NOT ALL *OWNER-INITIATED* STATE CHANGES ARE CAPTURED.E.g., an owner might approve a contract to transferFrom from this TBA,and such transfers would NOT be reflected with a state change.As such, we advise you do NOT consider this a source of truth, but instead,for the sale-of-TBA case, commit to the state in a more comprehensive, offchain way." + }, + "supportsInterface(bytes4)": { + "details": "Returns true if a given interfaceId is supported by this account. This method can be extended by an override" + }, + "token()": { + "details": "Returns the identifier of the non-fungible token which owns the account. The return value of this function MUST be constant - it MUST NOT change over time.", + "returns": { + "chainId": " The EIP-155 ID of the chain the token exists on", + "tokenContract": "The contract address of the token", + "tokenId": " The ID of the token" + } + }, + "upgradeToAndCall(address,bytes)": { + "custom:oz-upgrades-unsafe-allow-reachable": "delegatecall", + "details": "Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event." + }, + "validateUserOp((address,uint256,bytes,bytes,bytes32,uint256,bytes32,bytes,bytes),bytes32,uint256)": { + "details": "Must validate caller is the entryPoint. Must validate the signature and nonce", + "notice": "Validate user's signature and nonce the entryPoint will make the call to the recipient only if this validation call returns successfully. signature failure should be reported by returning SIG_VALIDATION_FAILED (1). This allows making a \"simulation call\" without a valid signature Other failures (e.g. nonce mismatch, or invalid signature format) should still revert to signal failure.", + "params": { + "missingAccountFunds": "- Missing funds on the account's deposit in the entrypoint. This is the minimum amount to transfer to the sender(entryPoint) to be able to make the call. The excess is left as a deposit in the entrypoint for future calls. Can be withdrawn anytime using \"entryPoint.withdrawTo()\". In case there is a paymaster in the request (or the current deposit is high enough), this value will be zero.", + "userOp": "- The operation that is about to be executed.", + "userOpHash": "- Hash of the user's request data. can be used as the basis for signature." + }, + "returns": { + "validationData": " - Packaged ValidationData structure. use `_packValidationData` and `_unpackValidationData` to encode and decode. <20-byte> aggregatorOrSigFail - 0 for valid signature, 1 to mark signature failure, otherwise, an address of an \"aggregator\" contract. <6-byte> validUntil - Last timestamp this operation is valid at, or 0 for \"indefinitely\" <6-byte> validAfter - First timestamp this operation is valid If an account doesn't use time-range, it is enough to return SIG_VALIDATION_FAILED value (1) for signature failure. Note that the validation code cannot use block.timestamp (or block.number) directly." + } + } + }, + "stateVariables": { + "_HYPERACCOUNT_PERMISSIONED_MINTER_STORAGE": { + "details": "The storage slot at which HyperAccountPermissionedMinter storage starts, following the EIP-7201 standard.Calculated as `keccak256(abi.encode(uint256(keccak256(\"hyperware.HyperAccountPermissionedMinter.storage\")) - 1)) & ~bytes32(uint256(0xff))`." + } + }, + "version": 1 + }, + "offset": [ + 241, + 2966 + ], + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1BC JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8129FC1C GT PUSH2 0xF2 JUMPI DUP1 PUSH4 0xB61D27F6 GT PUSH2 0x92 JUMPI DUP1 PUSH4 0xD087D288 GT PUSH2 0x62 JUMPI DUP1 PUSH4 0xD087D288 EQ PUSH2 0x531 JUMPI DUP1 PUSH4 0xE901D89B EQ PUSH2 0x545 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x564 JUMPI DUP1 PUSH4 0xFC0C546A EQ PUSH2 0x590 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0xB61D27F6 EQ PUSH2 0x4BD JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xC19D93FB EQ PUSH2 0x50A JUMPI DUP1 PUSH4 0xCA3B98BB EQ PUSH2 0x51E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x9CDF379C GT PUSH2 0xCD JUMPI DUP1 PUSH4 0x9CDF379C EQ PUSH2 0x422 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x435 JUMPI DUP1 PUSH4 0xB0D691FE EQ PUSH2 0x465 JUMPI DUP1 PUSH4 0xB479D600 EQ PUSH2 0x48B JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x8129FC1C EQ PUSH2 0x3D3 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x3E7 JUMPI DUP1 PUSH4 0x8F41EC5A EQ PUSH2 0x40E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x34FCD5BE GT PUSH2 0x15D JUMPI DUP1 PUSH4 0x51945447 GT PUSH2 0x138 JUMPI DUP1 PUSH4 0x51945447 EQ PUSH2 0x361 JUMPI DUP1 PUSH4 0x523E3260 EQ PUSH2 0x381 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x3A0 JUMPI DUP1 PUSH4 0x6D70F7AE EQ PUSH2 0x3B4 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x34FCD5BE EQ PUSH2 0x2EF JUMPI DUP1 PUSH4 0x3E5BEAB9 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x34E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH4 0x12084F59 GT PUSH2 0x198 JUMPI DUP1 PUSH4 0x12084F59 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0x1626BA7E EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x19822F7C EQ PUSH2 0x2C2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 PUSH3 0x23DE29 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x1ED JUMPI DUP1 PUSH4 0x94CEFED EQ PUSH2 0x221 JUMPI PUSH0 PUSH0 REVERT JUMPDEST CALLDATASIZE PUSH2 0x1C3 JUMPI STOP JUMPDEST PUSH0 PUSH0 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1EB PUSH2 0x1E1 CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8B JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x207 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E4D JUMP JUMPDEST PUSH2 0x5C7 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x234 PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0x1E68 JUMP JUMPDEST PUSH2 0x5F2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x218 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x257 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1EB PUSH2 0x266 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EFA JUMP JUMPDEST PUSH2 0x60C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x276 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28A PUSH2 0x285 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F15 JUMP JUMPDEST PUSH2 0x679 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x218 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28A PUSH2 0x2BD CALLDATASIZE PUSH1 0x4 PUSH2 0x201F JUMP JUMPDEST PUSH2 0x6D3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E1 PUSH2 0x2DC CALLDATASIZE PUSH1 0x4 PUSH2 0x2062 JUMP JUMPDEST PUSH2 0x7F8 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x218 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2FA JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1EB PUSH2 0x309 CALLDATASIZE PUSH1 0x4 PUSH2 0x20F0 JUMP JUMPDEST PUSH2 0x82A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x319 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E1 PUSH2 0x328 CALLDATASIZE PUSH1 0x4 PUSH2 0x1EFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2891 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x1EB PUSH2 0x35C CALLDATASIZE PUSH1 0x4 PUSH2 0x212E JUMP JUMPDEST PUSH2 0x91A JUMP JUMPDEST PUSH2 0x374 PUSH2 0x36F CALLDATASIZE PUSH1 0x4 PUSH2 0x2179 JUMP JUMPDEST PUSH2 0x939 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x218 SWAP2 SWAP1 PUSH2 0x2212 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28A PUSH2 0x39B CALLDATASIZE PUSH1 0x4 PUSH2 0x2224 JUMP JUMPDEST PUSH2 0x965 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AB JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E1 PUSH2 0x98A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BF JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x20C PUSH2 0x3CE CALLDATASIZE PUSH1 0x4 PUSH2 0x1EFA JUMP JUMPDEST PUSH2 0x9A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DE JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1EB PUSH2 0xA43 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3F2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x3FB PUSH2 0xBA5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x218 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2274 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x419 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E1 PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x42D JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E1 PUSH0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x440 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x374 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x470 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH2 0x234 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x496 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH32 0x0 PUSH2 0x234 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1EB PUSH2 0x4D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x230A JUMP JUMPDEST PUSH2 0xC4E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28A PUSH2 0x4F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2361 JUMP JUMPDEST PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x515 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E1 PUSH2 0xCA6 JUMP JUMPDEST PUSH2 0x374 PUSH2 0x52C CALLDATASIZE PUSH1 0x4 PUSH2 0x2401 JUMP JUMPDEST PUSH2 0xD8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x53C JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x2E1 PUSH2 0xDC6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x550 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x1EB PUSH2 0x55F CALLDATASIZE PUSH1 0x4 PUSH2 0x2476 JUMP JUMPDEST PUSH2 0xE4F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x56F JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x28A PUSH2 0x57E CALLDATASIZE PUSH1 0x4 PUSH2 0x24A0 JUMP JUMPDEST PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x59B JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP PUSH2 0x5A4 PUSH2 0xEBF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH2 0x218 JUMP JUMPDEST PUSH0 PUSH2 0x5D1 DUP3 PUSH2 0xED5 JUMP JUMPDEST DUP1 PUSH2 0x5EC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xC5527D7B PUSH1 0xE0 SHL EQ JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x601 DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xEFF JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x615 CALLER PUSH2 0x9A5 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x636 JUMPI POP CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ ISZERO JUMPDEST ISZERO PUSH2 0x654 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47802953 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2891 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x684 PUSH2 0xEBF JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO PUSH2 0x6A1 JUMPI POP DUP1 DUP7 EQ JUMPDEST ISZERO PUSH2 0x6BF JUMPI PUSH1 0x40 MLOAD PUSH4 0xB79E3F3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH2 0x6F3 DUP6 PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 SWAP1 SWAP3 ADD MLOAD PUSH0 BYTE SWAP3 SWAP1 SWAP2 SWAP1 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0xFF DUP2 AND PUSH0 SUB PUSH2 0x7BE JUMPI DUP3 DUP6 DUP4 ADD PUSH1 0x20 ADD PUSH2 0x714 DUP3 PUSH2 0x9A5 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x72A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADDRESS EQ ISZERO JUMPDEST ISZERO PUSH2 0x745 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP5 POP PUSH2 0x5EC SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xB135D3F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x1626BA7E SWAP1 PUSH2 0x773 SWAP1 DUP12 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x2516 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x78E JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x7B2 SWAP2 SWAP1 PUSH2 0x252E JUMP JUMPDEST SWAP6 POP POP POP POP POP POP PUSH2 0x5EC JUMP JUMPDEST PUSH2 0x7CD PUSH2 0x3CE DUP8 DUP4 DUP7 DUP7 PUSH2 0x1005 JUMP JUMPDEST ISZERO PUSH2 0x7E5 JUMPI POP PUSH4 0xB135D3F PUSH1 0xE1 SHL SWAP3 POP PUSH2 0x5EC SWAP2 POP POP JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x801 PUSH2 0x1031 JUMP JUMPDEST PUSH2 0x80B DUP5 DUP5 PUSH2 0x1096 JUMP JUMPDEST SWAP1 POP PUSH2 0x81A DUP5 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x10F3 JUMP JUMPDEST PUSH2 0x823 DUP3 PUSH2 0x113C JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x832 PUSH2 0x1181 JUMP JUMPDEST DUP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x914 JUMPI CALLDATASIZE DUP5 DUP5 DUP4 DUP2 DUP2 LT PUSH2 0x850 JUMPI PUSH2 0x850 PUSH2 0x2549 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x862 SWAP2 SWAP1 PUSH2 0x255D JUMP JUMPDEST SWAP1 POP PUSH0 PUSH2 0x8C0 PUSH2 0x875 PUSH1 0x20 DUP5 ADD DUP5 PUSH2 0x1EFA JUMP JUMPDEST PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x887 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x257B JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP POP GAS PUSH2 0x1189 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x90A JUMPI DUP4 PUSH1 0x1 SUB PUSH2 0x8DC JUMPI PUSH2 0x8D7 PUSH2 0x119F JUMP JUMPDEST PUSH2 0x90A JUMP JUMPDEST DUP3 PUSH2 0x8E6 PUSH0 PUSH2 0x11B0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x5A154675 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x901 SWAP3 SWAP2 SWAP1 PUSH2 0x2516 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x835 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x922 PUSH2 0x11E1 JUMP JUMPDEST PUSH2 0x92B DUP3 PUSH2 0x1285 JUMP JUMPDEST PUSH2 0x935 DUP3 DUP3 PUSH2 0x12CD JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0x94A DUP8 DUP8 DUP8 DUP8 DUP8 GAS PUSH2 0x138E JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP1 PUSH2 0x95B JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x96F DUP5 PUSH2 0x9A5 JUMP JUMPDEST PUSH2 0x979 JUMPI PUSH0 PUSH2 0x982 JUMP JUMPDEST PUSH4 0x291F193 PUSH1 0xE5 SHL JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH2 0x993 PUSH2 0x13E5 JUMP JUMPDEST POP PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2871 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP1 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0x9B0 PUSH2 0xEBF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x31A9108F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP3 POP DUP5 AND SWAP1 PUSH4 0x6352211E SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x9FD JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA21 SWAP2 SWAP1 PUSH2 0x25BD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 ISZERO PUSH2 0x982 JUMPI POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH1 0x1 PUSH1 0x40 SHL DUP2 DIV PUSH1 0xFF AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH0 DUP2 ISZERO DUP1 ISZERO PUSH2 0xA87 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0xAA2 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0xAB0 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0xACE JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0xAF8 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0xB00 PUSH2 0x142E JUMP JUMPDEST PUSH2 0xB58 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48797065724163636F756E745065726D697373696F6E65644D696E7465720000 DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x31 PUSH1 0xF8 SHL DUP2 MSTORE POP PUSH2 0x1436 JUMP JUMPDEST DUP4 ISZERO PUSH2 0xB9E JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x60 DUP1 DUP3 DUP1 DUP1 DUP4 DUP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2851 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD SWAP1 SWAP2 POP ISZERO DUP1 ISZERO PUSH2 0xBD0 JUMPI POP PUSH1 0x1 DUP2 ADD SLOAD ISZERO JUMPDEST PUSH2 0xC14 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH21 0x1152540DCC4C8E88155B9A5B9A5D1A585B1A5E9959 PUSH1 0x5A SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x901 JUMP JUMPDEST PUSH2 0xC1C PUSH2 0x1448 JUMP JUMPDEST PUSH2 0xC24 PUSH2 0x1508 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH1 0xF PUSH1 0xF8 SHL SWAP13 SWAP4 SWAP12 POP SWAP2 SWAP10 POP CHAINID SWAP9 POP ADDRESS SWAP8 POP SWAP6 POP SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH2 0xC56 PUSH2 0x1181 JUMP JUMPDEST PUSH0 PUSH2 0xC97 DUP6 DUP6 DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP POP GAS PUSH2 0x1189 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0xB9E JUMPI PUSH2 0xB9E PUSH2 0x119F JUMP JUMPDEST PUSH0 DUP1 PUSH32 0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800 SWAP1 POP PUSH0 PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH1 0x40 MLOAD PUSH4 0x1AAB3F0D PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x35567E1A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD2B JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD4F SWAP2 SWAP1 PUSH2 0x25D8 JUMP JUMPDEST DUP3 SLOAD PUSH1 0x40 MLOAD SWAP2 SWAP3 POP PUSH2 0xD6E SWAP2 DUP4 SWAP1 PUSH1 0x20 ADD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH0 SHR SWAP3 POP POP POP SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH2 0xDAA DUP9 DUP9 DUP9 DUP9 DUP9 DUP9 ISZERO PUSH2 0xDA4 JUMPI DUP9 PUSH2 0x138E JUMP JUMPDEST GAS PUSH2 0x138E JUMP JUMPDEST SWAP3 POP SWAP1 POP DUP1 PUSH2 0xDBB JUMPI DUP2 MLOAD PUSH1 0x20 DUP4 ADD REVERT JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 PUSH1 0x40 MLOAD PUSH4 0x1AAB3F0D PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH0 PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x35567E1A SWAP1 PUSH1 0x44 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE26 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE4A SWAP2 SWAP1 PUSH2 0x25D8 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0xE58 CALLER PUSH2 0x9A5 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0xE79 JUMPI POP CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ ISZERO JUMPDEST ISZERO PUSH2 0xE97 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47802953 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2891 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xECA PUSH2 0x1546 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH0 PUSH2 0xEDF DUP3 PUSH2 0x1552 JUMP JUMPDEST DUP1 PUSH2 0x5EC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3C1CC5F1 PUSH1 0xE0 SHL EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2891 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 KECCAK256 SLOAD PUSH1 0x1 GT ISZERO PUSH2 0xF3F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2FCAD63B PUSH1 0xE2 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x901 JUMP JUMPDEST CALLER PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 SWAP3 SWAP1 PUSH2 0xF5E SWAP1 DUP5 SWAP1 PUSH2 0x2603 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP PUSH1 0x40 MLOAD PUSH4 0x94CEFED PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND SWAP1 PUSH4 0x94CEFED SWAP1 PUSH2 0xFB9 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x263E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xFD5 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xFF9 SWAP2 SWAP1 PUSH2 0x25BD JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH2 0x1015 DUP9 DUP9 DUP9 DUP9 PUSH2 0x157C JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x1025 DUP3 DUP3 PUSH2 0x1644 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ PUSH2 0x1094 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x6163636F756E743A206E6F742066726F6D20456E747279506F696E7400000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x901 JUMP JUMPDEST JUMP JUMPDEST PUSH0 PUSH1 0x4 PUSH2 0x10A6 PUSH1 0x60 DUP6 ADD DUP6 PUSH2 0x257B JUMP JUMPDEST SWAP1 POP GT ISZERO PUSH2 0x10E9 JUMPI PUSH0 PUSH2 0x10C4 PUSH2 0x10BF PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x257B JUMP JUMPDEST PUSH2 0x16FC JUMP JUMPDEST SWAP1 POP PUSH4 0xF6B31013 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND ADD PUSH2 0x10E7 JUMPI PUSH0 SWAP2 POP POP PUSH2 0x5EC JUMP JUMPDEST POP JUMPDEST PUSH2 0x823 DUP4 DUP4 PUSH2 0x1713 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 LT PUSH2 0x1139 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xD PUSH1 0x24 DUP3 ADD MSTORE PUSH13 0x496E76616C6964206E6F6E6365 PUSH1 0x98 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x901 JUMP JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1139 JUMPI PUSH1 0x40 MLOAD PUSH0 SWAP1 CALLER SWAP1 DUP4 SWAP1 DUP4 DUP2 DUP2 DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0xB9E JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xB9E JUMP JUMPDEST PUSH2 0x1094 PUSH2 0x1031 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD DUP8 DUP10 DUP8 CALL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1094 PUSH2 0x11AB PUSH0 PUSH2 0x11B0 JUMP JUMPDEST PUSH2 0x1820 JUMP JUMPDEST PUSH1 0x60 RETURNDATASIZE DUP3 ISZERO PUSH2 0x11C4 JUMPI DUP3 DUP2 GT ISZERO PUSH2 0x11C4 JUMPI POP DUP2 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP3 ADD DUP2 ADD PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP2 PUSH0 PUSH1 0x20 DUP4 ADD RETURNDATACOPY SWAP4 SWAP3 POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x1267 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x125B PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2871 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1094 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x128E CALLER PUSH2 0x9A5 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x12AF JUMPI POP CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ ISZERO JUMPDEST ISZERO PUSH2 0x1139 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47802953 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1327 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x1324 SWAP2 DUP2 ADD SWAP1 PUSH2 0x25D8 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x134F JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x901 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2871 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP2 EQ PUSH2 0x137F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x901 JUMP JUMPDEST PUSH2 0x1389 DUP4 DUP4 PUSH2 0x1828 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH32 0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800 DUP1 SLOAD PUSH0 SWAP2 PUSH1 0x60 SWAP2 DUP2 DUP5 PUSH2 0x13C1 DUP4 PUSH2 0x2691 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE POP PUSH2 0x13D4 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x187D JUMP JUMPDEST SWAP3 POP SWAP3 POP POP JUMPDEST SWAP7 POP SWAP7 SWAP5 POP POP POP POP POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x1094 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1094 PUSH2 0x19D4 JUMP JUMPDEST PUSH2 0x143E PUSH2 0x19D4 JUMP JUMPDEST PUSH2 0x935 DUP3 DUP3 PUSH2 0x1A1D JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2851 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x1486 SWAP1 PUSH2 0x26A9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x14B2 SWAP1 PUSH2 0x26A9 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x14FD JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x14D4 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x14FD JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x14E0 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103 DUP1 SLOAD PUSH1 0x60 SWAP2 PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2851 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE SWAP2 PUSH2 0x1486 SWAP1 PUSH2 0x26A9 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH2 0xECA ADDRESS PUSH2 0x1A7C JUMP JUMPDEST PUSH0 PUSH2 0x155C DUP3 PUSH2 0x1AD0 JUMP JUMPDEST DUP1 PUSH2 0x5EC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6FAFF5F1 PUSH1 0xE0 SHL EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT ISZERO PUSH2 0x15B5 JUMPI POP PUSH0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x163A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1606 JUMPI RETURNDATASIZE PUSH0 PUSH0 RETURNDATACOPY RETURNDATASIZE PUSH0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1631 JUMPI POP PUSH0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x163A JUMP JUMPDEST SWAP3 POP PUSH0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1657 JUMPI PUSH2 0x1657 PUSH2 0x26E1 JUMP JUMPDEST SUB PUSH2 0x1660 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x1674 JUMPI PUSH2 0x1674 PUSH2 0x26E1 JUMP JUMPDEST SUB PUSH2 0x1692 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x16A6 JUMPI PUSH2 0x16A6 PUSH2 0x26E1 JUMP JUMPDEST SUB PUSH2 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x901 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x16DB JUMPI PUSH2 0x16DB PUSH2 0x26E1 JUMP JUMPDEST SUB PUSH2 0x935 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x901 JUMP JUMPDEST PUSH0 PUSH1 0x4 DUP3 LT ISZERO PUSH2 0x170D JUMPI POP PUSH0 PUSH2 0x5EC JUMP JUMPDEST POP POP CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH0 DUP1 DUP1 PUSH2 0x1761 DUP5 PUSH2 0x1728 PUSH2 0x100 DUP9 ADD DUP9 PUSH2 0x257B JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1B71 SWAP3 POP POP POP JUMP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH0 DUP2 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x177A JUMPI PUSH2 0x177A PUSH2 0x26E1 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x178B JUMPI POP PUSH2 0x178B DUP3 PUSH2 0x9A5 JUMP JUMPDEST ISZERO PUSH2 0x179A JUMPI PUSH0 SWAP3 POP POP POP PUSH2 0x5EC JUMP JUMPDEST PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 PUSH0 SWAP1 DUP2 MSTORE PUSH1 0x1C DUP6 SWAP1 MSTORE PUSH1 0x3C SWAP1 KECCAK256 PUSH2 0x17DA DUP2 PUSH2 0x1728 PUSH2 0x100 DUP10 ADD DUP10 PUSH2 0x257B JUMP JUMPDEST POP SWAP1 SWAP4 POP SWAP2 POP PUSH0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x17F3 JUMPI PUSH2 0x17F3 PUSH2 0x26E1 JUMP JUMPDEST EQ DUP1 ISZERO PUSH2 0x1804 JUMPI POP PUSH2 0x1804 DUP4 PUSH2 0x9A5 JUMP JUMPDEST ISZERO PUSH2 0x1814 JUMPI PUSH0 SWAP4 POP POP POP POP PUSH2 0x5EC JUMP JUMPDEST POP PUSH1 0x1 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD REVERT JUMPDEST PUSH2 0x1831 DUP3 PUSH2 0x1BBA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x1875 JUMPI PUSH2 0x1389 DUP3 DUP3 PUSH2 0x1C1D JUMP JUMPDEST PUSH2 0x935 PUSH2 0x1C8F JUMP JUMPDEST PUSH0 PUSH1 0x60 PUSH2 0x1889 CALLER PUSH2 0x9A5 JUMP JUMPDEST ISZERO DUP1 ISZERO PUSH2 0x18AA JUMPI POP CALLER PUSH20 0x4337084D9E255FF0702461CF8895CE9E3B5FF108 EQ ISZERO JUMPDEST ISZERO PUSH2 0x18C8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47802953 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0xFF AND PUSH0 SUB PUSH2 0x1939 JUMPI DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH2 0x18EE SWAP3 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1929 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x192E JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x13DA JUMP JUMPDEST DUP4 PUSH1 0xFF AND PUSH1 0x1 SUB PUSH2 0x1998 JUMPI DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x195F SWAP3 SWAP2 SWAP1 PUSH2 0x26F5 JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP7 DELEGATECALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1929 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x192E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x24B73B30B634B21037B832B930BA34B7B7 PUSH1 0x79 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x901 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1094 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1A25 PUSH2 0x19D4 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2851 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE PUSH32 0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102 PUSH2 0x1A5E DUP5 DUP3 PUSH2 0x2748 JUMP JUMPDEST POP PUSH1 0x3 DUP2 ADD PUSH2 0x1A6D DUP4 DUP3 PUSH2 0x2748 JUMP JUMPDEST POP PUSH0 DUP1 DUP3 SSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP1 DUP3 MSTORE PUSH1 0x80 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x60 PUSH1 0x4D PUSH1 0x20 DUP4 ADD DUP8 EXTCODECOPY DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1AC2 SWAP2 SWAP1 PUSH2 0x2802 JUMP JUMPDEST SWAP4 POP SWAP4 POP SWAP4 POP POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x3CE4A3E9 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x1B00 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x1B1B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x6608BDF PUSH1 0xE2 SHL EQ JUMPDEST DUP1 PUSH2 0x1B36 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0xB135D3F PUSH1 0xE1 SHL EQ JUMPDEST DUP1 PUSH2 0x1B51 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x2711897 PUSH1 0xE5 SHL EQ JUMPDEST DUP1 PUSH2 0x5EC JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x51945447 PUSH1 0xE0 SHL EQ SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x1BA8 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH0 BYTE PUSH2 0x1B9A DUP9 DUP3 DUP6 DUP6 PUSH2 0x157C JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x1BB3 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH0 SUB PUSH2 0x1BEF JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x901 JUMP JUMPDEST PUSH0 MLOAD PUSH1 0x20 PUSH2 0x2871 PUSH0 CODECOPY PUSH0 MLOAD SWAP1 PUSH0 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH0 PUSH0 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x1C39 SWAP2 SWAP1 PUSH2 0x283A JUMP JUMPDEST PUSH0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH0 DUP2 EQ PUSH2 0x1C71 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x1C76 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x1C86 DUP6 DUP4 DUP4 PUSH2 0x1CAE JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1094 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1CC3 JUMPI PUSH2 0x1CBE DUP3 PUSH2 0x1D0A JUMP JUMPDEST PUSH2 0x823 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CDA JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1D03 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x901 JUMP JUMPDEST POP DUP1 PUSH2 0x823 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x1D1A JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1139 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1D57 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1D6D JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1D84 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xC0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1DA2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x1DAD DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x1DBD DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x1DCD DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1DEE JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1DFA DUP12 DUP3 DUP13 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1E18 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1E24 DUP12 DUP3 DUP13 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1139 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1E5D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x823 DUP2 PUSH2 0x1E38 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x1E7D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x1E88 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1EA2 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1EAE DUP10 DUP3 DUP11 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1ECC JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1ED8 DUP10 DUP3 DUP11 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x1EEC DUP2 PUSH2 0x1D33 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F0A JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x823 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1F29 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1F34 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x1F44 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1F65 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x1F71 DUP9 DUP3 DUP10 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1FA5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1FBE JUMPI PUSH2 0x1FBE PUSH2 0x1F82 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x1FEC JUMPI PUSH2 0x1FEC PUSH2 0x1F82 JUMP JUMPDEST PUSH1 0x40 MSTORE DUP2 DUP2 MSTORE DUP4 DUP3 ADD PUSH1 0x20 ADD DUP6 LT ISZERO PUSH2 0x2003 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2030 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x204C JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2058 DUP6 DUP3 DUP7 ADD PUSH2 0x1F96 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2074 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2089 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 ADD PUSH2 0x120 DUP2 DUP8 SUB SLT ISZERO PUSH2 0x209B JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x20C0 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20D6 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP6 ADD ADD GT ISZERO PUSH2 0x1D84 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2101 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2116 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2122 DUP6 DUP3 DUP7 ADD PUSH2 0x20B0 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x213F JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x214A DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x204C JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x2174 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x218D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2198 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x21B9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x21C5 DUP9 DUP3 DUP10 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP PUSH2 0x21D8 SWAP1 POP PUSH1 0x60 DUP8 ADD PUSH2 0x2164 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD DUP1 DUP5 MSTORE DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD MCOPY PUSH0 PUSH1 0x20 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH0 PUSH2 0x823 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x21E4 JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2236 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x2241 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x225B JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2267 DUP7 DUP3 DUP8 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0xFF PUSH1 0xF8 SHL DUP9 AND DUP2 MSTORE PUSH1 0xE0 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x2292 PUSH1 0xE0 DUP4 ADD DUP10 PUSH2 0x21E4 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x22A4 DUP2 DUP10 PUSH2 0x21E4 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD DUP9 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0xA0 DUP5 ADD DUP7 SWAP1 MSTORE DUP4 DUP2 SUB PUSH1 0xC0 DUP6 ADD MSTORE DUP5 MLOAD DUP1 DUP3 MSTORE PUSH1 0x20 DUP1 DUP8 ADD SWAP4 POP SWAP1 SWAP2 ADD SWAP1 PUSH0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x22F9 JUMPI DUP4 MLOAD DUP4 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22DB JUMP JUMPDEST POP SWAP1 SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x231D JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x2328 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2349 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2355 DUP8 DUP3 DUP9 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x2378 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x2383 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x2393 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x23AD JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x23B9 DUP12 DUP3 DUP13 ADD PUSH2 0x20B0 JUMP JUMPDEST SWAP1 SWAP8 POP SWAP6 POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x23D7 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x23E3 DUP12 DUP3 DUP13 ADD PUSH2 0x20B0 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1E18 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x2416 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x2421 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2442 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x244E DUP10 DUP3 DUP11 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x2461 SWAP1 POP PUSH1 0x60 DUP9 ADD PUSH2 0x2164 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP2 SWAP5 SWAP4 PUSH1 0x80 SWAP1 SWAP3 ADD CALLDATALOAD SWAP3 POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2487 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2492 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH0 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x24B5 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x24C0 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x24D0 DUP2 PUSH2 0x1D33 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x24F8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH2 0x2504 DUP10 DUP3 DUP11 ADD PUSH2 0x1D47 JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH0 PUSH2 0x982 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x21E4 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x253E JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x823 DUP2 PUSH2 0x1E38 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP3 CALLDATALOAD PUSH1 0x5E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2571 JUMPI PUSH0 PUSH0 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH0 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x2590 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x25A9 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x1D84 JUMPI PUSH0 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25CD JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x823 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x25E8 JUMPI PUSH0 PUSH0 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x5EC JUMPI PUSH2 0x5EC PUSH2 0x25EF JUMP JUMPDEST DUP2 DUP4 MSTORE DUP2 DUP2 PUSH1 0x20 DUP6 ADD CALLDATACOPY POP PUSH0 DUP3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP2 MSTORE PUSH1 0x80 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH0 SWAP1 PUSH2 0x2662 SWAP1 DUP4 ADD DUP8 DUP10 PUSH2 0x2616 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x2675 DUP2 DUP7 DUP9 PUSH2 0x2616 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x60 DUP4 ADD MSTORE SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH0 PUSH1 0x1 DUP3 ADD PUSH2 0x26A2 JUMPI PUSH2 0x26A2 PUSH2 0x25EF JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x26BD JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x26DB JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x1389 JUMPI DUP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x2729 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB9E JUMPI PUSH0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x2735 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2761 JUMPI PUSH2 0x2761 PUSH2 0x1F82 JUMP JUMPDEST PUSH2 0x2775 DUP2 PUSH2 0x276F DUP5 SLOAD PUSH2 0x26A9 JUMP JUMPDEST DUP5 PUSH2 0x2704 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x27A7 JUMPI PUSH0 DUP4 ISZERO PUSH2 0x2790 JUMPI POP DUP5 DUP3 ADD MLOAD JUMPDEST PUSH0 NOT PUSH1 0x3 DUP6 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP5 SWAP1 SHL OR DUP5 SSTORE PUSH2 0xB9E JUMP JUMPDEST PUSH0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP6 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x27D6 JUMPI DUP8 DUP6 ADD MLOAD DUP3 SSTORE PUSH1 0x20 SWAP5 DUP6 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 ADD PUSH2 0x27B6 JUMP JUMPDEST POP DUP5 DUP3 LT ISZERO PUSH2 0x27F3 JUMPI DUP7 DUP5 ADD MLOAD PUSH0 NOT PUSH1 0x3 DUP8 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH0 PUSH0 PUSH0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2814 JUMPI PUSH0 PUSH0 REVERT JUMPDEST DUP4 MLOAD PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH2 0x2827 DUP2 PUSH2 0x1D33 JUMP JUMPDEST PUSH1 0x40 SWAP5 SWAP1 SWAP5 ADD MLOAD SWAP3 SWAP6 SWAP4 SWAP5 POP SWAP2 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP6 ADD DUP5 MCOPY PUSH0 SWAP3 ADD SWAP2 DUP3 MSTORE POP SWAP2 SWAP1 POP JUMP INVALID LOG1 PUSH11 0x46D94261C7517CC8FF89F6 SHR 0xC 0xE9 CALLDATALOAD SWAP9 0xE3 0xC8 BLOBHASH DUP1 LT GT 0xDE 0xE6 BLOBHASH 0xA6 0xA5 JUMPI 0xD1 STOP CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC35BBE4873C895459AB4BDA PUSH0 0x26 PUSH0 MCOPY PUSH0 0xA6 MCOPY 0x4B SWAP2 TLOAD 0xBE DUP14 0xC2 PUSH27 0xDF6EA1FA3BA400A2646970667358221220F16405238AFEB9882385 CALLER PUSH5 0x5916DC1AF1 0xBF ADDRESS SWAP6 0x4D EXTCODESIZE JUMPI 0x4E PUSH20 0x4AA82B24F372C164736F6C634300081C00330000 ", + "pcMap": { + "0": { + "offset": [ + 241, + 2966 + ], + "op": "PUSH1", + "path": "104", + "value": "0x80" + }, + "2": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "4": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "MSTORE", + "path": "104" + }, + "5": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH1", + "path": "104", + "value": "0x4" + }, + "7": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "CALLDATASIZE", + "path": "104" + }, + "8": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "LT", + "path": "104" + }, + "9": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1BC" + }, + "12": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "13": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "14": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "CALLDATALOAD", + "path": "104" + }, + "15": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH1", + "path": "104", + "value": "0xE0" + }, + "17": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "SHR", + "path": "104" + }, + "18": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "19": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x8129FC1C" + }, + "24": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "GT", + "path": "104" + }, + "25": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0xF2" + }, + "28": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "29": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "30": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xB61D27F6" + }, + "35": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "GT", + "path": "104" + }, + "36": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x92" + }, + "39": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "40": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "41": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xD087D288" + }, + "46": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "GT", + "path": "104" + }, + "47": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x62" + }, + "50": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "51": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "52": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xD087D288" + }, + "57": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "58": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x531" + }, + "61": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "62": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "63": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xE901D89B" + }, + "68": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "69": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x545" + }, + "72": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "73": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "74": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xF23A6E61" + }, + "79": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "80": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x564" + }, + "83": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "84": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "85": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xFC0C546A" + }, + "90": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "91": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x590" + }, + "94": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "95": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "96": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "97": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "98": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "99": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "100": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xB61D27F6" + }, + "105": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "106": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x4BD" + }, + "109": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "110": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "111": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xBC197C81" + }, + "116": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "117": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x4DC" + }, + "120": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "121": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "122": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xC19D93FB" + }, + "127": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "128": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x50A" + }, + "131": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "132": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "133": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xCA3B98BB" + }, + "138": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "139": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x51E" + }, + "142": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "143": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "144": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "145": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "146": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "147": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "148": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x9CDF379C" + }, + "153": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "GT", + "path": "104" + }, + "154": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0xCD" + }, + "157": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "158": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "159": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x9CDF379C" + }, + "164": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "165": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x422" + }, + "168": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "169": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "170": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xAD3CB1CC" + }, + "175": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "176": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x435" + }, + "179": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "180": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "181": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xB0D691FE" + }, + "186": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "187": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x465" + }, + "190": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "191": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "192": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0xB479D600" + }, + "197": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "198": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x48B" + }, + "201": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "202": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "203": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "204": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "205": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "206": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "207": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x8129FC1C" + }, + "212": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "213": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x3D3" + }, + "216": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "217": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "218": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x84B0196E" + }, + "223": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "224": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x3E7" + }, + "227": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "228": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "229": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x8F41EC5A" + }, + "234": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "235": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x40E" + }, + "238": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "239": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "240": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "241": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "242": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "243": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "244": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x34FCD5BE" + }, + "249": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "GT", + "path": "104" + }, + "250": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x15D" + }, + "253": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "254": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "255": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x51945447" + }, + "260": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "GT", + "path": "104" + }, + "261": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x138" + }, + "264": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "265": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "266": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x51945447" + }, + "271": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "272": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x361" + }, + "275": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "276": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "277": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x523E3260" + }, + "282": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "283": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x381" + }, + "286": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "287": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "288": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x52D1902D" + }, + "293": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "294": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x3A0" + }, + "297": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "298": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "299": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x6D70F7AE" + }, + "304": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "305": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x3B4" + }, + "308": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "309": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "310": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "311": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "312": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "313": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "314": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x34FCD5BE" + }, + "319": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "320": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x2EF" + }, + "323": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "324": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "325": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x3E5BEAB9" + }, + "330": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "331": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x30E" + }, + "334": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "335": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "336": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x4F1EF286" + }, + "341": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "342": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x34E" + }, + "345": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "346": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "347": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "348": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "349": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "350": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "351": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x12084F59" + }, + "356": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "GT", + "path": "104" + }, + "357": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x198" + }, + "360": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "361": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "362": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x12084F59" + }, + "367": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "368": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x24C" + }, + "371": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "372": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "373": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x150B7A02" + }, + "378": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "379": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x26B" + }, + "382": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "383": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "384": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x1626BA7E" + }, + "389": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "390": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x2A3" + }, + "393": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "394": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "395": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x19822F7C" + }, + "400": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "401": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x2C2" + }, + "404": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "405": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "406": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "407": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "408": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "409": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "410": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH3", + "path": "104", + "value": "0x23DE29" + }, + "414": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "415": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1C7" + }, + "418": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "419": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "420": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x1FFC9A7" + }, + "425": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "426": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1ED" + }, + "429": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "430": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "DUP1", + "path": "104" + }, + "431": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH4", + "path": "104", + "value": "0x94CEFED" + }, + "436": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "EQ", + "path": "104" + }, + "437": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x221" + }, + "440": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "441": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "442": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "443": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "444": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "445": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "CALLDATASIZE", + "path": "104" + }, + "446": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1C3" + }, + "449": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPI", + "path": "104" + }, + "450": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "STOP", + "path": "104" + }, + "451": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "JUMPDEST", + "path": "104" + }, + "452": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "453": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "PUSH0", + "path": "104" + }, + "454": { + "fn": null, + "offset": [ + 241, + 2966 + ], + "op": "REVERT", + "path": "104" + }, + "455": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "456": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "CALLVALUE", + "path": "112" + }, + "457": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "DUP1", + "path": "112" + }, + "458": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "ISZERO", + "path": "112" + }, + "459": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1D2" + }, + "462": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPI", + "path": "112" + }, + "463": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH0", + "path": "112" + }, + "464": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH0", + "path": "112" + }, + "465": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "REVERT", + "path": "112" + }, + "466": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "467": { + "op": "POP" + }, + "468": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1EB" + }, + "471": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1E1" + }, + "474": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "475": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "477": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "PUSH2", + "path": "112", + "value": "0x1D8B" + }, + "480": { + "fn": "Receiver.tokensReceived", + "jump": "i", + "offset": [ + 1416, + 1603 + ], + "op": "JUMP", + "path": "112" + }, + "481": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "482": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "483": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "484": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "485": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "486": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "487": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "488": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "489": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "POP", + "path": "112" + }, + "490": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMP", + "path": "112" + }, + "491": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "JUMPDEST", + "path": "112" + }, + "492": { + "fn": "Receiver.tokensReceived", + "offset": [ + 1416, + 1603 + ], + "op": "STOP", + "path": "112" + }, + "493": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "JUMPDEST", + "path": "104" + }, + "494": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "CALLVALUE", + "path": "104" + }, + "495": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "DUP1", + "path": "104" + }, + "496": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "ISZERO", + "path": "104" + }, + "497": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1F8" + }, + "500": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "JUMPI", + "path": "104" + }, + "501": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH0", + "path": "104" + }, + "502": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH0", + "path": "104" + }, + "503": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "REVERT", + "path": "104" + }, + "504": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "JUMPDEST", + "path": "104" + }, + "505": { + "op": "POP" + }, + "506": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH2", + "path": "104", + "value": "0x20C" + }, + "509": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH2", + "path": "104", + "value": "0x207" + }, + "512": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "CALLDATASIZE", + "path": "104" + }, + "513": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH1", + "path": "104", + "value": "0x4" + }, + "515": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1E4D" + }, + "518": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "jump": "i", + "offset": [ + 2153, + 2440 + ], + "op": "JUMP", + "path": "104" + }, + "519": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "JUMPDEST", + "path": "104" + }, + "520": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH2", + "path": "104", + "value": "0x5C7" + }, + "523": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "jump": "i", + "offset": [ + 2153, + 2440 + ], + "op": "JUMP", + "path": "104" + }, + "524": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "JUMPDEST", + "path": "104" + }, + "525": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "527": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "MLOAD", + "path": "104" + }, + "528": { + "op": "SWAP1" + }, + "529": { + "op": "ISZERO" + }, + "530": { + "op": "ISZERO" + }, + "531": { + "op": "DUP2" + }, + "532": { + "op": "MSTORE" + }, + "533": { + "op": "PUSH1", + "value": "0x20" + }, + "535": { + "op": "ADD" + }, + "536": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "JUMPDEST", + "path": "104" + }, + "537": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "539": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "MLOAD", + "path": "104" + }, + "540": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "DUP1", + "path": "104" + }, + "541": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "SWAP2", + "path": "104" + }, + "542": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "SUB", + "path": "104" + }, + "543": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "SWAP1", + "path": "104" + }, + "544": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "RETURN", + "path": "104" + }, + "545": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "546": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x234" + }, + "549": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x22F" + }, + "552": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "CALLDATASIZE", + "path": "101" + }, + "553": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "555": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1E68" + }, + "558": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "559": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "560": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x5F2" + }, + "563": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "564": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "565": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH1", + "path": "101", + "value": "0x40" + }, + "567": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "MLOAD", + "path": "101" + }, + "568": { + "op": "PUSH1", + "value": "0x1" + }, + "570": { + "op": "PUSH1", + "value": "0x1" + }, + "572": { + "op": "PUSH1", + "value": "0xA0" + }, + "574": { + "op": "SHL" + }, + "575": { + "op": "SUB" + }, + "576": { + "op": "SWAP1" + }, + "577": { + "op": "SWAP2" + }, + "578": { + "op": "AND" + }, + "579": { + "op": "DUP2" + }, + "580": { + "op": "MSTORE" + }, + "581": { + "op": "PUSH1", + "value": "0x20" + }, + "583": { + "op": "ADD" + }, + "584": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "PUSH2", + "path": "101", + "value": "0x218" + }, + "587": { + "op": "JUMP" + }, + "588": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "JUMPDEST", + "path": "104" + }, + "589": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "CALLVALUE", + "path": "104" + }, + "590": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "DUP1", + "path": "104" + }, + "591": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "ISZERO", + "path": "104" + }, + "592": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "PUSH2", + "path": "104", + "value": "0x257" + }, + "595": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "JUMPI", + "path": "104" + }, + "596": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "PUSH0", + "path": "104" + }, + "597": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "PUSH0", + "path": "104" + }, + "598": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "REVERT", + "path": "104" + }, + "599": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "JUMPDEST", + "path": "104" + }, + "600": { + "op": "POP" + }, + "601": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1EB" + }, + "604": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "PUSH2", + "path": "104", + "value": "0x266" + }, + "607": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "CALLDATASIZE", + "path": "104" + }, + "608": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "PUSH1", + "path": "104", + "value": "0x4" + }, + "610": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1EFA" + }, + "613": { + "fn": "HyperAccountPermissionedMinter.deauth", + "jump": "i", + "offset": [ + 1733, + 1933 + ], + "op": "JUMP", + "path": "104" + }, + "614": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "JUMPDEST", + "path": "104" + }, + "615": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "PUSH2", + "path": "104", + "value": "0x60C" + }, + "618": { + "fn": "HyperAccountPermissionedMinter.deauth", + "jump": "i", + "offset": [ + 1733, + 1933 + ], + "op": "JUMP", + "path": "104" + }, + "619": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "620": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "CALLVALUE", + "path": "110" + }, + "621": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "DUP1", + "path": "110" + }, + "622": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "ISZERO", + "path": "110" + }, + "623": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x276" + }, + "626": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPI", + "path": "110" + }, + "627": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH0", + "path": "110" + }, + "628": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH0", + "path": "110" + }, + "629": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "REVERT", + "path": "110" + }, + "630": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "631": { + "op": "POP" + }, + "632": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x28A" + }, + "635": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x285" + }, + "638": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "CALLDATASIZE", + "path": "110" + }, + "639": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "641": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x1F15" + }, + "644": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "645": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "646": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x679" + }, + "649": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "650": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "651": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "653": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "MLOAD", + "path": "110" + }, + "654": { + "op": "PUSH1", + "value": "0x1" + }, + "656": { + "op": "PUSH1", + "value": "0x1" + }, + "658": { + "op": "PUSH1", + "value": "0xE0" + }, + "660": { + "op": "SHL" + }, + "661": { + "op": "SUB" + }, + "662": { + "op": "NOT" + }, + "663": { + "op": "SWAP1" + }, + "664": { + "op": "SWAP2" + }, + "665": { + "op": "AND" + }, + "666": { + "op": "DUP2" + }, + "667": { + "op": "MSTORE" + }, + "668": { + "op": "PUSH1", + "value": "0x20" + }, + "670": { + "op": "ADD" + }, + "671": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "PUSH2", + "path": "110", + "value": "0x218" + }, + "674": { + "op": "JUMP" + }, + "675": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "676": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "CALLVALUE", + "path": "111" + }, + "677": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "DUP1", + "path": "111" + }, + "678": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "ISZERO", + "path": "111" + }, + "679": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2AE" + }, + "682": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPI", + "path": "111" + }, + "683": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH0", + "path": "111" + }, + "684": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH0", + "path": "111" + }, + "685": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "REVERT", + "path": "111" + }, + "686": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "687": { + "op": "POP" + }, + "688": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x28A" + }, + "691": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2BD" + }, + "694": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "695": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "697": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x201F" + }, + "700": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "701": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "702": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "PUSH2", + "path": "111", + "value": "0x6D3" + }, + "705": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "706": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "707": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "CALLVALUE", + "path": "85" + }, + "708": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "DUP1", + "path": "85" + }, + "709": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "ISZERO", + "path": "85" + }, + "710": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2CD" + }, + "713": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPI", + "path": "85" + }, + "714": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH0", + "path": "85" + }, + "715": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH0", + "path": "85" + }, + "716": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "REVERT", + "path": "85" + }, + "717": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "718": { + "op": "POP" + }, + "719": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2E1" + }, + "722": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2DC" + }, + "725": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "726": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "728": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2062" + }, + "731": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "732": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "733": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x7F8" + }, + "736": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "737": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "738": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "740": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "MLOAD", + "path": "85" + }, + "741": { + "op": "SWAP1" + }, + "742": { + "op": "DUP2" + }, + "743": { + "op": "MSTORE" + }, + "744": { + "op": "PUSH1", + "value": "0x20" + }, + "746": { + "op": "ADD" + }, + "747": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "PUSH2", + "path": "85", + "value": "0x218" + }, + "750": { + "op": "JUMP" + }, + "751": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "752": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "CALLVALUE", + "path": "85" + }, + "753": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "DUP1", + "path": "85" + }, + "754": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "ISZERO", + "path": "85" + }, + "755": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2FA" + }, + "758": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPI", + "path": "85" + }, + "759": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH0", + "path": "85" + }, + "760": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH0", + "path": "85" + }, + "761": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "REVERT", + "path": "85" + }, + "762": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "763": { + "op": "POP" + }, + "764": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1EB" + }, + "767": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x309" + }, + "770": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "771": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "773": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x20F0" + }, + "776": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "777": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "778": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "PUSH2", + "path": "85", + "value": "0x82A" + }, + "781": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "782": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "JUMPDEST", + "path": "104" + }, + "783": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "CALLVALUE", + "path": "104" + }, + "784": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "DUP1", + "path": "104" + }, + "785": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "ISZERO", + "path": "104" + }, + "786": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "PUSH2", + "path": "104", + "value": "0x319" + }, + "789": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "JUMPI", + "path": "104" + }, + "790": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "PUSH0", + "path": "104" + }, + "791": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "PUSH0", + "path": "104" + }, + "792": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "REVERT", + "path": "104" + }, + "793": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "JUMPDEST", + "path": "104" + }, + "794": { + "op": "POP" + }, + "795": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "PUSH2", + "path": "104", + "value": "0x2E1" + }, + "798": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "PUSH2", + "path": "104", + "value": "0x328" + }, + "801": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "CALLDATASIZE", + "path": "104" + }, + "802": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "PUSH1", + "path": "104", + "value": "0x4" + }, + "804": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1EFA" + }, + "807": { + "fn": "HyperAccountPermissionedMinter.allowance", + "jump": "i", + "offset": [ + 1939, + 2147 + ], + "op": "JUMP", + "path": "104" + }, + "808": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "JUMPDEST", + "path": "104" + }, + "809": { + "op": "PUSH1", + "value": "0x1" + }, + "811": { + "op": "PUSH1", + "value": "0x1" + }, + "813": { + "op": "PUSH1", + "value": "0xA0" + }, + "815": { + "op": "SHL" + }, + "816": { + "op": "SUB" + }, + "817": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "AND", + "path": "104", + "statement": 0 + }, + "818": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1994, + 2001 + ], + "op": "PUSH0", + "path": "104" + }, + "819": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "SWAP1", + "path": "104" + }, + "820": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "DUP2", + "path": "104" + }, + "821": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "MSTORE", + "path": "104" + }, + "822": { + "op": "PUSH0" + }, + "823": { + "op": "MLOAD" + }, + "824": { + "op": "PUSH1", + "value": "0x20" + }, + "826": { + "op": "PUSH2", + "value": "0x2891" + }, + "829": { + "op": "PUSH0" + }, + "830": { + "op": "CODECOPY" + }, + "831": { + "op": "PUSH0" + }, + "832": { + "op": "MLOAD" + }, + "833": { + "op": "SWAP1" + }, + "834": { + "op": "PUSH0" + }, + "835": { + "op": "MSTORE" + }, + "836": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "PUSH1", + "path": "104", + "value": "0x20" + }, + "838": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "MSTORE", + "path": "104" + }, + "839": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "841": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "SWAP1", + "path": "104" + }, + "842": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "KECCAK256", + "path": "104" + }, + "843": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "SLOAD", + "path": "104" + }, + "844": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 2123, + 2140 + ], + "op": "SWAP1", + "path": "104" + }, + "845": { + "fn": "HyperAccountPermissionedMinter.allowance", + "offset": [ + 1939, + 2147 + ], + "op": "JUMP", + "path": "104" + }, + "846": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "847": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1EB" + }, + "850": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x35C" + }, + "853": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "CALLDATASIZE", + "path": "68" + }, + "854": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "856": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x212E" + }, + "859": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "860": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "861": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "PUSH2", + "path": "68", + "value": "0x91A" + }, + "864": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "865": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "866": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x374" + }, + "869": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x36F" + }, + "872": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "873": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "875": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2179" + }, + "878": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "879": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "880": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x939" + }, + "883": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "884": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "885": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "887": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "MLOAD", + "path": "111" + }, + "888": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x218" + }, + "891": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP2", + "path": "111" + }, + "892": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP1", + "path": "111" + }, + "893": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2212" + }, + "896": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "897": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "898": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "CALLVALUE", + "path": "113" + }, + "899": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "DUP1", + "path": "113" + }, + "900": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "ISZERO", + "path": "113" + }, + "901": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x38C" + }, + "904": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPI", + "path": "113" + }, + "905": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH0", + "path": "113" + }, + "906": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH0", + "path": "113" + }, + "907": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "REVERT", + "path": "113" + }, + "908": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "909": { + "op": "POP" + }, + "910": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x28A" + }, + "913": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x39B" + }, + "916": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "CALLDATASIZE", + "path": "113" + }, + "917": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH1", + "path": "113", + "value": "0x4" + }, + "919": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2224" + }, + "922": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "923": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "924": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "PUSH2", + "path": "113", + "value": "0x965" + }, + "927": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "928": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "929": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "CALLVALUE", + "path": "68" + }, + "930": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "DUP1", + "path": "68" + }, + "931": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "ISZERO", + "path": "68" + }, + "932": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x3AB" + }, + "935": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPI", + "path": "68" + }, + "936": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH0", + "path": "68" + }, + "937": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH0", + "path": "68" + }, + "938": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "REVERT", + "path": "68" + }, + "939": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "940": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "POP", + "path": "68" + }, + "941": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x2E1" + }, + "944": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "PUSH2", + "path": "68", + "value": "0x98A" + }, + "947": { + "fn": "UUPSUpgradeable.proxiableUUID", + "jump": "i", + "offset": [ + 3708, + 3842 + ], + "op": "JUMP", + "path": "68" + }, + "948": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "949": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "CALLVALUE", + "path": "110" + }, + "950": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "DUP1", + "path": "110" + }, + "951": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "ISZERO", + "path": "110" + }, + "952": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x3BF" + }, + "955": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPI", + "path": "110" + }, + "956": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH0", + "path": "110" + }, + "957": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH0", + "path": "110" + }, + "958": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "REVERT", + "path": "110" + }, + "959": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "960": { + "op": "POP" + }, + "961": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x20C" + }, + "964": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x3CE" + }, + "967": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "CALLDATASIZE", + "path": "110" + }, + "968": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "970": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x1EFA" + }, + "973": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "974": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "975": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "PUSH2", + "path": "110", + "value": "0x9A5" + }, + "978": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "979": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "JUMPDEST", + "path": "104" + }, + "980": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "CALLVALUE", + "path": "104" + }, + "981": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "DUP1", + "path": "104" + }, + "982": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "ISZERO", + "path": "104" + }, + "983": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "PUSH2", + "path": "104", + "value": "0x3DE" + }, + "986": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "JUMPI", + "path": "104" + }, + "987": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "PUSH0", + "path": "104" + }, + "988": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "PUSH0", + "path": "104" + }, + "989": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "REVERT", + "path": "104" + }, + "990": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "JUMPDEST", + "path": "104" + }, + "991": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "POP", + "path": "104" + }, + "992": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1EB" + }, + "995": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "PUSH2", + "path": "104", + "value": "0xA43" + }, + "998": { + "fn": "HyperAccountPermissionedMinter.initialize", + "jump": "i", + "offset": [ + 1274, + 1418 + ], + "op": "JUMP", + "path": "104" + }, + "999": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "1000": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "CALLVALUE", + "path": "75" + }, + "1001": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "DUP1", + "path": "75" + }, + "1002": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "ISZERO", + "path": "75" + }, + "1003": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x3F2" + }, + "1006": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPI", + "path": "75" + }, + "1007": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH0", + "path": "75" + }, + "1008": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH0", + "path": "75" + }, + "1009": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "REVERT", + "path": "75" + }, + "1010": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "1011": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "POP", + "path": "75" + }, + "1012": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x3FB" + }, + "1015": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0xBA5" + }, + "1018": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "1019": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "1020": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "1022": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "MLOAD", + "path": "75" + }, + "1023": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x218" + }, + "1026": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP8", + "path": "75" + }, + "1027": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP7", + "path": "75" + }, + "1028": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP6", + "path": "75" + }, + "1029": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP5", + "path": "75" + }, + "1030": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP4", + "path": "75" + }, + "1031": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP3", + "path": "75" + }, + "1032": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP2", + "path": "75" + }, + "1033": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "SWAP1", + "path": "75" + }, + "1034": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2274" + }, + "1037": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "1038": { + "offset": [ + 737, + 786 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1039": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "CALLVALUE", + "path": "109" + }, + "1040": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "DUP1", + "path": "109" + }, + "1041": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "ISZERO", + "path": "109" + }, + "1042": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "PUSH2", + "path": "109", + "value": "0x419" + }, + "1045": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "JUMPI", + "path": "109" + }, + "1046": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "PUSH0", + "path": "109" + }, + "1047": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "PUSH0", + "path": "109" + }, + "1048": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "REVERT", + "path": "109" + }, + "1049": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1050": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "POP", + "path": "109" + }, + "1051": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "PUSH2", + "path": "109", + "value": "0x2E1" + }, + "1054": { + "offset": [ + 785, + 786 + ], + "op": "PUSH1", + "path": "109", + "value": "0x1" + }, + "1056": { + "offset": [ + 737, + 786 + ], + "op": "DUP2", + "path": "109" + }, + "1057": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 737, + 786 + ], + "op": "JUMP", + "path": "109" + }, + "1058": { + "offset": [ + 679, + 731 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1059": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "CALLVALUE", + "path": "109" + }, + "1060": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "DUP1", + "path": "109" + }, + "1061": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "ISZERO", + "path": "109" + }, + "1062": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "PUSH2", + "path": "109", + "value": "0x42D" + }, + "1065": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "JUMPI", + "path": "109" + }, + "1066": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "1067": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "1068": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "REVERT", + "path": "109" + }, + "1069": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1070": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "POP", + "path": "109" + }, + "1071": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "PUSH2", + "path": "109", + "value": "0x2E1" + }, + "1074": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "1075": { + "offset": [ + 679, + 731 + ], + "op": "DUP2", + "path": "109" + }, + "1076": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 679, + 731 + ], + "op": "JUMP", + "path": "109" + }, + "1077": { + "offset": [ + 1819, + 1877 + ], + "op": "JUMPDEST", + "path": "68" + }, + "1078": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "CALLVALUE", + "path": "68" + }, + "1079": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "1080": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "ISZERO", + "path": "68" + }, + "1081": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH2", + "path": "68", + "value": "0x440" + }, + "1084": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "JUMPI", + "path": "68" + }, + "1085": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH0", + "path": "68" + }, + "1086": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH0", + "path": "68" + }, + "1087": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "REVERT", + "path": "68" + }, + "1088": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "JUMPDEST", + "path": "68" + }, + "1089": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "POP", + "path": "68" + }, + "1090": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH2", + "path": "68", + "value": "0x374" + }, + "1093": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "1095": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "MLOAD", + "path": "68" + }, + "1096": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "1097": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "1099": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "ADD", + "path": "68" + }, + "1100": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "1102": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "1103": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP1", + "path": "68" + }, + "1104": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x5" + }, + "1106": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "1107": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "1108": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "PUSH1", + "path": "68", + "value": "0x20" + }, + "1110": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "ADD", + "path": "68" + }, + "1111": { + "op": "PUSH5", + "value": "0x352E302E3" + }, + "1117": { + "op": "PUSH1", + "value": "0xDC" + }, + "1119": { + "op": "SHL" + }, + "1120": { + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "1121": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "MSTORE", + "path": "68" + }, + "1122": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "POP", + "path": "68" + }, + "1123": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "DUP2", + "path": "68" + }, + "1124": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 1819, + 1877 + ], + "op": "JUMP", + "path": "68" + }, + "1125": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1126": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "CALLVALUE", + "path": "109" + }, + "1127": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "DUP1", + "path": "109" + }, + "1128": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "ISZERO", + "path": "109" + }, + "1129": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH2", + "path": "109", + "value": "0x470" + }, + "1132": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPI", + "path": "109" + }, + "1133": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH0", + "path": "109" + }, + "1134": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH0", + "path": "109" + }, + "1135": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "REVERT", + "path": "109" + }, + "1136": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMPDEST", + "path": "109" + }, + "1137": { + "op": "POP" + }, + "1138": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "1159": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "PUSH2", + "path": "109", + "value": "0x234" + }, + "1162": { + "fn": "Account.entryPoint", + "offset": [ + 1043, + 1151 + ], + "op": "JUMP", + "path": "109" + }, + "1163": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1164": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "CALLVALUE", + "path": "101" + }, + "1165": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "DUP1", + "path": "101" + }, + "1166": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "ISZERO", + "path": "101" + }, + "1167": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH2", + "path": "101", + "value": "0x496" + }, + "1170": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPI", + "path": "101" + }, + "1171": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH0", + "path": "101" + }, + "1172": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH0", + "path": "101" + }, + "1173": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "REVERT", + "path": "101" + }, + "1174": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1175": { + "op": "POP" + }, + "1176": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2124, + 2133 + ], + "op": "PUSH32", + "path": "101", + "statement": 1, + "value": "0x0" + }, + "1209": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "PUSH2", + "path": "101", + "value": "0x234" + }, + "1212": { + "fn": "HyperAccountMinterUpgradable.hypermap", + "offset": [ + 2045, + 2140 + ], + "op": "JUMP", + "path": "101" + }, + "1213": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1214": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "CALLVALUE", + "path": "85" + }, + "1215": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "DUP1", + "path": "85" + }, + "1216": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "ISZERO", + "path": "85" + }, + "1217": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x4C8" + }, + "1220": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPI", + "path": "85" + }, + "1221": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH0", + "path": "85" + }, + "1222": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH0", + "path": "85" + }, + "1223": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "REVERT", + "path": "85" + }, + "1224": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1225": { + "op": "POP" + }, + "1226": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1EB" + }, + "1229": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x4D7" + }, + "1232": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "1233": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "1235": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0x230A" + }, + "1238": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1383, + 1638 + ], + "op": "JUMP", + "path": "85" + }, + "1239": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1240": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "PUSH2", + "path": "85", + "value": "0xC4E" + }, + "1243": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1383, + 1638 + ], + "op": "JUMP", + "path": "85" + }, + "1244": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1245": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "CALLVALUE", + "path": "112" + }, + "1246": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "DUP1", + "path": "112" + }, + "1247": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "ISZERO", + "path": "112" + }, + "1248": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x4E7" + }, + "1251": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPI", + "path": "112" + }, + "1252": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH0", + "path": "112" + }, + "1253": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH0", + "path": "112" + }, + "1254": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "REVERT", + "path": "112" + }, + "1255": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1256": { + "op": "POP" + }, + "1257": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x28A" + }, + "1260": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x4F6" + }, + "1263": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "1264": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "1266": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "PUSH2", + "path": "112", + "value": "0x2361" + }, + "1269": { + "fn": "Receiver.onERC1155BatchReceived", + "jump": "i", + "offset": [ + 931, + 1189 + ], + "op": "JUMP", + "path": "112" + }, + "1270": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1271": { + "op": "PUSH4", + "value": "0xBC197C81" + }, + "1276": { + "op": "PUSH1", + "value": "0xE0" + }, + "1278": { + "op": "SHL" + }, + "1279": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "SWAP9", + "path": "112" + }, + "1280": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "SWAP8", + "path": "112" + }, + "1281": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1282": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1283": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1284": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1285": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1286": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1287": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1288": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "POP", + "path": "112" + }, + "1289": { + "fn": "Receiver.onERC1155BatchReceived", + "offset": [ + 931, + 1189 + ], + "op": "JUMP", + "path": "112" + }, + "1290": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1291": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "CALLVALUE", + "path": "113" + }, + "1292": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "DUP1", + "path": "113" + }, + "1293": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "ISZERO", + "path": "113" + }, + "1294": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0x515" + }, + "1297": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPI", + "path": "113" + }, + "1298": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH0", + "path": "113" + }, + "1299": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH0", + "path": "113" + }, + "1300": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "REVERT", + "path": "113" + }, + "1301": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1302": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "POP", + "path": "113" + }, + "1303": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2E1" + }, + "1306": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "PUSH2", + "path": "113", + "value": "0xCA6" + }, + "1309": { + "fn": "TokenBoundMech.state", + "jump": "i", + "offset": [ + 2128, + 2485 + ], + "op": "JUMP", + "path": "113" + }, + "1310": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1311": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x374" + }, + "1314": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x52C" + }, + "1317": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "CALLDATASIZE", + "path": "111" + }, + "1318": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "1320": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2401" + }, + "1323": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "1324": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1325": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "PUSH2", + "path": "111", + "value": "0xD8D" + }, + "1328": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "1329": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1330": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "CALLVALUE", + "path": "85" + }, + "1331": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "DUP1", + "path": "85" + }, + "1332": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "ISZERO", + "path": "85" + }, + "1333": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0x53C" + }, + "1336": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPI", + "path": "85" + }, + "1337": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH0", + "path": "85" + }, + "1338": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH0", + "path": "85" + }, + "1339": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "REVERT", + "path": "85" + }, + "1340": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "1341": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "POP", + "path": "85" + }, + "1342": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2E1" + }, + "1345": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "PUSH2", + "path": "85", + "value": "0xDC6" + }, + "1348": { + "fn": "BaseAccount.getNonce", + "jump": "i", + "offset": [ + 981, + 1102 + ], + "op": "JUMP", + "path": "85" + }, + "1349": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "JUMPDEST", + "path": "104" + }, + "1350": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "CALLVALUE", + "path": "104" + }, + "1351": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "DUP1", + "path": "104" + }, + "1352": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "ISZERO", + "path": "104" + }, + "1353": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "PUSH2", + "path": "104", + "value": "0x550" + }, + "1356": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "JUMPI", + "path": "104" + }, + "1357": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "PUSH0", + "path": "104" + }, + "1358": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "PUSH0", + "path": "104" + }, + "1359": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "REVERT", + "path": "104" + }, + "1360": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "JUMPDEST", + "path": "104" + }, + "1361": { + "op": "POP" + }, + "1362": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1EB" + }, + "1365": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "PUSH2", + "path": "104", + "value": "0x55F" + }, + "1368": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "CALLDATASIZE", + "path": "104" + }, + "1369": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "PUSH1", + "path": "104", + "value": "0x4" + }, + "1371": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "PUSH2", + "path": "104", + "value": "0x2476" + }, + "1374": { + "fn": "HyperAccountPermissionedMinter.auth", + "jump": "i", + "offset": [ + 1500, + 1727 + ], + "op": "JUMP", + "path": "104" + }, + "1375": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "JUMPDEST", + "path": "104" + }, + "1376": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "PUSH2", + "path": "104", + "value": "0xE4F" + }, + "1379": { + "fn": "HyperAccountPermissionedMinter.auth", + "jump": "i", + "offset": [ + 1500, + 1727 + ], + "op": "JUMP", + "path": "104" + }, + "1380": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1381": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "CALLVALUE", + "path": "112" + }, + "1382": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "DUP1", + "path": "112" + }, + "1383": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "ISZERO", + "path": "112" + }, + "1384": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x56F" + }, + "1387": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPI", + "path": "112" + }, + "1388": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH0", + "path": "112" + }, + "1389": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH0", + "path": "112" + }, + "1390": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "REVERT", + "path": "112" + }, + "1391": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1392": { + "op": "POP" + }, + "1393": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x28A" + }, + "1396": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x57E" + }, + "1399": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "CALLDATASIZE", + "path": "112" + }, + "1400": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH1", + "path": "112", + "value": "0x4" + }, + "1402": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "PUSH2", + "path": "112", + "value": "0x24A0" + }, + "1405": { + "fn": "Receiver.onERC1155Received", + "jump": "i", + "offset": [ + 699, + 925 + ], + "op": "JUMP", + "path": "112" + }, + "1406": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMPDEST", + "path": "112" + }, + "1407": { + "op": "PUSH4", + "value": "0xF23A6E61" + }, + "1412": { + "op": "PUSH1", + "value": "0xE0" + }, + "1414": { + "op": "SHL" + }, + "1415": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "SWAP7", + "path": "112" + }, + "1416": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "SWAP6", + "path": "112" + }, + "1417": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1418": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1419": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1420": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1421": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1422": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "POP", + "path": "112" + }, + "1423": { + "fn": "Receiver.onERC1155Received", + "offset": [ + 699, + 925 + ], + "op": "JUMP", + "path": "112" + }, + "1424": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1425": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "CALLVALUE", + "path": "113" + }, + "1426": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "DUP1", + "path": "113" + }, + "1427": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "ISZERO", + "path": "113" + }, + "1428": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x59B" + }, + "1431": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPI", + "path": "113" + }, + "1432": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH0", + "path": "113" + }, + "1433": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH0", + "path": "113" + }, + "1434": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "REVERT", + "path": "113" + }, + "1435": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1436": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "POP", + "path": "113" + }, + "1437": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x5A4" + }, + "1440": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0xEBF" + }, + "1443": { + "fn": "TokenBoundMech.token", + "jump": "i", + "offset": [ + 2491, + 2635 + ], + "op": "JUMP", + "path": "113" + }, + "1444": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "1445": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "1447": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "DUP1", + "path": "113" + }, + "1448": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "MLOAD", + "path": "113" + }, + "1449": { + "op": "SWAP4" + }, + "1450": { + "op": "DUP5" + }, + "1451": { + "op": "MSTORE" + }, + "1452": { + "op": "PUSH1", + "value": "0x1" + }, + "1454": { + "op": "PUSH1", + "value": "0x1" + }, + "1456": { + "op": "PUSH1", + "value": "0xA0" + }, + "1458": { + "op": "SHL" + }, + "1459": { + "op": "SUB" + }, + "1460": { + "op": "SWAP1" + }, + "1461": { + "op": "SWAP3" + }, + "1462": { + "op": "AND" + }, + "1463": { + "op": "PUSH1", + "value": "0x20" + }, + "1465": { + "op": "DUP5" + }, + "1466": { + "op": "ADD" + }, + "1467": { + "op": "MSTORE" + }, + "1468": { + "op": "SWAP1" + }, + "1469": { + "op": "DUP3" + }, + "1470": { + "op": "ADD" + }, + "1471": { + "op": "MSTORE" + }, + "1472": { + "op": "PUSH1", + "value": "0x60" + }, + "1474": { + "op": "ADD" + }, + "1475": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "PUSH2", + "path": "113", + "value": "0x218" + }, + "1478": { + "op": "JUMP" + }, + "1479": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "JUMPDEST", + "path": "104" + }, + "1480": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2308, + 2312 + ], + "op": "PUSH0", + "path": "104" + }, + "1481": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2335, + 2371 + ], + "op": "PUSH2", + "path": "104", + "statement": 2, + "value": "0x5D1" + }, + "1484": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2359, + 2370 + ], + "op": "DUP3", + "path": "104" + }, + "1485": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2335, + 2358 + ], + "op": "PUSH2", + "path": "104", + "value": "0xED5" + }, + "1488": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "jump": "i", + "offset": [ + 2335, + 2371 + ], + "op": "JUMP", + "path": "104" + }, + "1489": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2335, + 2371 + ], + "op": "JUMPDEST", + "path": "104" + }, + "1490": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2335, + 2433 + ], + "op": "DUP1", + "path": "104" + }, + "1491": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2335, + 2433 + ], + "op": "PUSH2", + "path": "104", + "value": "0x5EC" + }, + "1494": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2335, + 2433 + ], + "op": "JUMPI", + "path": "104" + }, + "1495": { + "op": "POP" + }, + "1496": { + "op": "PUSH1", + "value": "0x1" + }, + "1498": { + "op": "PUSH1", + "value": "0x1" + }, + "1500": { + "op": "PUSH1", + "value": "0xE0" + }, + "1502": { + "op": "SHL" + }, + "1503": { + "op": "SUB" + }, + "1504": { + "op": "NOT" + }, + "1505": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2375, + 2433 + ], + "op": "DUP3", + "path": "104" + }, + "1506": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2375, + 2433 + ], + "op": "AND", + "path": "104" + }, + "1507": { + "op": "PUSH4", + "value": "0xC5527D7B" + }, + "1512": { + "op": "PUSH1", + "value": "0xE0" + }, + "1514": { + "op": "SHL" + }, + "1515": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2375, + 2433 + ], + "op": "EQ", + "path": "104" + }, + "1516": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2335, + 2433 + ], + "op": "JUMPDEST", + "path": "104" + }, + "1517": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2328, + 2433 + ], + "op": "SWAP3", + "path": "104" + }, + "1518": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "offset": [ + 2153, + 2440 + ], + "op": "SWAP2", + "path": "104" + }, + "1519": { + "op": "POP" + }, + "1520": { + "op": "POP" + }, + "1521": { + "fn": "HyperAccountPermissionedMinter.supportsInterface", + "jump": "o", + "offset": [ + 2153, + 2440 + ], + "op": "JUMP", + "path": "104" + }, + "1522": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1523": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2527, + 2538 + ], + "op": "PUSH0", + "path": "101" + }, + "1524": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2608 + ], + "op": "PUSH2", + "path": "101", + "statement": 3, + "value": "0x601" + }, + "1527": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2567, + 2569 + ], + "op": "DUP8", + "path": "101" + }, + "1528": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2571, + 2575 + ], + "op": "DUP8", + "path": "101" + }, + "1529": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2571, + 2575 + ], + "op": "DUP8", + "path": "101" + }, + "1530": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2577, + 2591 + ], + "op": "DUP8", + "path": "101" + }, + "1531": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2577, + 2591 + ], + "op": "DUP8", + "path": "101" + }, + "1532": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2593, + 2607 + ], + "op": "DUP8", + "path": "101" + }, + "1533": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2566 + ], + "op": "PUSH2", + "path": "101", + "value": "0xEFF" + }, + "1536": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "i", + "offset": [ + 2561, + 2608 + ], + "op": "JUMP", + "path": "101" + }, + "1537": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2561, + 2608 + ], + "op": "JUMPDEST", + "path": "101" + }, + "1538": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2554, + 2608 + ], + "op": "SWAP8", + "path": "101" + }, + "1539": { + "fn": "HyperAccountMinterUpgradable.mint", + "offset": [ + 2375, + 2615 + ], + "op": "SWAP7", + "path": "101" + }, + "1540": { + "op": "POP" + }, + "1541": { + "op": "POP" + }, + "1542": { + "op": "POP" + }, + "1543": { + "op": "POP" + }, + "1544": { + "op": "POP" + }, + "1545": { + "op": "POP" + }, + "1546": { + "op": "POP" + }, + "1547": { + "fn": "HyperAccountMinterUpgradable.mint", + "jump": "o", + "offset": [ + 2375, + 2615 + ], + "op": "JUMP", + "path": "101" + }, + "1548": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1733, + 1933 + ], + "op": "JUMPDEST", + "path": "104" + }, + "1549": { + "offset": [ + 1240, + 1262 + ], + "op": "PUSH2", + "path": "111", + "value": "0x615" + }, + "1552": { + "offset": [ + 1251, + 1261 + ], + "op": "CALLER", + "path": "111" + }, + "1553": { + "offset": [ + 1240, + 1250 + ], + "op": "PUSH2", + "path": "111", + "value": "0x9A5" + }, + "1556": { + "jump": "i", + "offset": [ + 1240, + 1262 + ], + "op": "JUMP", + "path": "111" + }, + "1557": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1240, + 1262 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1558": { + "offset": [ + 1239, + 1262 + ], + "op": "ISZERO", + "path": "111" + }, + "1559": { + "offset": [ + 1239, + 1301 + ], + "op": "DUP1", + "path": "111" + }, + "1560": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1239, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "1561": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1239, + 1301 + ], + "op": "PUSH2", + "path": "111", + "value": "0x636" + }, + "1564": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPI", + "path": "111" + }, + "1565": { + "op": "POP" + }, + "1566": { + "offset": [ + 1266, + 1276 + ], + "op": "CALLER", + "path": "111" + }, + "1567": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "1588": { + "offset": [ + 1266, + 1301 + ], + "op": "EQ", + "path": "111" + }, + "1589": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1266, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "1590": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1591": { + "offset": [ + 1235, + 1360 + ], + "op": "ISZERO", + "path": "111" + }, + "1592": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1235, + 1360 + ], + "op": "PUSH2", + "path": "111", + "value": "0x654" + }, + "1595": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPI", + "path": "111" + }, + "1596": { + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1598": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "1599": { + "op": "PUSH4", + "value": "0x47802953" + }, + "1604": { + "op": "PUSH1", + "value": "0xE1" + }, + "1606": { + "op": "SHL" + }, + "1607": { + "offset": [ + 1324, + 1349 + ], + "op": "DUP2", + "path": "111" + }, + "1608": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "MSTORE", + "path": "111" + }, + "1609": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "1611": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "ADD", + "path": "111" + }, + "1612": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1614": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "1615": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "DUP1", + "path": "111" + }, + "1616": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP2", + "path": "111" + }, + "1617": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "SUB", + "path": "111" + }, + "1618": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP1", + "path": "111" + }, + "1619": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1324, + 1349 + ], + "op": "REVERT", + "path": "111" + }, + "1620": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1621": { + "op": "PUSH1", + "value": "0x1" + }, + "1623": { + "op": "PUSH1", + "value": "0x1" + }, + "1625": { + "op": "PUSH1", + "value": "0xA0" + }, + "1627": { + "op": "SHL" + }, + "1628": { + "op": "SUB" + }, + "1629": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "AND", + "path": "104", + "statement": 4 + }, + "1630": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1802, + 1849 + ], + "op": "PUSH0", + "path": "104" + }, + "1631": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "SWAP1", + "path": "104" + }, + "1632": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "DUP2", + "path": "104" + }, + "1633": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "MSTORE", + "path": "104" + }, + "1634": { + "op": "PUSH0" + }, + "1635": { + "op": "MLOAD" + }, + "1636": { + "op": "PUSH1", + "value": "0x20" + }, + "1638": { + "op": "PUSH2", + "value": "0x2891" + }, + "1641": { + "op": "PUSH0" + }, + "1642": { + "op": "CODECOPY" + }, + "1643": { + "op": "PUSH0" + }, + "1644": { + "op": "MLOAD" + }, + "1645": { + "op": "SWAP1" + }, + "1646": { + "op": "PUSH0" + }, + "1647": { + "op": "MSTORE" + }, + "1648": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "PUSH1", + "path": "104", + "value": "0x20" + }, + "1650": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "MSTORE", + "path": "104" + }, + "1651": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "1653": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "DUP2", + "path": "104" + }, + "1654": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1922 + ], + "op": "KECCAK256", + "path": "104" + }, + "1655": { + "fn": "HyperAccountPermissionedMinter.deauth", + "offset": [ + 1905, + 1926 + ], + "op": "SSTORE", + "path": "104" + }, + "1656": { + "fn": "HyperAccountPermissionedMinter.deauth", + "jump": "o", + "offset": [ + 1733, + 1933 + ], + "op": "JUMP", + "path": "104" + }, + "1657": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1658": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 740, + 746 + ], + "op": "PUSH0", + "path": "110" + }, + "1659": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 765, + 791 + ], + "op": "PUSH0", + "path": "110" + }, + "1660": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 793, + 813 + ], + "op": "PUSH0", + "path": "110" + }, + "1661": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 824 + ], + "op": "PUSH2", + "path": "110", + "value": "0x684" + }, + "1664": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 822 + ], + "op": "PUSH2", + "path": "110", + "value": "0xEBF" + }, + "1667": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "i", + "offset": [ + 817, + 824 + ], + "op": "JUMP", + "path": "110" + }, + "1668": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 817, + 824 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1669": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP1", + "path": "110" + }, + "1670": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP4", + "path": "110" + }, + "1671": { + "op": "POP" + }, + "1672": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 762, + 824 + ], + "op": "SWAP2", + "path": "110" + }, + "1673": { + "op": "POP" + }, + "1674": { + "op": "POP" + }, + "1675": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 849 + ], + "op": "CALLER", + "path": "110", + "statement": 5 + }, + "1676": { + "op": "PUSH1", + "value": "0x1" + }, + "1678": { + "op": "PUSH1", + "value": "0x1" + }, + "1680": { + "op": "PUSH1", + "value": "0xA0" + }, + "1682": { + "op": "SHL" + }, + "1683": { + "op": "SUB" + }, + "1684": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "DUP4", + "path": "110" + }, + "1685": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "AND", + "path": "110" + }, + "1686": { + "branch": 78, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 871 + ], + "op": "EQ", + "path": "110" + }, + "1687": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "DUP1", + "path": "110" + }, + "1688": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "ISZERO", + "path": "110" + }, + "1689": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "PUSH2", + "path": "110", + "value": "0x6A1" + }, + "1692": { + "branch": 78, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "JUMPI", + "path": "110" + }, + "1693": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "POP", + "path": "110" + }, + "1694": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 894, + 906 + ], + "op": "DUP1", + "path": "110" + }, + "1695": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 875, + 890 + ], + "op": "DUP7", + "path": "110" + }, + "1696": { + "branch": 79, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 875, + 906 + ], + "op": "EQ", + "path": "110" + }, + "1697": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 839, + 906 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1698": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "ISZERO", + "path": "110" + }, + "1699": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "PUSH2", + "path": "110", + "value": "0x6BF" + }, + "1702": { + "branch": 79, + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "JUMPI", + "path": "110" + }, + "1703": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "1705": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MLOAD", + "path": "110" + }, + "1706": { + "op": "PUSH4", + "value": "0xB79E3F3F" + }, + "1711": { + "op": "PUSH1", + "value": "0xE0" + }, + "1713": { + "op": "SHL" + }, + "1714": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "DUP2", + "path": "110" + }, + "1715": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MSTORE", + "path": "110" + }, + "1716": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "1718": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "ADD", + "path": "110" + }, + "1719": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "1721": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "MLOAD", + "path": "110" + }, + "1722": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "DUP1", + "path": "110" + }, + "1723": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SWAP2", + "path": "110" + }, + "1724": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SUB", + "path": "110" + }, + "1725": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "SWAP1", + "path": "110" + }, + "1726": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 929, + 945 + ], + "op": "REVERT", + "path": "110" + }, + "1727": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 835, + 956 + ], + "op": "JUMPDEST", + "path": "110" + }, + "1728": { + "op": "POP" + }, + "1729": { + "op": "PUSH4", + "value": "0xA85BD01" + }, + "1734": { + "op": "PUSH1", + "value": "0xE1" + }, + "1736": { + "op": "SHL" + }, + "1737": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 973, + 1003 + ], + "op": "SWAP8", + "path": "110", + "statement": 6 + }, + "1738": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "offset": [ + 591, + 1010 + ], + "op": "SWAP7", + "path": "110" + }, + "1739": { + "op": "POP" + }, + "1740": { + "op": "POP" + }, + "1741": { + "op": "POP" + }, + "1742": { + "op": "POP" + }, + "1743": { + "op": "POP" + }, + "1744": { + "op": "POP" + }, + "1745": { + "op": "POP" + }, + "1746": { + "fn": "ERC721TokenBoundMech.onERC721Received", + "jump": "o", + "offset": [ + 591, + 1010 + ], + "op": "JUMP", + "path": "110" + }, + "1747": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1748": { + "fn": "Mech.isValidSignature", + "offset": [ + 2360, + 2377 + ], + "op": "PUSH0", + "path": "111" + }, + "1749": { + "fn": "Mech.isValidSignature", + "offset": [ + 2393, + 2402 + ], + "op": "PUSH0", + "path": "111" + }, + "1750": { + "fn": "Mech.isValidSignature", + "offset": [ + 2412, + 2421 + ], + "op": "PUSH0", + "path": "111" + }, + "1751": { + "fn": "Mech.isValidSignature", + "offset": [ + 2431, + 2438 + ], + "op": "PUSH0", + "path": "111" + }, + "1752": { + "fn": "Mech.isValidSignature", + "offset": [ + 2460, + 2486 + ], + "op": "PUSH2", + "path": "111", + "statement": 7, + "value": "0x6F3" + }, + "1755": { + "fn": "Mech.isValidSignature", + "offset": [ + 2476, + 2485 + ], + "op": "DUP6", + "path": "111" + }, + "1756": { + "fn": "Mech._splitSignature", + "offset": [ + 6792, + 6796 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1758": { + "fn": "Mech._splitSignature", + "offset": [ + 6777, + 6797 + ], + "op": "DUP2", + "path": "111" + }, + "1759": { + "fn": "Mech._splitSignature", + "offset": [ + 6777, + 6797 + ], + "op": "ADD", + "path": "111" + }, + "1760": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "MLOAD", + "path": "111" + }, + "1761": { + "fn": "Mech._splitSignature", + "offset": [ + 6837, + 6841 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1763": { + "fn": "Mech._splitSignature", + "offset": [ + 6822, + 6842 + ], + "op": "DUP3", + "path": "111" + }, + "1764": { + "fn": "Mech._splitSignature", + "offset": [ + 6822, + 6842 + ], + "op": "ADD", + "path": "111" + }, + "1765": { + "fn": "Mech._splitSignature", + "offset": [ + 6816, + 6843 + ], + "op": "MLOAD", + "path": "111" + }, + "1766": { + "fn": "Mech._splitSignature", + "offset": [ + 6890, + 6894 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "1768": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "SWAP1", + "path": "111" + }, + "1769": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "SWAP3", + "path": "111" + }, + "1770": { + "fn": "Mech._splitSignature", + "offset": [ + 6875, + 6895 + ], + "op": "ADD", + "path": "111" + }, + "1771": { + "fn": "Mech._splitSignature", + "offset": [ + 6869, + 6896 + ], + "op": "MLOAD", + "path": "111" + }, + "1772": { + "fn": "Mech._splitSignature", + "offset": [ + 6472, + 6479 + ], + "op": "PUSH0", + "path": "111" + }, + "1773": { + "fn": "Mech._splitSignature", + "offset": [ + 6861, + 6897 + ], + "op": "BYTE", + "path": "111" + }, + "1774": { + "fn": "Mech._splitSignature", + "offset": [ + 6861, + 6897 + ], + "op": "SWAP3", + "path": "111" + }, + "1775": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "SWAP1", + "path": "111" + }, + "1776": { + "fn": "Mech._splitSignature", + "offset": [ + 6771, + 6798 + ], + "op": "SWAP2", + "path": "111" + }, + "1777": { + "fn": "Mech._splitSignature", + "offset": [ + 6816, + 6843 + ], + "op": "SWAP1", + "path": "111" + }, + "1778": { + "fn": "Mech._splitSignature", + "offset": [ + 6400, + 6913 + ], + "op": "JUMP", + "path": "111" + }, + "1779": { + "fn": "Mech.isValidSignature", + "offset": [ + 2460, + 2486 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1780": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP1", + "path": "111" + }, + "1781": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP5", + "path": "111" + }, + "1782": { + "op": "POP" + }, + "1783": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP3", + "path": "111" + }, + "1784": { + "op": "POP" + }, + "1785": { + "fn": "Mech.isValidSignature", + "offset": [ + 2448, + 2486 + ], + "op": "SWAP1", + "path": "111" + }, + "1786": { + "op": "POP" + }, + "1787": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "1789": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "DUP2", + "path": "111" + }, + "1790": { + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "AND", + "path": "111" + }, + "1791": { + "fn": "Mech.isValidSignature", + "offset": [ + 2506, + 2507 + ], + "op": "PUSH0", + "path": "111" + }, + "1792": { + "branch": 87, + "fn": "Mech.isValidSignature", + "offset": [ + 2501, + 2507 + ], + "op": "SUB", + "path": "111" + }, + "1793": { + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7BE" + }, + "1796": { + "branch": 87, + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "JUMPI", + "path": "111" + }, + "1797": { + "fn": "Mech.isValidSignature", + "offset": [ + 2688, + 2689 + ], + "op": "DUP3", + "path": "111" + }, + "1798": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "DUP6", + "path": "111" + }, + "1799": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "DUP4", + "path": "111" + }, + "1800": { + "fn": "Mech.isValidSignature", + "offset": [ + 3011, + 3028 + ], + "op": "ADD", + "path": "111" + }, + "1801": { + "fn": "Mech.isValidSignature", + "offset": [ + 3030, + 3034 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1803": { + "fn": "Mech.isValidSignature", + "offset": [ + 3007, + 3035 + ], + "op": "ADD", + "path": "111" + }, + "1804": { + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3227 + ], + "op": "PUSH2", + "path": "111", + "value": "0x714" + }, + "1807": { + "fn": "Mech.isValidSignature", + "offset": [ + 2688, + 2689 + ], + "op": "DUP3", + "path": "111" + }, + "1808": { + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3210 + ], + "op": "PUSH2", + "path": "111", + "value": "0x9A5" + }, + "1811": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3200, + 3227 + ], + "op": "JUMP", + "path": "111" + }, + "1812": { + "branch": 88, + "fn": "Mech.isValidSignature", + "offset": [ + 3200, + 3227 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1813": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3227 + ], + "op": "ISZERO", + "path": "111" + }, + "1814": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "DUP1", + "path": "111" + }, + "1815": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "ISZERO", + "path": "111" + }, + "1816": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "PUSH2", + "path": "111", + "value": "0x72A" + }, + "1819": { + "branch": 88, + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "JUMPI", + "path": "111" + }, + "1820": { + "op": "POP" + }, + "1821": { + "op": "PUSH1", + "value": "0x1" + }, + "1823": { + "op": "PUSH1", + "value": "0x1" + }, + "1825": { + "op": "PUSH1", + "value": "0xA0" + }, + "1827": { + "op": "SHL" + }, + "1828": { + "op": "SUB" + }, + "1829": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "DUP3", + "path": "111" + }, + "1830": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "AND", + "path": "111" + }, + "1831": { + "fn": "Mech.isValidSignature", + "offset": [ + 3258, + 3262 + ], + "op": "ADDRESS", + "path": "111" + }, + "1832": { + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "EQ", + "path": "111" + }, + "1833": { + "branch": 89, + "fn": "Mech.isValidSignature", + "offset": [ + 3231, + 3263 + ], + "op": "ISZERO", + "path": "111" + }, + "1834": { + "fn": "Mech.isValidSignature", + "offset": [ + 3199, + 3263 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1835": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "ISZERO", + "path": "111" + }, + "1836": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "PUSH2", + "path": "111", + "value": "0x745" + }, + "1839": { + "branch": 89, + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "JUMPI", + "path": "111" + }, + "1840": { + "op": "POP" + }, + "1841": { + "op": "PUSH1", + "value": "0x1" + }, + "1843": { + "op": "PUSH1", + "value": "0x1" + }, + "1845": { + "op": "PUSH1", + "value": "0xE0" + }, + "1847": { + "op": "SHL" + }, + "1848": { + "op": "SUB" + }, + "1849": { + "op": "NOT" + }, + "1850": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "SWAP5", + "path": "111", + "statement": 8 + }, + "1851": { + "op": "POP" + }, + "1852": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "PUSH2", + "path": "111", + "value": "0x5EC" + }, + "1855": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "SWAP4", + "path": "111" + }, + "1856": { + "op": "POP" + }, + "1857": { + "op": "POP" + }, + "1858": { + "op": "POP" + }, + "1859": { + "op": "POP" + }, + "1860": { + "fn": "Mech.isValidSignature", + "offset": [ + 3283, + 3300 + ], + "op": "JUMP", + "path": "111" + }, + "1861": { + "fn": "Mech.isValidSignature", + "offset": [ + 3195, + 3315 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1862": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "statement": 9, + "value": "0x40" + }, + "1864": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1865": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "1870": { + "op": "PUSH1", + "value": "0xE1" + }, + "1872": { + "op": "SHL" + }, + "1873": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1874": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MSTORE", + "path": "111" + }, + "1875": { + "op": "PUSH1", + "value": "0x1" + }, + "1877": { + "op": "PUSH1", + "value": "0x1" + }, + "1879": { + "op": "PUSH1", + "value": "0xA0" + }, + "1881": { + "op": "SHL" + }, + "1882": { + "op": "SUB" + }, + "1883": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "DUP4", + "path": "111" + }, + "1884": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "AND", + "path": "111" + }, + "1885": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "SWAP1", + "path": "111" + }, + "1886": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "PUSH4", + "path": "111", + "value": "0x1626BA7E" + }, + "1891": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3378 + ], + "op": "SWAP1", + "path": "111" + }, + "1892": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x773" + }, + "1895": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1896": { + "fn": "Mech.isValidSignature", + "offset": [ + 3379, + 3383 + ], + "op": "DUP12", + "path": "111" + }, + "1897": { + "fn": "Mech.isValidSignature", + "offset": [ + 3379, + 3383 + ], + "op": "SWAP1", + "path": "111" + }, + "1898": { + "fn": "Mech.isValidSignature", + "offset": [ + 3385, + 3402 + ], + "op": "DUP6", + "path": "111" + }, + "1899": { + "fn": "Mech.isValidSignature", + "offset": [ + 3385, + 3402 + ], + "op": "SWAP1", + "path": "111" + }, + "1900": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "1902": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1903": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x2516" + }, + "1906": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3336, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "1907": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1908": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "1910": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1912": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1913": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1914": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP4", + "path": "111" + }, + "1915": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SUB", + "path": "111" + }, + "1916": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1917": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP7", + "path": "111" + }, + "1918": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "GAS", + "path": "111" + }, + "1919": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "STATICCALL", + "path": "111" + }, + "1920": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ISZERO", + "path": "111" + }, + "1921": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1922": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ISZERO", + "path": "111" + }, + "1923": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x78E" + }, + "1926": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPI", + "path": "111" + }, + "1927": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1928": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1929": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1930": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "1931": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1932": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH0", + "path": "111" + }, + "1933": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "REVERT", + "path": "111" + }, + "1934": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1935": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1936": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1937": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1938": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1939": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1941": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MLOAD", + "path": "111" + }, + "1942": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "1943": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "1945": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "NOT", + "path": "111" + }, + "1946": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "1948": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP3", + "path": "111" + }, + "1949": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1950": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "AND", + "path": "111" + }, + "1951": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP3", + "path": "111" + }, + "1952": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1953": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP1", + "path": "111" + }, + "1954": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "1956": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "MSTORE", + "path": "111" + }, + "1957": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1958": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "DUP2", + "path": "111" + }, + "1959": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "ADD", + "path": "111" + }, + "1960": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1961": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7B2" + }, + "1964": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP2", + "path": "111" + }, + "1965": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "SWAP1", + "path": "111" + }, + "1966": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x252E" + }, + "1969": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3336, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "1970": { + "fn": "Mech.isValidSignature", + "offset": [ + 3336, + 3403 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1971": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "SWAP6", + "path": "111" + }, + "1972": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1973": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1974": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1975": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1976": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1977": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "POP", + "path": "111" + }, + "1978": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "PUSH2", + "path": "111", + "value": "0x5EC" + }, + "1981": { + "fn": "Mech.isValidSignature", + "offset": [ + 3329, + 3403 + ], + "op": "JUMP", + "path": "111" + }, + "1982": { + "fn": "Mech.isValidSignature", + "offset": [ + 2497, + 3590 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1983": { + "fn": "Mech.isValidSignature", + "offset": [ + 3480, + 3520 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7CD" + }, + "1986": { + "fn": "Mech.isValidSignature", + "offset": [ + 3491, + 3519 + ], + "op": "PUSH2", + "path": "111", + "value": "0x3CE" + }, + "1989": { + "fn": "Mech.isValidSignature", + "offset": [ + 3505, + 3509 + ], + "op": "DUP8", + "path": "111" + }, + "1990": { + "fn": "Mech.isValidSignature", + "offset": [ + 3511, + 3512 + ], + "op": "DUP4", + "path": "111" + }, + "1991": { + "fn": "Mech.isValidSignature", + "offset": [ + 3514, + 3515 + ], + "op": "DUP7", + "path": "111" + }, + "1992": { + "fn": "Mech.isValidSignature", + "offset": [ + 3517, + 3518 + ], + "op": "DUP7", + "path": "111" + }, + "1993": { + "fn": "Mech.isValidSignature", + "offset": [ + 3491, + 3504 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1005" + }, + "1996": { + "fn": "Mech.isValidSignature", + "jump": "i", + "offset": [ + 3491, + 3519 + ], + "op": "JUMP", + "path": "111" + }, + "1997": { + "branch": 90, + "fn": "Mech.isValidSignature", + "offset": [ + 3480, + 3520 + ], + "op": "JUMPDEST", + "path": "111" + }, + "1998": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "ISZERO", + "path": "111" + }, + "1999": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "PUSH2", + "path": "111", + "value": "0x7E5" + }, + "2002": { + "branch": 90, + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "JUMPI", + "path": "111" + }, + "2003": { + "op": "POP" + }, + "2004": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "2009": { + "op": "PUSH1", + "value": "0xE1" + }, + "2011": { + "op": "SHL" + }, + "2012": { + "fn": "Mech.isValidSignature", + "offset": [ + 3547, + 3565 + ], + "op": "SWAP3", + "path": "111", + "statement": 10 + }, + "2013": { + "op": "POP" + }, + "2014": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "PUSH2", + "path": "111", + "value": "0x5EC" + }, + "2017": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "SWAP2", + "path": "111" + }, + "2018": { + "op": "POP" + }, + "2019": { + "op": "POP" + }, + "2020": { + "fn": "Mech.isValidSignature", + "offset": [ + 3540, + 3565 + ], + "op": "JUMP", + "path": "111" + }, + "2021": { + "fn": "Mech.isValidSignature", + "offset": [ + 3476, + 3580 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2022": { + "op": "POP" + }, + "2023": { + "op": "PUSH1", + "value": "0x1" + }, + "2025": { + "op": "PUSH1", + "value": "0x1" + }, + "2027": { + "op": "PUSH1", + "value": "0xE0" + }, + "2029": { + "op": "SHL" + }, + "2030": { + "op": "SUB" + }, + "2031": { + "op": "NOT" + }, + "2032": { + "fn": "Mech.isValidSignature", + "offset": [ + 3600, + 3617 + ], + "op": "SWAP6", + "path": "111", + "statement": 11 + }, + "2033": { + "fn": "Mech.isValidSignature", + "offset": [ + 2199, + 3624 + ], + "op": "SWAP5", + "path": "111" + }, + "2034": { + "op": "POP" + }, + "2035": { + "op": "POP" + }, + "2036": { + "op": "POP" + }, + "2037": { + "op": "POP" + }, + "2038": { + "op": "POP" + }, + "2039": { + "fn": "Mech.isValidSignature", + "jump": "o", + "offset": [ + 2199, + 3624 + ], + "op": "JUMP", + "path": "111" + }, + "2040": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2041": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2662, + 2684 + ], + "op": "PUSH0", + "path": "85" + }, + "2042": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2720 + ], + "op": "PUSH2", + "path": "85", + "statement": 12, + "value": "0x801" + }, + "2045": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2718 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1031" + }, + "2048": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2696, + 2720 + ], + "op": "JUMP", + "path": "85" + }, + "2049": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2696, + 2720 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2050": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2785 + ], + "op": "PUSH2", + "path": "85", + "statement": 13, + "value": "0x80B" + }, + "2053": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2766, + 2772 + ], + "op": "DUP5", + "path": "85" + }, + "2054": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2774, + 2784 + ], + "op": "DUP5", + "path": "85" + }, + "2055": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2765 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1096" + }, + "2058": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2747, + 2785 + ], + "op": "JUMP", + "path": "85" + }, + "2059": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2747, + 2785 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2060": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2730, + 2785 + ], + "op": "SWAP1", + "path": "85" + }, + "2061": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2730, + 2785 + ], + "op": "POP", + "path": "85" + }, + "2062": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2823 + ], + "op": "PUSH2", + "path": "85", + "statement": 14, + "value": "0x81A" + }, + "2065": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2816 + ], + "op": "DUP5", + "path": "85" + }, + "2066": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2068": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "ADD", + "path": "85" + }, + "2069": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2810, + 2822 + ], + "op": "CALLDATALOAD", + "path": "85" + }, + "2070": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2809 + ], + "op": "PUSH2", + "path": "85", + "value": "0x10F3" + }, + "2073": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2795, + 2823 + ], + "op": "JUMP", + "path": "85" + }, + "2074": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2795, + 2823 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2075": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2865 + ], + "op": "PUSH2", + "path": "85", + "statement": 15, + "value": "0x823" + }, + "2078": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2845, + 2864 + ], + "op": "DUP3", + "path": "85" + }, + "2079": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2844 + ], + "op": "PUSH2", + "path": "85", + "value": "0x113C" + }, + "2082": { + "fn": "BaseAccount.validateUserOp", + "jump": "i", + "offset": [ + 2833, + 2865 + ], + "op": "JUMP", + "path": "85" + }, + "2083": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2833, + 2865 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2084": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "SWAP4", + "path": "85" + }, + "2085": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "SWAP3", + "path": "85" + }, + "2086": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "2087": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "2088": { + "fn": "BaseAccount.validateUserOp", + "offset": [ + 2487, + 2872 + ], + "op": "POP", + "path": "85" + }, + "2089": { + "fn": "BaseAccount.validateUserOp", + "jump": "o", + "offset": [ + 2487, + 2872 + ], + "op": "JUMP", + "path": "85" + }, + "2090": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2091": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1979 + ], + "op": "PUSH2", + "path": "85", + "statement": 16, + "value": "0x832" + }, + "2094": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1977 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1181" + }, + "2097": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 1959, + 1979 + ], + "op": "JUMP", + "path": "85" + }, + "2098": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1959, + 1979 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2099": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2012, + 2017 + ], + "op": "DUP1", + "path": "85" + }, + "2100": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1990, + 2009 + ], + "op": "PUSH0", + "path": "85" + }, + "2101": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2102": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2058, + 2069 + ], + "op": "DUP2", + "path": "85" + }, + "2103": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2054, + 2055 + ], + "op": "DUP2", + "path": "85" + }, + "2104": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2054, + 2069 + ], + "op": "LT", + "path": "85" + }, + "2105": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "ISZERO", + "path": "85" + }, + "2106": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "PUSH2", + "path": "85", + "value": "0x914" + }, + "2109": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPI", + "path": "85" + }, + "2110": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2108 + ], + "op": "CALLDATASIZE", + "path": "85" + }, + "2111": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2116 + ], + "op": "DUP5", + "path": "85" + }, + "2112": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2116 + ], + "op": "DUP5", + "path": "85" + }, + "2113": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2117, + 2118 + ], + "op": "DUP4", + "path": "85" + }, + "2114": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "2115": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "2116": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "LT", + "path": "85" + }, + "2117": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x850" + }, + "2120": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPI", + "path": "85" + }, + "2121": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x850" + }, + "2124": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2549" + }, + "2127": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2111, + 2119 + ], + "op": "JUMP", + "path": "85" + }, + "2128": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2129": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "2130": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "POP", + "path": "85" + }, + "2131": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2133": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "MUL", + "path": "85" + }, + "2134": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "DUP2", + "path": "85" + }, + "2135": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "ADD", + "path": "85" + }, + "2136": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "2137": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x862" + }, + "2140": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP2", + "path": "85" + }, + "2141": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "2142": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "PUSH2", + "path": "85", + "value": "0x255D" + }, + "2145": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2111, + 2119 + ], + "op": "JUMP", + "path": "85" + }, + "2146": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2111, + 2119 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2147": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2119 + ], + "op": "SWAP1", + "path": "85" + }, + "2148": { + "op": "POP" + }, + "2149": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2140 + ], + "op": "PUSH0", + "path": "85" + }, + "2150": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH2", + "path": "85", + "value": "0x8C0" + }, + "2153": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH2", + "path": "85", + "value": "0x875" + }, + "2156": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2158": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "DUP5", + "path": "85" + }, + "2159": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "ADD", + "path": "85" + }, + "2160": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2090, + 2119 + ], + "op": "DUP5", + "path": "85" + }, + "2161": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1EFA" + }, + "2164": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2153, + 2164 + ], + "op": "JUMP", + "path": "85" + }, + "2165": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2153, + 2164 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2166": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2168": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "DUP5", + "path": "85" + }, + "2169": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "ADD", + "path": "85" + }, + "2170": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2176 + ], + "op": "CALLDATALOAD", + "path": "85" + }, + "2171": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH2", + "path": "85", + "value": "0x887" + }, + "2174": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2176": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "DUP7", + "path": "85" + }, + "2177": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "ADD", + "path": "85" + }, + "2178": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2166, + 2170 + ], + "op": "DUP7", + "path": "85" + }, + "2179": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "PUSH2", + "path": "85", + "value": "0x257B" + }, + "2182": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2178, + 2187 + ], + "op": "JUMP", + "path": "85" + }, + "2183": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2178, + 2187 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2184": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2185": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2186": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "2188": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2189": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2191": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2192": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "2193": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DIV", + "path": "85" + }, + "2194": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MUL", + "path": "85" + }, + "2195": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2197": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2198": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2200": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MLOAD", + "path": "85" + }, + "2201": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "2202": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "2203": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2204": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2206": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "2207": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2208": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP4", + "path": "85" + }, + "2209": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP3", + "path": "85" + }, + "2210": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "2211": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "2212": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "2213": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP2", + "path": "85" + }, + "2214": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "2215": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "2217": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2218": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP4", + "path": "85" + }, + "2219": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP4", + "path": "85" + }, + "2220": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP1", + "path": "85" + }, + "2221": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP3", + "path": "85" + }, + "2222": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "DUP5", + "path": "85" + }, + "2223": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "CALLDATACOPY", + "path": "85" + }, + "2224": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "PUSH0", + "path": "85" + }, + "2225": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP3", + "path": "85" + }, + "2226": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "ADD", + "path": "85" + }, + "2227": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "2228": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "2229": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "SWAP2", + "path": "85" + }, + "2230": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "MSTORE", + "path": "85" + }, + "2231": { + "op": "POP" + }, + "2232": { + "op": "POP" + }, + "2233": { + "op": "POP" + }, + "2234": { + "op": "POP" + }, + "2235": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2189, + 2198 + ], + "op": "GAS", + "path": "85" + }, + "2236": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2152 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1189" + }, + "2239": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2143, + 2199 + ], + "op": "JUMP", + "path": "85" + }, + "2240": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2143, + 2199 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2241": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2199 + ], + "op": "SWAP1", + "path": "85" + }, + "2242": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2133, + 2199 + ], + "op": "POP", + "path": "85" + }, + "2243": { + "branch": 71, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2218, + 2220 + ], + "op": "DUP1", + "path": "85" + }, + "2244": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2213, + 2436 + ], + "op": "PUSH2", + "path": "85", + "value": "0x90A" + }, + "2247": { + "branch": 71, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2213, + 2436 + ], + "op": "JUMPI", + "path": "85" + }, + "2248": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2244, + 2255 + ], + "op": "DUP4", + "path": "85" + }, + "2249": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2259, + 2260 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1" + }, + "2251": { + "branch": 72, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2244, + 2260 + ], + "op": "SUB", + "path": "85" + }, + "2252": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "PUSH2", + "path": "85", + "value": "0x8DC" + }, + "2255": { + "branch": 72, + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPI", + "path": "85" + }, + "2256": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2311 + ], + "op": "PUSH2", + "path": "85", + "statement": 17, + "value": "0x8D7" + }, + "2259": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2309 + ], + "op": "PUSH2", + "path": "85", + "value": "0x119F" + }, + "2262": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2284, + 2311 + ], + "op": "JUMP", + "path": "85" + }, + "2263": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2284, + 2311 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2264": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "PUSH2", + "path": "85", + "value": "0x90A" + }, + "2267": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMP", + "path": "85" + }, + "2268": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2269": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2378, + 2379 + ], + "op": "DUP3", + "path": "85" + }, + "2270": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2402 + ], + "op": "PUSH2", + "path": "85", + "value": "0x8E6" + }, + "2273": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2400, + 2401 + ], + "op": "PUSH0", + "path": "85" + }, + "2274": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2399 + ], + "op": "PUSH2", + "path": "85", + "value": "0x11B0" + }, + "2277": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2381, + 2402 + ], + "op": "JUMP", + "path": "85" + }, + "2278": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2381, + 2402 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2279": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2281": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MLOAD", + "path": "85" + }, + "2282": { + "op": "PUSH4", + "value": "0x5A154675" + }, + "2287": { + "op": "PUSH1", + "value": "0xE0" + }, + "2289": { + "op": "SHL" + }, + "2290": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "DUP2", + "path": "85" + }, + "2291": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MSTORE", + "path": "85" + }, + "2292": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "2294": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "ADD", + "path": "85" + }, + "2295": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH2", + "path": "85", + "value": "0x901" + }, + "2298": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP3", + "path": "85" + }, + "2299": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP2", + "path": "85" + }, + "2300": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP1", + "path": "85" + }, + "2301": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH2", + "path": "85", + "value": "0x2516" + }, + "2304": { + "fn": "BaseAccount.executeBatch", + "jump": "i", + "offset": [ + 2365, + 2403 + ], + "op": "JUMP", + "path": "85" + }, + "2305": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2306": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "2308": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "MLOAD", + "path": "85" + }, + "2309": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "DUP1", + "path": "85" + }, + "2310": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP2", + "path": "85" + }, + "2311": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SUB", + "path": "85" + }, + "2312": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "SWAP1", + "path": "85" + }, + "2313": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2365, + 2403 + ], + "op": "REVERT", + "path": "85" + }, + "2314": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2240, + 2422 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2315": { + "op": "POP" + }, + "2316": { + "op": "POP" + }, + "2317": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2071, + 2074 + ], + "op": "PUSH1", + "path": "85", + "statement": 18, + "value": "0x1" + }, + "2319": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2071, + 2074 + ], + "op": "ADD", + "path": "85" + }, + "2320": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "PUSH2", + "path": "85", + "value": "0x835" + }, + "2323": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMP", + "path": "85" + }, + "2324": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "JUMPDEST", + "path": "85" + }, + "2325": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 2034, + 2446 + ], + "op": "POP", + "path": "85" + }, + "2326": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1949, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2327": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2328": { + "fn": "BaseAccount.executeBatch", + "offset": [ + 1887, + 2452 + ], + "op": "POP", + "path": "85" + }, + "2329": { + "fn": "BaseAccount.executeBatch", + "jump": "o", + "offset": [ + 1887, + 2452 + ], + "op": "JUMP", + "path": "85" + }, + "2330": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2331": { + "offset": [ + 2655, + 2668 + ], + "op": "PUSH2", + "path": "68", + "value": "0x922" + }, + "2334": { + "offset": [ + 2655, + 2666 + ], + "op": "PUSH2", + "path": "68", + "value": "0x11E1" + }, + "2337": { + "jump": "i", + "offset": [ + 2655, + 2668 + ], + "op": "JUMP", + "path": "68" + }, + "2338": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 2655, + 2668 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2339": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4312 + ], + "op": "PUSH2", + "path": "68", + "statement": 19, + "value": "0x92B" + }, + "2342": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4294, + 4311 + ], + "op": "DUP3", + "path": "68" + }, + "2343": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4293 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1285" + }, + "2346": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4276, + 4312 + ], + "op": "JUMP", + "path": "68" + }, + "2347": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4276, + 4312 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2348": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4368 + ], + "op": "PUSH2", + "path": "68", + "statement": 20, + "value": "0x935" + }, + "2351": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4344, + 4361 + ], + "op": "DUP3", + "path": "68" + }, + "2352": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4363, + 4367 + ], + "op": "DUP3", + "path": "68" + }, + "2353": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4343 + ], + "op": "PUSH2", + "path": "68", + "value": "0x12CD" + }, + "2356": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "i", + "offset": [ + 4322, + 4368 + ], + "op": "JUMP", + "path": "68" + }, + "2357": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4322, + 4368 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2358": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "POP", + "path": "68" + }, + "2359": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "offset": [ + 4161, + 4375 + ], + "op": "POP", + "path": "68" + }, + "2360": { + "fn": "UUPSUpgradeable.upgradeToAndCall", + "jump": "o", + "offset": [ + 4161, + 4375 + ], + "op": "JUMP", + "path": "68" + }, + "2361": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2362": { + "fn": "Mech.execute", + "offset": [ + 5911, + 5934 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "2364": { + "fn": "Mech.execute", + "offset": [ + 5950, + 5962 + ], + "op": "PUSH0", + "path": "111" + }, + "2365": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6040 + ], + "op": "PUSH2", + "path": "111", + "statement": 21, + "value": "0x94A" + }, + "2368": { + "fn": "Mech.execute", + "offset": [ + 6002, + 6004 + ], + "op": "DUP8", + "path": "111" + }, + "2369": { + "fn": "Mech.execute", + "offset": [ + 6006, + 6011 + ], + "op": "DUP8", + "path": "111" + }, + "2370": { + "fn": "Mech.execute", + "offset": [ + 6013, + 6017 + ], + "op": "DUP8", + "path": "111" + }, + "2371": { + "fn": "Mech.execute", + "offset": [ + 6013, + 6017 + ], + "op": "DUP8", + "path": "111" + }, + "2372": { + "fn": "Mech.execute", + "offset": [ + 6019, + 6028 + ], + "op": "DUP8", + "path": "111" + }, + "2373": { + "fn": "Mech.execute", + "offset": [ + 6030, + 6039 + ], + "op": "GAS", + "path": "111" + }, + "2374": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6001 + ], + "op": "PUSH2", + "path": "111", + "value": "0x138E" + }, + "2377": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5996, + 6040 + ], + "op": "JUMP", + "path": "111" + }, + "2378": { + "fn": "Mech.execute", + "offset": [ + 5996, + 6040 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2379": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "SWAP3", + "path": "111" + }, + "2380": { + "op": "POP" + }, + "2381": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "SWAP1", + "path": "111" + }, + "2382": { + "op": "POP" + }, + "2383": { + "fn": "Mech.execute", + "offset": [ + 5972, + 6040 + ], + "op": "DUP1", + "path": "111" + }, + "2384": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "PUSH2", + "path": "111", + "statement": 22, + "value": "0x95B" + }, + "2387": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "JUMPI", + "path": "111" + }, + "2388": { + "fn": "Mech.execute", + "offset": [ + 6218, + 6228 + ], + "op": "DUP2", + "path": "111" + }, + "2389": { + "fn": "Mech.execute", + "offset": [ + 6212, + 6229 + ], + "op": "MLOAD", + "path": "111" + }, + "2390": { + "fn": "Mech.execute", + "offset": [ + 6205, + 6209 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "2392": { + "fn": "Mech.execute", + "offset": [ + 6193, + 6203 + ], + "op": "DUP4", + "path": "111" + }, + "2393": { + "fn": "Mech.execute", + "offset": [ + 6189, + 6210 + ], + "op": "ADD", + "path": "111" + }, + "2394": { + "fn": "Mech.execute", + "offset": [ + 6182, + 6230 + ], + "op": "REVERT", + "path": "111" + }, + "2395": { + "fn": "Mech.execute", + "offset": [ + 6051, + 6254 + ], + "op": "JUMPDEST", + "path": "111" + }, + "2396": { + "fn": "Mech.execute", + "offset": [ + 5940, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2397": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP6", + "path": "111" + }, + "2398": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "SWAP5", + "path": "111" + }, + "2399": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2400": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2401": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2402": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2403": { + "fn": "Mech.execute", + "offset": [ + 5779, + 6260 + ], + "op": "POP", + "path": "111" + }, + "2404": { + "fn": "Mech.execute", + "jump": "o", + "offset": [ + 5779, + 6260 + ], + "op": "JUMP", + "path": "111" + }, + "2405": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2406": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3077, + 3094 + ], + "op": "PUSH0", + "path": "113" + }, + "2407": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3131 + ], + "op": "PUSH2", + "path": "113", + "statement": 23, + "value": "0x96F" + }, + "2410": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3124, + 3130 + ], + "op": "DUP5", + "path": "113" + }, + "2411": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3123 + ], + "op": "PUSH2", + "path": "113", + "value": "0x9A5" + }, + "2414": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "i", + "offset": [ + 3113, + 3131 + ], + "op": "JUMP", + "path": "113" + }, + "2415": { + "branch": 96, + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3131 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2416": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "PUSH2", + "path": "113", + "value": "0x979" + }, + "2419": { + "branch": 96, + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPI", + "path": "113" + }, + "2420": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3182, + 3183 + ], + "op": "PUSH0", + "path": "113" + }, + "2421": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "PUSH2", + "path": "113", + "value": "0x982" + }, + "2424": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMP", + "path": "113" + }, + "2425": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2426": { + "op": "PUSH4", + "value": "0x291F193" + }, + "2431": { + "op": "PUSH1", + "value": "0xE5" + }, + "2433": { + "op": "SHL" + }, + "2434": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3113, + 3184 + ], + "op": "JUMPDEST", + "path": "113" + }, + "2435": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 3106, + 3184 + ], + "op": "SWAP5", + "path": "113" + }, + "2436": { + "fn": "TokenBoundMech.isValidSigner", + "offset": [ + 2999, + 3191 + ], + "op": "SWAP4", + "path": "113" + }, + "2437": { + "op": "POP" + }, + "2438": { + "op": "POP" + }, + "2439": { + "op": "POP" + }, + "2440": { + "op": "POP" + }, + "2441": { + "fn": "TokenBoundMech.isValidSigner", + "jump": "o", + "offset": [ + 2999, + 3191 + ], + "op": "JUMP", + "path": "113" + }, + "2442": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2443": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3777, + 3784 + ], + "op": "PUSH0", + "path": "68" + }, + "2444": { + "offset": [ + 2926, + 2946 + ], + "op": "PUSH2", + "path": "68", + "value": "0x993" + }, + "2447": { + "offset": [ + 2926, + 2944 + ], + "op": "PUSH2", + "path": "68", + "value": "0x13E5" + }, + "2450": { + "jump": "i", + "offset": [ + 2926, + 2946 + ], + "op": "JUMP", + "path": "68" + }, + "2451": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 2926, + 2946 + ], + "op": "JUMPDEST", + "path": "68" + }, + "2452": { + "op": "POP" + }, + "2453": { + "op": "PUSH0" + }, + "2454": { + "op": "MLOAD" + }, + "2455": { + "op": "PUSH1", + "value": "0x20" + }, + "2457": { + "op": "PUSH2", + "value": "0x2871" + }, + "2460": { + "op": "PUSH0" + }, + "2461": { + "op": "CODECOPY" + }, + "2462": { + "op": "PUSH0" + }, + "2463": { + "op": "MLOAD" + }, + "2464": { + "op": "SWAP1" + }, + "2465": { + "op": "PUSH0" + }, + "2466": { + "op": "MSTORE" + }, + "2467": { + "fn": "UUPSUpgradeable.proxiableUUID", + "offset": [ + 3708, + 3842 + ], + "op": "SWAP1", + "path": "68" + }, + "2468": { + "fn": "UUPSUpgradeable.proxiableUUID", + "jump": "o", + "offset": [ + 3708, + 3842 + ], + "op": "JUMP", + "path": "68" + }, + "2469": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 346, + 585 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2470": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 420, + 424 + ], + "op": "PUSH0", + "path": "110" + }, + "2471": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 439, + 460 + ], + "op": "PUSH0", + "path": "110" + }, + "2472": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 462, + 477 + ], + "op": "PUSH0", + "path": "110" + }, + "2473": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 488 + ], + "op": "PUSH2", + "path": "110", + "value": "0x9B0" + }, + "2476": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 486 + ], + "op": "PUSH2", + "path": "110", + "value": "0xEBF" + }, + "2479": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 481, + 488 + ], + "op": "JUMP", + "path": "110" + }, + "2480": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 481, + 488 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2481": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "statement": 24, + "value": "0x40" + }, + "2483": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2484": { + "op": "PUSH4", + "value": "0x31A9108F" + }, + "2489": { + "op": "PUSH1", + "value": "0xE1" + }, + "2491": { + "op": "SHL" + }, + "2492": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2493": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MSTORE", + "path": "110" + }, + "2494": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x4" + }, + "2496": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2497": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2498": { + "op": "DUP3" + }, + "2499": { + "op": "SWAP1" + }, + "2500": { + "op": "MSTORE" + }, + "2501": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP2", + "path": "110" + }, + "2502": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP5", + "path": "110" + }, + "2503": { + "op": "POP" + }, + "2504": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 436, + 488 + ], + "op": "SWAP3", + "path": "110" + }, + "2505": { + "op": "POP" + }, + "2506": { + "op": "PUSH1", + "value": "0x1" + }, + "2508": { + "op": "PUSH1", + "value": "0x1" + }, + "2510": { + "op": "PUSH1", + "value": "0xA0" + }, + "2512": { + "op": "SHL" + }, + "2513": { + "op": "SUB" + }, + "2514": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "DUP1", + "path": "110" + }, + "2515": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "DUP8", + "path": "110" + }, + "2516": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "AND", + "path": "110" + }, + "2517": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "SWAP3", + "path": "110" + }, + "2518": { + "op": "POP" + }, + "2519": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "DUP5", + "path": "110" + }, + "2520": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "AND", + "path": "110" + }, + "2521": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "SWAP1", + "path": "110" + }, + "2522": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "PUSH4", + "path": "110", + "value": "0x6352211E" + }, + "2527": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 535 + ], + "op": "SWAP1", + "path": "110" + }, + "2528": { + "op": "PUSH1", + "value": "0x24" + }, + "2530": { + "op": "ADD" + }, + "2531": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x20" + }, + "2533": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2535": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2536": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2537": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP4", + "path": "110" + }, + "2538": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SUB", + "path": "110" + }, + "2539": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2540": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP7", + "path": "110" + }, + "2541": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "GAS", + "path": "110" + }, + "2542": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "STATICCALL", + "path": "110" + }, + "2543": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ISZERO", + "path": "110" + }, + "2544": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2545": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ISZERO", + "path": "110" + }, + "2546": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0x9FD" + }, + "2549": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPI", + "path": "110" + }, + "2550": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2551": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2552": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2553": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATACOPY", + "path": "110" + }, + "2554": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2555": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH0", + "path": "110" + }, + "2556": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "REVERT", + "path": "110" + }, + "2557": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2558": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2559": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2560": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2561": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2562": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2564": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MLOAD", + "path": "110" + }, + "2565": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "RETURNDATASIZE", + "path": "110" + }, + "2566": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x1F" + }, + "2568": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "NOT", + "path": "110" + }, + "2569": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x1F" + }, + "2571": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP3", + "path": "110" + }, + "2572": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2573": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "AND", + "path": "110" + }, + "2574": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP3", + "path": "110" + }, + "2575": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2576": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP1", + "path": "110" + }, + "2577": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH1", + "path": "110", + "value": "0x40" + }, + "2579": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "MSTORE", + "path": "110" + }, + "2580": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "POP", + "path": "110" + }, + "2581": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "DUP2", + "path": "110" + }, + "2582": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "ADD", + "path": "110" + }, + "2583": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP1", + "path": "110" + }, + "2584": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0xA21" + }, + "2587": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP2", + "path": "110" + }, + "2588": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "SWAP1", + "path": "110" + }, + "2589": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "PUSH2", + "path": "110", + "value": "0x25BD" + }, + "2592": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "i", + "offset": [ + 505, + 544 + ], + "op": "JUMP", + "path": "110" + }, + "2593": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 544 + ], + "op": "JUMPDEST", + "path": "110" + }, + "2594": { + "op": "PUSH1", + "value": "0x1" + }, + "2596": { + "op": "PUSH1", + "value": "0x1" + }, + "2598": { + "op": "PUSH1", + "value": "0xA0" + }, + "2600": { + "op": "SHL" + }, + "2601": { + "op": "SUB" + }, + "2602": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "AND", + "path": "110" + }, + "2603": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 554 + ], + "op": "EQ", + "path": "110" + }, + "2604": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "DUP1", + "path": "110" + }, + "2605": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2606": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "PUSH2", + "path": "110", + "value": "0x982" + }, + "2609": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 505, + 578 + ], + "op": "JUMPI", + "path": "110" + }, + "2610": { + "op": "POP" + }, + "2611": { + "op": "POP" + }, + "2612": { + "op": "POP" + }, + "2613": { + "op": "POP" + }, + "2614": { + "op": "PUSH1", + "value": "0x1" + }, + "2616": { + "op": "PUSH1", + "value": "0x1" + }, + "2618": { + "op": "PUSH1", + "value": "0xA0" + }, + "2620": { + "op": "SHL" + }, + "2621": { + "op": "SUB" + }, + "2622": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "AND", + "path": "110" + }, + "2623": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2624": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "ISZERO", + "path": "110" + }, + "2625": { + "fn": "ERC721TokenBoundMech.isOperator", + "offset": [ + 558, + 578 + ], + "op": "SWAP1", + "path": "110" + }, + "2626": { + "fn": "ERC721TokenBoundMech.isOperator", + "jump": "o", + "offset": [ + 346, + 585 + ], + "op": "JUMP", + "path": "110" + }, + "2627": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1274, + 1418 + ], + "op": "JUMPDEST", + "path": "104" + }, + "2628": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 8870, + 8891 + ], + "op": "PUSH32", + "path": "67", + "value": "0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + "2661": { + "offset": [ + 4302, + 4317 + ], + "op": "DUP1", + "path": "67" + }, + "2662": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "SLOAD", + "path": "67" + }, + "2663": { + "op": "PUSH1", + "value": "0x1" + }, + "2665": { + "op": "PUSH1", + "value": "0x40" + }, + "2667": { + "op": "SHL" + }, + "2668": { + "offset": [ + 4302, + 4317 + ], + "op": "DUP2", + "path": "67" + }, + "2669": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "DIV", + "path": "67" + }, + "2670": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "PUSH1", + "path": "67", + "value": "0xFF" + }, + "2672": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4302, + 4317 + ], + "op": "AND", + "path": "67" + }, + "2673": { + "offset": [ + 4301, + 4317 + ], + "op": "ISZERO", + "path": "67" + }, + "2674": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4301, + 4317 + ], + "op": "SWAP1", + "path": "67" + }, + "2675": { + "op": "PUSH1", + "value": "0x1" + }, + "2677": { + "op": "PUSH1", + "value": "0x1" + }, + "2679": { + "op": "PUSH1", + "value": "0x40" + }, + "2681": { + "op": "SHL" + }, + "2682": { + "op": "SUB" + }, + "2683": { + "offset": [ + 4348, + 4362 + ], + "op": "AND", + "path": "67" + }, + "2684": { + "offset": [ + 4158, + 4188 + ], + "op": "PUSH0", + "path": "67" + }, + "2685": { + "offset": [ + 4726, + 4742 + ], + "op": "DUP2", + "path": "67" + }, + "2686": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4742 + ], + "op": "ISZERO", + "path": "67" + }, + "2687": { + "offset": [ + 4726, + 4760 + ], + "op": "DUP1", + "path": "67" + }, + "2688": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "ISZERO", + "path": "67" + }, + "2689": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "PUSH2", + "path": "67", + "value": "0xA87" + }, + "2692": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "JUMPI", + "path": "67" + }, + "2693": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4726, + 4760 + ], + "op": "POP", + "path": "67" + }, + "2694": { + "offset": [ + 4746, + 4760 + ], + "op": "DUP3", + "path": "67" + }, + "2695": { + "offset": [ + 4726, + 4760 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2696": { + "offset": [ + 4706, + 4760 + ], + "op": "SWAP1", + "path": "67" + }, + "2697": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4706, + 4760 + ], + "op": "POP", + "path": "67" + }, + "2698": { + "offset": [ + 4770, + 4787 + ], + "op": "PUSH0", + "path": "67" + }, + "2699": { + "offset": [ + 4790, + 4801 + ], + "op": "DUP3", + "path": "67" + }, + "2700": { + "op": "PUSH1", + "value": "0x1" + }, + "2702": { + "op": "PUSH1", + "value": "0x1" + }, + "2704": { + "op": "PUSH1", + "value": "0x40" + }, + "2706": { + "op": "SHL" + }, + "2707": { + "op": "SUB" + }, + "2708": { + "offset": [ + 4790, + 4806 + ], + "op": "AND", + "path": "67" + }, + "2709": { + "offset": [ + 4805, + 4806 + ], + "op": "PUSH1", + "path": "67", + "value": "0x1" + }, + "2711": { + "offset": [ + 4790, + 4806 + ], + "op": "EQ", + "path": "67" + }, + "2712": { + "offset": [ + 4790, + 4840 + ], + "op": "DUP1", + "path": "67" + }, + "2713": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "ISZERO", + "path": "67" + }, + "2714": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "PUSH2", + "path": "67", + "value": "0xAA2" + }, + "2717": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4790, + 4840 + ], + "op": "JUMPI", + "path": "67" + }, + "2718": { + "op": "POP" + }, + "2719": { + "offset": [ + 4818, + 4822 + ], + "op": "ADDRESS", + "path": "67" + }, + "2720": { + "offset": [ + 4810, + 4835 + ], + "op": "EXTCODESIZE", + "path": "67" + }, + "2721": { + "offset": [ + 4810, + 4840 + ], + "op": "ISZERO", + "path": "67" + }, + "2722": { + "offset": [ + 4790, + 4840 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2723": { + "offset": [ + 4770, + 4840 + ], + "op": "SWAP1", + "path": "67" + }, + "2724": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4770, + 4840 + ], + "op": "POP", + "path": "67" + }, + "2725": { + "offset": [ + 4856, + 4868 + ], + "op": "DUP2", + "path": "67" + }, + "2726": { + "offset": [ + 4855, + 4868 + ], + "op": "ISZERO", + "path": "67" + }, + "2727": { + "offset": [ + 4855, + 4885 + ], + "op": "DUP1", + "path": "67" + }, + "2728": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "ISZERO", + "path": "67" + }, + "2729": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "PUSH2", + "path": "67", + "value": "0xAB0" + }, + "2732": { + "offset": [ + 4855, + 4885 + ], + "op": "JUMPI", + "path": "67" + }, + "2733": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4855, + 4885 + ], + "op": "POP", + "path": "67" + }, + "2734": { + "offset": [ + 4873, + 4885 + ], + "op": "DUP1", + "path": "67" + }, + "2735": { + "offset": [ + 4872, + 4885 + ], + "op": "ISZERO", + "path": "67" + }, + "2736": { + "offset": [ + 4855, + 4885 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2737": { + "offset": [ + 4851, + 4942 + ], + "op": "ISZERO", + "path": "67" + }, + "2738": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4851, + 4942 + ], + "op": "PUSH2", + "path": "67", + "value": "0xACE" + }, + "2741": { + "offset": [ + 4851, + 4942 + ], + "op": "JUMPI", + "path": "67" + }, + "2742": { + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2744": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MLOAD", + "path": "67" + }, + "2745": { + "op": "PUSH4", + "value": "0xF92EE8A9" + }, + "2750": { + "op": "PUSH1", + "value": "0xE0" + }, + "2752": { + "op": "SHL" + }, + "2753": { + "offset": [ + 4908, + 4931 + ], + "op": "DUP2", + "path": "67" + }, + "2754": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MSTORE", + "path": "67" + }, + "2755": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x4" + }, + "2757": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "ADD", + "path": "67" + }, + "2758": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2760": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "MLOAD", + "path": "67" + }, + "2761": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "DUP1", + "path": "67" + }, + "2762": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SWAP2", + "path": "67" + }, + "2763": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SUB", + "path": "67" + }, + "2764": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "SWAP1", + "path": "67" + }, + "2765": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4908, + 4931 + ], + "op": "REVERT", + "path": "67" + }, + "2766": { + "offset": [ + 4851, + 4942 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2767": { + "offset": [ + 4951, + 4969 + ], + "op": "DUP5", + "path": "67" + }, + "2768": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "SLOAD", + "path": "67" + }, + "2769": { + "op": "PUSH8", + "value": "0xFFFFFFFFFFFFFFFF" + }, + "2778": { + "op": "NOT" + }, + "2779": { + "offset": [ + 4951, + 4969 + ], + "op": "AND", + "path": "67" + }, + "2780": { + "offset": [ + 4968, + 4969 + ], + "op": "PUSH1", + "path": "67", + "value": "0x1" + }, + "2782": { + "offset": [ + 4951, + 4969 + ], + "op": "OR", + "path": "67" + }, + "2783": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "DUP6", + "path": "67" + }, + "2784": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4951, + 4969 + ], + "op": "SSTORE", + "path": "67" + }, + "2785": { + "offset": [ + 4979, + 5046 + ], + "op": "DUP4", + "path": "67" + }, + "2786": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "ISZERO", + "path": "67" + }, + "2787": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "PUSH2", + "path": "67", + "value": "0xAF8" + }, + "2790": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 4979, + 5046 + ], + "op": "JUMPI", + "path": "67" + }, + "2791": { + "offset": [ + 5013, + 5035 + ], + "op": "DUP5", + "path": "67" + }, + "2792": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "SLOAD", + "path": "67" + }, + "2793": { + "op": "PUSH1", + "value": "0xFF" + }, + "2795": { + "op": "PUSH1", + "value": "0x40" + }, + "2797": { + "op": "SHL" + }, + "2798": { + "op": "NOT" + }, + "2799": { + "offset": [ + 5013, + 5035 + ], + "op": "AND", + "path": "67" + }, + "2800": { + "op": "PUSH1", + "value": "0x1" + }, + "2802": { + "op": "PUSH1", + "value": "0x40" + }, + "2804": { + "op": "SHL" + }, + "2805": { + "offset": [ + 5013, + 5035 + ], + "op": "OR", + "path": "67" + }, + "2806": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "DUP6", + "path": "67" + }, + "2807": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 5013, + 5035 + ], + "op": "SSTORE", + "path": "67" + }, + "2808": { + "offset": [ + 4979, + 5046 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2809": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1325, + 1349 + ], + "op": "PUSH2", + "path": "104", + "statement": 25, + "value": "0xB00" + }, + "2812": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1325, + 1347 + ], + "op": "PUSH2", + "path": "104", + "value": "0x142E" + }, + "2815": { + "fn": "HyperAccountPermissionedMinter.initialize", + "jump": "i", + "offset": [ + 1325, + 1349 + ], + "op": "JUMP", + "path": "104" + }, + "2816": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1325, + 1349 + ], + "op": "JUMPDEST", + "path": "104" + }, + "2817": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH2", + "path": "104", + "statement": 26, + "value": "0xB58" + }, + "2820": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "2822": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "MLOAD", + "path": "104" + }, + "2823": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "DUP1", + "path": "104" + }, + "2824": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "2826": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "ADD", + "path": "104" + }, + "2827": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "2829": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "MSTORE", + "path": "104" + }, + "2830": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "DUP1", + "path": "104" + }, + "2831": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x1E" + }, + "2833": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "DUP2", + "path": "104" + }, + "2834": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "MSTORE", + "path": "104" + }, + "2835": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x20" + }, + "2837": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "ADD", + "path": "104" + }, + "2838": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH32", + "path": "104", + "value": "0x48797065724163636F756E745065726D697373696F6E65644D696E7465720000" + }, + "2871": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "DUP2", + "path": "104" + }, + "2872": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "MSTORE", + "path": "104" + }, + "2873": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "POP", + "path": "104" + }, + "2874": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "2876": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "MLOAD", + "path": "104" + }, + "2877": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "DUP1", + "path": "104" + }, + "2878": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "2880": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "ADD", + "path": "104" + }, + "2881": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "2883": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "MSTORE", + "path": "104" + }, + "2884": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "DUP1", + "path": "104" + }, + "2885": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x1" + }, + "2887": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "DUP2", + "path": "104" + }, + "2888": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "MSTORE", + "path": "104" + }, + "2889": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "PUSH1", + "path": "104", + "value": "0x20" + }, + "2891": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "ADD", + "path": "104" + }, + "2892": { + "op": "PUSH1", + "value": "0x31" + }, + "2894": { + "op": "PUSH1", + "value": "0xF8" + }, + "2896": { + "op": "SHL" + }, + "2897": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "DUP2", + "path": "104" + }, + "2898": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "MSTORE", + "path": "104" + }, + "2899": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "POP", + "path": "104" + }, + "2900": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1372 + ], + "op": "PUSH2", + "path": "104", + "value": "0x1436" + }, + "2903": { + "fn": "HyperAccountPermissionedMinter.initialize", + "jump": "i", + "offset": [ + 1359, + 1411 + ], + "op": "JUMP", + "path": "104" + }, + "2904": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 1359, + 1411 + ], + "op": "JUMPDEST", + "path": "104" + }, + "2905": { + "offset": [ + 5070, + 5084 + ], + "op": "DUP4", + "path": "67" + }, + "2906": { + "offset": [ + 5066, + 5167 + ], + "op": "ISZERO", + "path": "67" + }, + "2907": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5066, + 5167 + ], + "op": "PUSH2", + "path": "67", + "value": "0xB9E" + }, + "2910": { + "offset": [ + 5066, + 5167 + ], + "op": "JUMPI", + "path": "67" + }, + "2911": { + "offset": [ + 5100, + 5123 + ], + "op": "DUP5", + "path": "67" + }, + "2912": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "SLOAD", + "path": "67" + }, + "2913": { + "op": "PUSH1", + "value": "0xFF" + }, + "2915": { + "op": "PUSH1", + "value": "0x40" + }, + "2917": { + "op": "SHL" + }, + "2918": { + "op": "NOT" + }, + "2919": { + "offset": [ + 5100, + 5123 + ], + "op": "AND", + "path": "67" + }, + "2920": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "DUP6", + "path": "67" + }, + "2921": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5100, + 5123 + ], + "op": "SSTORE", + "path": "67" + }, + "2922": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2924": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "MLOAD", + "path": "67" + }, + "2925": { + "op": "PUSH1", + "value": "0x1" + }, + "2927": { + "op": "DUP2" + }, + "2928": { + "op": "MSTORE" + }, + "2929": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH32", + "path": "67", + "value": "0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2" + }, + "2962": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP1", + "path": "67" + }, + "2963": { + "op": "PUSH1", + "value": "0x20" + }, + "2965": { + "op": "ADD" + }, + "2966": { + "offset": [ + 5142, + 5156 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "2968": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "MLOAD", + "path": "67" + }, + "2969": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "DUP1", + "path": "67" + }, + "2970": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP2", + "path": "67" + }, + "2971": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SUB", + "path": "67" + }, + "2972": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "SWAP1", + "path": "67" + }, + "2973": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 5142, + 5156 + ], + "op": "LOG1", + "path": "67" + }, + "2974": { + "offset": [ + 5066, + 5167 + ], + "op": "JUMPDEST", + "path": "67" + }, + "2975": { + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2976": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2977": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2978": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2979": { + "fn": "HyperAccountPermissionedMinter.initialize", + "offset": [ + 4092, + 5173 + ], + "op": "POP", + "path": "67" + }, + "2980": { + "fn": "HyperAccountPermissionedMinter.initialize", + "jump": "o", + "offset": [ + 1274, + 1418 + ], + "op": "JUMP", + "path": "104" + }, + "2981": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5173, + 6076 + ], + "op": "JUMPDEST", + "path": "75" + }, + "2982": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "PUSH0", + "path": "75" + }, + "2983": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "2985": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "DUP1", + "path": "75" + }, + "2986": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP3", + "path": "75" + }, + "2987": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP1", + "path": "75" + }, + "2988": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP1", + "path": "75" + }, + "2989": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5298, + 5316 + ], + "op": "DUP4", + "path": "75" + }, + "2990": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5271, + 5284 + ], + "op": "DUP2", + "path": "75" + }, + "2991": { + "op": "PUSH0" + }, + "2992": { + "op": "MLOAD" + }, + "2993": { + "op": "PUSH1", + "value": "0x20" + }, + "2995": { + "op": "PUSH2", + "value": "0x2851" + }, + "2998": { + "op": "PUSH0" + }, + "2999": { + "op": "CODECOPY" + }, + "3000": { + "op": "PUSH0" + }, + "3001": { + "op": "MLOAD" + }, + "3002": { + "op": "SWAP1" + }, + "3003": { + "op": "PUSH0" + }, + "3004": { + "op": "MSTORE" + }, + "3005": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5790 + ], + "op": "DUP1", + "path": "75", + "statement": 27 + }, + "3006": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5790 + ], + "op": "SLOAD", + "path": "75" + }, + "3007": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5511, + 5556 + ], + "op": "SWAP1", + "path": "75" + }, + "3008": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5511, + 5556 + ], + "op": "SWAP2", + "path": "75" + }, + "3009": { + "op": "POP" + }, + "3010": { + "branch": 76, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5795 + ], + "op": "ISZERO", + "path": "75" + }, + "3011": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "DUP1", + "path": "75" + }, + "3012": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "ISZERO", + "path": "75" + }, + "3013": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "PUSH2", + "path": "75", + "value": "0xBD0" + }, + "3016": { + "branch": 76, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "JUMPI", + "path": "75" + }, + "3017": { + "op": "POP" + }, + "3018": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1" + }, + "3020": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "DUP2", + "path": "75" + }, + "3021": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "ADD", + "path": "75" + }, + "3022": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5815 + ], + "op": "SLOAD", + "path": "75" + }, + "3023": { + "branch": 77, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5799, + 5820 + ], + "op": "ISZERO", + "path": "75" + }, + "3024": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5777, + 5820 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3025": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH2", + "path": "75", + "value": "0xC14" + }, + "3028": { + "branch": 77, + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "JUMPI", + "path": "75" + }, + "3029": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "3031": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "MLOAD", + "path": "75" + }, + "3032": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "3036": { + "op": "PUSH1", + "value": "0xE5" + }, + "3038": { + "op": "SHL" + }, + "3039": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "DUP2", + "path": "75" + }, + "3040": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "MSTORE", + "path": "75" + }, + "3041": { + "op": "PUSH1", + "value": "0x20" + }, + "3043": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH1", + "path": "75", + "value": "0x4" + }, + "3045": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "DUP3", + "path": "75" + }, + "3046": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "ADD", + "path": "75" + }, + "3047": { + "op": "MSTORE" + }, + "3048": { + "op": "PUSH1", + "value": "0x15" + }, + "3050": { + "op": "PUSH1", + "value": "0x24" + }, + "3052": { + "op": "DUP3" + }, + "3053": { + "op": "ADD" + }, + "3054": { + "op": "MSTORE" + }, + "3055": { + "op": "PUSH21", + "value": "0x1152540DCC4C8E88155B9A5B9A5D1A585B1A5E9959" + }, + "3077": { + "op": "PUSH1", + "value": "0x5A" + }, + "3079": { + "op": "SHL" + }, + "3080": { + "op": "PUSH1", + "value": "0x44" + }, + "3082": { + "op": "DUP3" + }, + "3083": { + "op": "ADD" + }, + "3084": { + "op": "MSTORE" + }, + "3085": { + "op": "PUSH1", + "value": "0x64" + }, + "3087": { + "op": "ADD" + }, + "3088": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "PUSH2", + "path": "75", + "value": "0x901" + }, + "3091": { + "op": "JUMP" + }, + "3092": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5769, + 5846 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3093": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5921 + ], + "op": "PUSH2", + "path": "75", + "statement": 28, + "value": "0xC1C" + }, + "3096": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5919 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1448" + }, + "3099": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5908, + 5921 + ], + "op": "JUMP", + "path": "75" + }, + "3100": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5908, + 5921 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3101": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5951 + ], + "op": "PUSH2", + "path": "75", + "value": "0xC24" + }, + "3104": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5949 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1508" + }, + "3107": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "i", + "offset": [ + 5935, + 5951 + ], + "op": "JUMP", + "path": "75" + }, + "3108": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5935, + 5951 + ], + "op": "JUMPDEST", + "path": "75" + }, + "3109": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "3111": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP1", + "path": "75" + }, + "3112": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MLOAD", + "path": "75" + }, + "3113": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6027, + 6028 + ], + "op": "PUSH0", + "path": "75" + }, + "3114": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP1", + "path": "75" + }, + "3115": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP3", + "path": "75" + }, + "3116": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MSTORE", + "path": "75" + }, + "3117": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "3119": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "DUP3", + "path": "75" + }, + "3120": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "ADD", + "path": "75" + }, + "3121": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP1", + "path": "75" + }, + "3122": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP3", + "path": "75" + }, + "3123": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "MSTORE", + "path": "75" + }, + "3124": { + "op": "PUSH1", + "value": "0xF" + }, + "3126": { + "op": "PUSH1", + "value": "0xF8" + }, + "3128": { + "op": "SHL" + }, + "3129": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP13", + "path": "75" + }, + "3130": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP4", + "path": "75" + }, + "3131": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP12", + "path": "75" + }, + "3132": { + "op": "POP" + }, + "3133": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP2", + "path": "75" + }, + "3134": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP10", + "path": "75" + }, + "3135": { + "op": "POP" + }, + "3136": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5965, + 5978 + ], + "op": "CHAINID", + "path": "75" + }, + "3137": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5965, + 5978 + ], + "op": "SWAP9", + "path": "75" + }, + "3138": { + "op": "POP" + }, + "3139": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6000, + 6004 + ], + "op": "ADDRESS", + "path": "75" + }, + "3140": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6000, + 6004 + ], + "op": "SWAP8", + "path": "75" + }, + "3141": { + "op": "POP" + }, + "3142": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6027, + 6028 + ], + "op": "SWAP6", + "path": "75" + }, + "3143": { + "op": "POP" + }, + "3144": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 6043, + 6059 + ], + "op": "SWAP4", + "path": "75" + }, + "3145": { + "op": "POP" + }, + "3146": { + "fn": "EIP712Upgradeable.eip712Domain", + "offset": [ + 5857, + 6069 + ], + "op": "SWAP2", + "path": "75" + }, + "3147": { + "op": "POP" + }, + "3148": { + "op": "POP" + }, + "3149": { + "fn": "EIP712Upgradeable.eip712Domain", + "jump": "o", + "offset": [ + 5173, + 6076 + ], + "op": "JUMP", + "path": "75" + }, + "3150": { + "fn": "BaseAccount.execute", + "offset": [ + 1383, + 1638 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3151": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1499 + ], + "op": "PUSH2", + "path": "85", + "statement": 29, + "value": "0xC56" + }, + "3154": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1497 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1181" + }, + "3157": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1479, + 1499 + ], + "op": "JUMP", + "path": "85" + }, + "3158": { + "fn": "BaseAccount.execute", + "offset": [ + 1479, + 1499 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3159": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1517 + ], + "op": "PUSH0", + "path": "85" + }, + "3160": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH2", + "path": "85", + "value": "0xC97" + }, + "3163": { + "fn": "BaseAccount.execute", + "offset": [ + 1530, + 1536 + ], + "op": "DUP6", + "path": "85" + }, + "3164": { + "fn": "BaseAccount.execute", + "offset": [ + 1538, + 1543 + ], + "op": "DUP6", + "path": "85" + }, + "3165": { + "fn": "BaseAccount.execute", + "offset": [ + 1545, + 1549 + ], + "op": "DUP6", + "path": "85" + }, + "3166": { + "fn": "BaseAccount.execute", + "offset": [ + 1545, + 1549 + ], + "op": "DUP6", + "path": "85" + }, + "3167": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3168": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3169": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3171": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3172": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3174": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3175": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "3176": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DIV", + "path": "85" + }, + "3177": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MUL", + "path": "85" + }, + "3178": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3180": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3181": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3183": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MLOAD", + "path": "85" + }, + "3184": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "3185": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "3186": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3187": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3189": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "3190": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3191": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP4", + "path": "85" + }, + "3192": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP3", + "path": "85" + }, + "3193": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "3194": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "3195": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "3196": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP2", + "path": "85" + }, + "3197": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "3198": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3200": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3201": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP4", + "path": "85" + }, + "3202": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP4", + "path": "85" + }, + "3203": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP1", + "path": "85" + }, + "3204": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP3", + "path": "85" + }, + "3205": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "DUP5", + "path": "85" + }, + "3206": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "CALLDATACOPY", + "path": "85" + }, + "3207": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "PUSH0", + "path": "85" + }, + "3208": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP3", + "path": "85" + }, + "3209": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "ADD", + "path": "85" + }, + "3210": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "3211": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "3212": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "SWAP2", + "path": "85" + }, + "3213": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "MSTORE", + "path": "85" + }, + "3214": { + "op": "POP" + }, + "3215": { + "op": "POP" + }, + "3216": { + "op": "POP" + }, + "3217": { + "op": "POP" + }, + "3218": { + "fn": "BaseAccount.execute", + "offset": [ + 1551, + 1560 + ], + "op": "GAS", + "path": "85" + }, + "3219": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1529 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1189" + }, + "3222": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1520, + 1561 + ], + "op": "JUMP", + "path": "85" + }, + "3223": { + "fn": "BaseAccount.execute", + "offset": [ + 1520, + 1561 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3224": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1561 + ], + "op": "SWAP1", + "path": "85" + }, + "3225": { + "fn": "BaseAccount.execute", + "offset": [ + 1510, + 1561 + ], + "op": "POP", + "path": "85" + }, + "3226": { + "branch": 73, + "fn": "BaseAccount.execute", + "offset": [ + 1576, + 1578 + ], + "op": "DUP1", + "path": "85" + }, + "3227": { + "fn": "BaseAccount.execute", + "offset": [ + 1571, + 1632 + ], + "op": "PUSH2", + "path": "85", + "value": "0xB9E" + }, + "3230": { + "branch": 73, + "fn": "BaseAccount.execute", + "offset": [ + 1571, + 1632 + ], + "op": "JUMPI", + "path": "85" + }, + "3231": { + "fn": "BaseAccount.execute", + "offset": [ + 1594, + 1621 + ], + "op": "PUSH2", + "path": "85", + "statement": 30, + "value": "0xB9E" + }, + "3234": { + "fn": "BaseAccount.execute", + "offset": [ + 1594, + 1619 + ], + "op": "PUSH2", + "path": "85", + "value": "0x119F" + }, + "3237": { + "fn": "BaseAccount.execute", + "jump": "i", + "offset": [ + 1594, + 1621 + ], + "op": "JUMP", + "path": "85" + }, + "3238": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3239": { + "fn": "TokenBoundMech.state", + "offset": [ + 2168, + 2175 + ], + "op": "PUSH0", + "path": "113" + }, + "3240": { + "fn": "TokenBoundMech.state", + "offset": [ + 2168, + 2175 + ], + "op": "DUP1", + "path": "113" + }, + "3241": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "PUSH32", + "path": "113", + "value": "0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800" + }, + "3274": { + "fn": "TokenBoundMech.state", + "offset": [ + 2187, + 2248 + ], + "op": "SWAP1", + "path": "113" + }, + "3275": { + "op": "POP" + }, + "3276": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2354 + ], + "op": "PUSH0", + "path": "113" + }, + "3277": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "3298": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3300": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "3301": { + "op": "PUSH4", + "value": "0x1AAB3F0D" + }, + "3306": { + "op": "PUSH1", + "value": "0xE1" + }, + "3308": { + "op": "SHL" + }, + "3309": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3310": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MSTORE", + "path": "113" + }, + "3311": { + "fn": "TokenBoundMech.state", + "offset": [ + 2387, + 2391 + ], + "op": "ADDRESS", + "path": "113" + }, + "3312": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x4" + }, + "3314": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3315": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3316": { + "op": "MSTORE" + }, + "3317": { + "fn": "TokenBoundMech.state", + "offset": [ + 2394, + 2395 + ], + "op": "PUSH0", + "path": "113" + }, + "3318": { + "op": "PUSH1", + "value": "0x24" + }, + "3320": { + "op": "DUP3" + }, + "3321": { + "op": "ADD" + }, + "3322": { + "op": "MSTORE" + }, + "3323": { + "op": "PUSH1", + "value": "0x1" + }, + "3325": { + "op": "PUSH1", + "value": "0x1" + }, + "3327": { + "op": "PUSH1", + "value": "0xA0" + }, + "3329": { + "op": "SHL" + }, + "3330": { + "op": "SUB" + }, + "3331": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP2", + "path": "113" + }, + "3332": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3333": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP2", + "path": "113" + }, + "3334": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "AND", + "path": "113" + }, + "3335": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3336": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "PUSH4", + "path": "113", + "value": "0x35567E1A" + }, + "3341": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2378 + ], + "op": "SWAP1", + "path": "113" + }, + "3342": { + "op": "PUSH1", + "value": "0x44" + }, + "3344": { + "op": "ADD" + }, + "3345": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3347": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3349": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "3350": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3351": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP4", + "path": "113" + }, + "3352": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SUB", + "path": "113" + }, + "3353": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3354": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP7", + "path": "113" + }, + "3355": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "GAS", + "path": "113" + }, + "3356": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "STATICCALL", + "path": "113" + }, + "3357": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ISZERO", + "path": "113" + }, + "3358": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3359": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ISZERO", + "path": "113" + }, + "3360": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0xD2B" + }, + "3363": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPI", + "path": "113" + }, + "3364": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3365": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3366": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3367": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATACOPY", + "path": "113" + }, + "3368": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3369": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH0", + "path": "113" + }, + "3370": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "REVERT", + "path": "113" + }, + "3371": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3372": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3373": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3374": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3375": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3376": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3378": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MLOAD", + "path": "113" + }, + "3379": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "RETURNDATASIZE", + "path": "113" + }, + "3380": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x1F" + }, + "3382": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "NOT", + "path": "113" + }, + "3383": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x1F" + }, + "3385": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3386": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3387": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "AND", + "path": "113" + }, + "3388": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP3", + "path": "113" + }, + "3389": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3390": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP1", + "path": "113" + }, + "3391": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3393": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "MSTORE", + "path": "113" + }, + "3394": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "POP", + "path": "113" + }, + "3395": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "DUP2", + "path": "113" + }, + "3396": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "ADD", + "path": "113" + }, + "3397": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3398": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0xD4F" + }, + "3401": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP2", + "path": "113" + }, + "3402": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3403": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "PUSH2", + "path": "113", + "value": "0x25D8" + }, + "3406": { + "fn": "TokenBoundMech.state", + "jump": "i", + "offset": [ + 2357, + 2396 + ], + "op": "JUMP", + "path": "113" + }, + "3407": { + "fn": "TokenBoundMech.state", + "offset": [ + 2357, + 2396 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3408": { + "fn": "TokenBoundMech.state", + "offset": [ + 2443, + 2457 + ], + "op": "DUP3", + "path": "113", + "statement": 31 + }, + "3409": { + "fn": "TokenBoundMech.state", + "offset": [ + 2443, + 2457 + ], + "op": "SLOAD", + "path": "113" + }, + "3410": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3412": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MLOAD", + "path": "113" + }, + "3413": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP2", + "path": "113" + }, + "3414": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP3", + "path": "113" + }, + "3415": { + "op": "POP" + }, + "3416": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH2", + "path": "113", + "value": "0xD6E" + }, + "3419": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SWAP2", + "path": "113" + }, + "3420": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "DUP4", + "path": "113" + }, + "3421": { + "fn": "TokenBoundMech.state", + "offset": [ + 2331, + 2396 + ], + "op": "SWAP1", + "path": "113" + }, + "3422": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3424": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "ADD", + "path": "113" + }, + "3425": { + "op": "SWAP2" + }, + "3426": { + "op": "DUP3" + }, + "3427": { + "op": "MSTORE" + }, + "3428": { + "op": "PUSH1", + "value": "0x20" + }, + "3430": { + "op": "DUP3" + }, + "3431": { + "op": "ADD" + }, + "3432": { + "op": "MSTORE" + }, + "3433": { + "op": "PUSH1", + "value": "0x40" + }, + "3435": { + "op": "ADD" + }, + "3436": { + "op": "SWAP1" + }, + "3437": { + "op": "JUMP" + }, + "3438": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3439": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3441": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MLOAD", + "path": "113" + }, + "3442": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3444": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP2", + "path": "113" + }, + "3445": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP4", + "path": "113" + }, + "3446": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SUB", + "path": "113" + }, + "3447": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SUB", + "path": "113" + }, + "3448": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "DUP2", + "path": "113" + }, + "3449": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MSTORE", + "path": "113" + }, + "3450": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "SWAP1", + "path": "113" + }, + "3451": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "PUSH1", + "path": "113", + "value": "0x40" + }, + "3453": { + "fn": "TokenBoundMech.state", + "offset": [ + 2432, + 2475 + ], + "op": "MSTORE", + "path": "113" + }, + "3454": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "DUP1", + "path": "113" + }, + "3455": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "MLOAD", + "path": "113" + }, + "3456": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "SWAP1", + "path": "113" + }, + "3457": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "PUSH1", + "path": "113", + "value": "0x20" + }, + "3459": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "ADD", + "path": "113" + }, + "3460": { + "fn": "TokenBoundMech.state", + "offset": [ + 2422, + 2476 + ], + "op": "KECCAK256", + "path": "113" + }, + "3461": { + "fn": "TokenBoundMech.state", + "offset": [ + 2414, + 2477 + ], + "op": "PUSH0", + "path": "113" + }, + "3462": { + "fn": "TokenBoundMech.state", + "offset": [ + 2414, + 2477 + ], + "op": "SHR", + "path": "113" + }, + "3463": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "SWAP3", + "path": "113" + }, + "3464": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3465": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3466": { + "fn": "TokenBoundMech.state", + "offset": [ + 2406, + 2478 + ], + "op": "POP", + "path": "113" + }, + "3467": { + "fn": "TokenBoundMech.state", + "offset": [ + 2128, + 2485 + ], + "op": "SWAP1", + "path": "113" + }, + "3468": { + "fn": "TokenBoundMech.state", + "jump": "o", + "offset": [ + 2128, + 2485 + ], + "op": "JUMP", + "path": "113" + }, + "3469": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3470": { + "fn": "Mech.execute", + "offset": [ + 5072, + 5095 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "3472": { + "fn": "Mech.execute", + "offset": [ + 5111, + 5123 + ], + "op": "PUSH0", + "path": "111" + }, + "3473": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5222 + ], + "op": "PUSH2", + "path": "111", + "statement": 32, + "value": "0xDAA" + }, + "3476": { + "fn": "Mech.execute", + "offset": [ + 5163, + 5165 + ], + "op": "DUP9", + "path": "111" + }, + "3477": { + "fn": "Mech.execute", + "offset": [ + 5167, + 5172 + ], + "op": "DUP9", + "path": "111" + }, + "3478": { + "fn": "Mech.execute", + "offset": [ + 5174, + 5178 + ], + "op": "DUP9", + "path": "111" + }, + "3479": { + "fn": "Mech.execute", + "offset": [ + 5174, + 5178 + ], + "op": "DUP9", + "path": "111" + }, + "3480": { + "fn": "Mech.execute", + "offset": [ + 5180, + 5189 + ], + "op": "DUP9", + "path": "111" + }, + "3481": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5201 + ], + "op": "DUP9", + "path": "111" + }, + "3482": { + "branch": 91, + "fn": "Mech.execute", + "offset": [ + 5191, + 5201 + ], + "op": "ISZERO", + "path": "111" + }, + "3483": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "PUSH2", + "path": "111", + "value": "0xDA4" + }, + "3486": { + "branch": 91, + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "JUMPI", + "path": "111" + }, + "3487": { + "fn": "Mech.execute", + "offset": [ + 5216, + 5221 + ], + "op": "DUP9", + "path": "111" + }, + "3488": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5162 + ], + "op": "PUSH2", + "path": "111", + "value": "0x138E" + }, + "3491": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5157, + 5222 + ], + "op": "JUMP", + "path": "111" + }, + "3492": { + "fn": "Mech.execute", + "offset": [ + 5191, + 5221 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3493": { + "fn": "Mech.execute", + "offset": [ + 5204, + 5213 + ], + "op": "GAS", + "path": "111" + }, + "3494": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5162 + ], + "op": "PUSH2", + "path": "111", + "value": "0x138E" + }, + "3497": { + "fn": "Mech.execute", + "jump": "i", + "offset": [ + 5157, + 5222 + ], + "op": "JUMP", + "path": "111" + }, + "3498": { + "fn": "Mech.execute", + "offset": [ + 5157, + 5222 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3499": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "SWAP3", + "path": "111" + }, + "3500": { + "op": "POP" + }, + "3501": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "SWAP1", + "path": "111" + }, + "3502": { + "op": "POP" + }, + "3503": { + "fn": "Mech.execute", + "offset": [ + 5133, + 5222 + ], + "op": "DUP1", + "path": "111" + }, + "3504": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "PUSH2", + "path": "111", + "statement": 33, + "value": "0xDBB" + }, + "3507": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "JUMPI", + "path": "111" + }, + "3508": { + "fn": "Mech.execute", + "offset": [ + 5400, + 5410 + ], + "op": "DUP2", + "path": "111" + }, + "3509": { + "fn": "Mech.execute", + "offset": [ + 5394, + 5411 + ], + "op": "MLOAD", + "path": "111" + }, + "3510": { + "fn": "Mech.execute", + "offset": [ + 5387, + 5391 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "3512": { + "fn": "Mech.execute", + "offset": [ + 5375, + 5385 + ], + "op": "DUP4", + "path": "111" + }, + "3513": { + "fn": "Mech.execute", + "offset": [ + 5371, + 5392 + ], + "op": "ADD", + "path": "111" + }, + "3514": { + "fn": "Mech.execute", + "offset": [ + 5364, + 5412 + ], + "op": "REVERT", + "path": "111" + }, + "3515": { + "fn": "Mech.execute", + "offset": [ + 5233, + 5436 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3516": { + "fn": "Mech.execute", + "offset": [ + 5101, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3517": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "SWAP7", + "path": "111" + }, + "3518": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "SWAP6", + "path": "111" + }, + "3519": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3520": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3521": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3522": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3523": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3524": { + "fn": "Mech.execute", + "offset": [ + 4927, + 5442 + ], + "op": "POP", + "path": "111" + }, + "3525": { + "fn": "Mech.execute", + "jump": "o", + "offset": [ + 4927, + 5442 + ], + "op": "JUMP", + "path": "111" + }, + "3526": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3527": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1030, + 1037 + ], + "op": "PUSH0", + "path": "85" + }, + "3528": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "3549": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "statement": 34, + "value": "0x40" + }, + "3551": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3552": { + "op": "PUSH4", + "value": "0x1AAB3F0D" + }, + "3557": { + "op": "PUSH1", + "value": "0xE1" + }, + "3559": { + "op": "SHL" + }, + "3560": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3561": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MSTORE", + "path": "85" + }, + "3562": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1086, + 1090 + ], + "op": "ADDRESS", + "path": "85" + }, + "3563": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "3565": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3566": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3567": { + "op": "MSTORE" + }, + "3568": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1093, + 1094 + ], + "op": "PUSH0", + "path": "85" + }, + "3569": { + "op": "PUSH1", + "value": "0x24" + }, + "3571": { + "op": "DUP3" + }, + "3572": { + "op": "ADD" + }, + "3573": { + "op": "MSTORE" + }, + "3574": { + "op": "PUSH1", + "value": "0x1" + }, + "3576": { + "op": "PUSH1", + "value": "0x1" + }, + "3578": { + "op": "PUSH1", + "value": "0xA0" + }, + "3580": { + "op": "SHL" + }, + "3581": { + "op": "SUB" + }, + "3582": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP2", + "path": "85" + }, + "3583": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3584": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP2", + "path": "85" + }, + "3585": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "AND", + "path": "85" + }, + "3586": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3587": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "PUSH4", + "path": "85", + "value": "0x35567E1A" + }, + "3592": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1077 + ], + "op": "SWAP1", + "path": "85" + }, + "3593": { + "op": "PUSH1", + "value": "0x44" + }, + "3595": { + "op": "ADD" + }, + "3596": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "3598": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3600": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3601": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3602": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP4", + "path": "85" + }, + "3603": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SUB", + "path": "85" + }, + "3604": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3605": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP7", + "path": "85" + }, + "3606": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "GAS", + "path": "85" + }, + "3607": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "STATICCALL", + "path": "85" + }, + "3608": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ISZERO", + "path": "85" + }, + "3609": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3610": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ISZERO", + "path": "85" + }, + "3611": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0xE26" + }, + "3614": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPI", + "path": "85" + }, + "3615": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3616": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3617": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3618": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATACOPY", + "path": "85" + }, + "3619": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3620": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH0", + "path": "85" + }, + "3621": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "REVERT", + "path": "85" + }, + "3622": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3623": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3624": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3625": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3626": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3627": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3629": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MLOAD", + "path": "85" + }, + "3630": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "3631": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3633": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "NOT", + "path": "85" + }, + "3634": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "3636": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3637": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3638": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "AND", + "path": "85" + }, + "3639": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP3", + "path": "85" + }, + "3640": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3641": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP1", + "path": "85" + }, + "3642": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "3644": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "MSTORE", + "path": "85" + }, + "3645": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3646": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "DUP2", + "path": "85" + }, + "3647": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "ADD", + "path": "85" + }, + "3648": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3649": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0xE4A" + }, + "3652": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP2", + "path": "85" + }, + "3653": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3654": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "PUSH2", + "path": "85", + "value": "0x25D8" + }, + "3657": { + "fn": "BaseAccount.getNonce", + "jump": "i", + "offset": [ + 1056, + 1095 + ], + "op": "JUMP", + "path": "85" + }, + "3658": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1056, + 1095 + ], + "op": "JUMPDEST", + "path": "85" + }, + "3659": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1049, + 1095 + ], + "op": "SWAP1", + "path": "85" + }, + "3660": { + "fn": "BaseAccount.getNonce", + "offset": [ + 1049, + 1095 + ], + "op": "POP", + "path": "85" + }, + "3661": { + "fn": "BaseAccount.getNonce", + "offset": [ + 981, + 1102 + ], + "op": "SWAP1", + "path": "85" + }, + "3662": { + "fn": "BaseAccount.getNonce", + "jump": "o", + "offset": [ + 981, + 1102 + ], + "op": "JUMP", + "path": "85" + }, + "3663": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1500, + 1727 + ], + "op": "JUMPDEST", + "path": "104" + }, + "3664": { + "offset": [ + 1240, + 1262 + ], + "op": "PUSH2", + "path": "111", + "value": "0xE58" + }, + "3667": { + "offset": [ + 1251, + 1261 + ], + "op": "CALLER", + "path": "111" + }, + "3668": { + "offset": [ + 1240, + 1250 + ], + "op": "PUSH2", + "path": "111", + "value": "0x9A5" + }, + "3671": { + "jump": "i", + "offset": [ + 1240, + 1262 + ], + "op": "JUMP", + "path": "111" + }, + "3672": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1240, + 1262 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3673": { + "offset": [ + 1239, + 1262 + ], + "op": "ISZERO", + "path": "111" + }, + "3674": { + "offset": [ + 1239, + 1301 + ], + "op": "DUP1", + "path": "111" + }, + "3675": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1239, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "3676": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1239, + 1301 + ], + "op": "PUSH2", + "path": "111", + "value": "0xE79" + }, + "3679": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPI", + "path": "111" + }, + "3680": { + "op": "POP" + }, + "3681": { + "offset": [ + 1266, + 1276 + ], + "op": "CALLER", + "path": "111" + }, + "3682": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "3703": { + "offset": [ + 1266, + 1301 + ], + "op": "EQ", + "path": "111" + }, + "3704": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1266, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "3705": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3706": { + "offset": [ + 1235, + 1360 + ], + "op": "ISZERO", + "path": "111" + }, + "3707": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1235, + 1360 + ], + "op": "PUSH2", + "path": "111", + "value": "0xE97" + }, + "3710": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPI", + "path": "111" + }, + "3711": { + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "3713": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "3714": { + "op": "PUSH4", + "value": "0x47802953" + }, + "3719": { + "op": "PUSH1", + "value": "0xE1" + }, + "3721": { + "op": "SHL" + }, + "3722": { + "offset": [ + 1324, + 1349 + ], + "op": "DUP2", + "path": "111" + }, + "3723": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "MSTORE", + "path": "111" + }, + "3724": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "3726": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "ADD", + "path": "111" + }, + "3727": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "3729": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "3730": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "DUP1", + "path": "111" + }, + "3731": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP2", + "path": "111" + }, + "3732": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "SUB", + "path": "111" + }, + "3733": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP1", + "path": "111" + }, + "3734": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1324, + 1349 + ], + "op": "REVERT", + "path": "111" + }, + "3735": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPDEST", + "path": "111" + }, + "3736": { + "op": "PUSH1", + "value": "0x1" + }, + "3738": { + "op": "PUSH1", + "value": "0x1" + }, + "3740": { + "op": "PUSH1", + "value": "0xA0" + }, + "3742": { + "op": "SHL" + }, + "3743": { + "op": "SUB" + }, + "3744": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "SWAP2", + "path": "104", + "statement": 35 + }, + "3745": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "SWAP1", + "path": "104" + }, + "3746": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "SWAP2", + "path": "104" + }, + "3747": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "AND", + "path": "104" + }, + "3748": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1587, + 1634 + ], + "op": "PUSH0", + "path": "104" + }, + "3749": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "SWAP1", + "path": "104" + }, + "3750": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "DUP2", + "path": "104" + }, + "3751": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "MSTORE", + "path": "104" + }, + "3752": { + "op": "PUSH0" + }, + "3753": { + "op": "MLOAD" + }, + "3754": { + "op": "PUSH1", + "value": "0x20" + }, + "3756": { + "op": "PUSH2", + "value": "0x2891" + }, + "3759": { + "op": "PUSH0" + }, + "3760": { + "op": "CODECOPY" + }, + "3761": { + "op": "PUSH0" + }, + "3762": { + "op": "MLOAD" + }, + "3763": { + "op": "SWAP1" + }, + "3764": { + "op": "PUSH0" + }, + "3765": { + "op": "MSTORE" + }, + "3766": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "PUSH1", + "path": "104", + "value": "0x20" + }, + "3768": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "MSTORE", + "path": "104" + }, + "3769": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "3771": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "SWAP1", + "path": "104" + }, + "3772": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1707 + ], + "op": "KECCAK256", + "path": "104" + }, + "3773": { + "fn": "HyperAccountPermissionedMinter.auth", + "offset": [ + 1690, + 1720 + ], + "op": "SSTORE", + "path": "104" + }, + "3774": { + "fn": "HyperAccountPermissionedMinter.auth", + "jump": "o", + "offset": [ + 1500, + 1727 + ], + "op": "JUMP", + "path": "104" + }, + "3775": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3776": { + "fn": "TokenBoundMech.token", + "offset": [ + 2529, + 2544 + ], + "op": "PUSH0", + "path": "113" + }, + "3777": { + "fn": "TokenBoundMech.token", + "offset": [ + 2546, + 2567 + ], + "op": "PUSH0", + "path": "113" + }, + "3778": { + "fn": "TokenBoundMech.token", + "offset": [ + 2569, + 2584 + ], + "op": "PUSH0", + "path": "113" + }, + "3779": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2628 + ], + "op": "PUSH2", + "path": "113", + "statement": 36, + "value": "0xECA" + }, + "3782": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2626 + ], + "op": "PUSH2", + "path": "113", + "value": "0x1546" + }, + "3785": { + "fn": "TokenBoundMech.token", + "jump": "i", + "offset": [ + 2603, + 2628 + ], + "op": "JUMP", + "path": "113" + }, + "3786": { + "fn": "TokenBoundMech.token", + "offset": [ + 2603, + 2628 + ], + "op": "JUMPDEST", + "path": "113" + }, + "3787": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3788": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3789": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3790": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3791": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "SWAP3", + "path": "113" + }, + "3792": { + "fn": "TokenBoundMech.token", + "offset": [ + 2596, + 2628 + ], + "op": "POP", + "path": "113" + }, + "3793": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP1", + "path": "113" + }, + "3794": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP2", + "path": "113" + }, + "3795": { + "fn": "TokenBoundMech.token", + "offset": [ + 2491, + 2635 + ], + "op": "SWAP3", + "path": "113" + }, + "3796": { + "fn": "TokenBoundMech.token", + "jump": "o", + "offset": [ + 2491, + 2635 + ], + "op": "JUMP", + "path": "113" + }, + "3797": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3798": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2247, + 2251 + ], + "op": "PUSH0", + "path": "101" + }, + "3799": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2306 + ], + "op": "PUSH2", + "path": "101", + "statement": 37, + "value": "0xEDF" + }, + "3802": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2294, + 2305 + ], + "op": "DUP3", + "path": "101" + }, + "3803": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2293 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1552" + }, + "3806": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "jump": "i", + "offset": [ + 2270, + 2306 + ], + "op": "JUMP", + "path": "101" + }, + "3807": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2306 + ], + "op": "JUMPDEST", + "path": "101" + }, + "3808": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "DUP1", + "path": "101" + }, + "3809": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "PUSH2", + "path": "101", + "value": "0x5EC" + }, + "3812": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2270, + 2362 + ], + "op": "JUMPI", + "path": "101" + }, + "3813": { + "op": "POP" + }, + "3814": { + "op": "PUSH1", + "value": "0x1" + }, + "3816": { + "op": "PUSH1", + "value": "0x1" + }, + "3818": { + "op": "PUSH1", + "value": "0xE0" + }, + "3820": { + "op": "SHL" + }, + "3821": { + "op": "SUB" + }, + "3822": { + "op": "NOT" + }, + "3823": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "DUP3", + "path": "101" + }, + "3824": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "AND", + "path": "101" + }, + "3825": { + "op": "PUSH4", + "value": "0x3C1CC5F1" + }, + "3830": { + "op": "PUSH1", + "value": "0xE0" + }, + "3832": { + "op": "SHL" + }, + "3833": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2310, + 2362 + ], + "op": "EQ", + "path": "101" + }, + "3834": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2263, + 2362 + ], + "op": "SWAP3", + "path": "101" + }, + "3835": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "offset": [ + 2146, + 2369 + ], + "op": "SWAP2", + "path": "101" + }, + "3836": { + "op": "POP" + }, + "3837": { + "op": "POP" + }, + "3838": { + "fn": "HyperAccountMinterUpgradable.supportsInterface", + "jump": "o", + "offset": [ + 2146, + 2369 + ], + "op": "JUMP", + "path": "101" + }, + "3839": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2446, + 2964 + ], + "op": "JUMPDEST", + "path": "104" + }, + "3840": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2764, + 2774 + ], + "op": "CALLER", + "path": "104", + "statement": 38 + }, + "3841": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2616, + 2627 + ], + "op": "PUSH0", + "path": "104" + }, + "3842": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "SWAP1", + "path": "104" + }, + "3843": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "DUP2", + "path": "104" + }, + "3844": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "MSTORE", + "path": "104" + }, + "3845": { + "op": "PUSH0" + }, + "3846": { + "op": "MLOAD" + }, + "3847": { + "op": "PUSH1", + "value": "0x20" + }, + "3849": { + "op": "PUSH2", + "value": "0x2891" + }, + "3852": { + "op": "PUSH0" + }, + "3853": { + "op": "CODECOPY" + }, + "3854": { + "op": "PUSH0" + }, + "3855": { + "op": "MLOAD" + }, + "3856": { + "op": "SWAP1" + }, + "3857": { + "op": "PUSH0" + }, + "3858": { + "op": "MSTORE" + }, + "3859": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "PUSH1", + "path": "104", + "value": "0x20" + }, + "3861": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "DUP2", + "path": "104" + }, + "3862": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "SWAP1", + "path": "104" + }, + "3863": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "MSTORE", + "path": "104" + }, + "3864": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "3866": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "DUP3", + "path": "104" + }, + "3867": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "KECCAK256", + "path": "104" + }, + "3868": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2751, + 2775 + ], + "op": "SLOAD", + "path": "104" + }, + "3869": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2778, + 2779 + ], + "op": "PUSH1", + "path": "104", + "value": "0x1" + }, + "3871": { + "op": "GT" + }, + "3872": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2747, + 2846 + ], + "op": "ISZERO", + "path": "104" + }, + "3873": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2747, + 2846 + ], + "op": "PUSH2", + "path": "104", + "value": "0xF3F" + }, + "3876": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2747, + 2846 + ], + "op": "JUMPI", + "path": "104" + }, + "3877": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2802, + 2835 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "3879": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2802, + 2835 + ], + "op": "MLOAD", + "path": "104" + }, + "3880": { + "op": "PUSH4", + "value": "0x2FCAD63B" + }, + "3885": { + "op": "PUSH1", + "value": "0xE2" + }, + "3887": { + "op": "SHL" + }, + "3888": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2802, + 2835 + ], + "op": "DUP2", + "path": "104" + }, + "3889": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2802, + 2835 + ], + "op": "MSTORE", + "path": "104" + }, + "3890": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2824, + 2834 + ], + "op": "CALLER", + "path": "104" + }, + "3891": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2802, + 2835 + ], + "op": "PUSH1", + "path": "104", + "value": "0x4" + }, + "3893": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2802, + 2835 + ], + "op": "DUP3", + "path": "104" + }, + "3894": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2802, + 2835 + ], + "op": "ADD", + "path": "104" + }, + "3895": { + "op": "MSTORE" + }, + "3896": { + "op": "PUSH1", + "value": "0x24" + }, + "3898": { + "op": "ADD" + }, + "3899": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2802, + 2835 + ], + "op": "PUSH2", + "path": "104", + "value": "0x901" + }, + "3902": { + "op": "JUMP" + }, + "3903": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2747, + 2846 + ], + "op": "JUMPDEST", + "path": "104" + }, + "3904": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2868, + 2878 + ], + "op": "CALLER", + "path": "104", + "statement": 39 + }, + "3905": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2867 + ], + "op": "PUSH0", + "path": "104" + }, + "3906": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "SWAP1", + "path": "104" + }, + "3907": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "DUP2", + "path": "104" + }, + "3908": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "MSTORE", + "path": "104" + }, + "3909": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "PUSH1", + "path": "104", + "value": "0x20" + }, + "3911": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "DUP3", + "path": "104" + }, + "3912": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "SWAP1", + "path": "104" + }, + "3913": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "MSTORE", + "path": "104" + }, + "3914": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "3916": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "DUP2", + "path": "104" + }, + "3917": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2879 + ], + "op": "KECCAK256", + "path": "104" + }, + "3918": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "DUP1", + "path": "104" + }, + "3919": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "SLOAD", + "path": "104" + }, + "3920": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2883, + 2884 + ], + "op": "PUSH1", + "path": "104", + "value": "0x1" + }, + "3922": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2883, + 2884 + ], + "op": "SWAP3", + "path": "104" + }, + "3923": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2867 + ], + "op": "SWAP1", + "path": "104" + }, + "3924": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "PUSH2", + "path": "104", + "value": "0xF5E" + }, + "3927": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "SWAP1", + "path": "104" + }, + "3928": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2883, + 2884 + ], + "op": "DUP5", + "path": "104" + }, + "3929": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2883, + 2884 + ], + "op": "SWAP1", + "path": "104" + }, + "3930": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "PUSH2", + "path": "104", + "value": "0x2603" + }, + "3933": { + "fn": "HyperAccountPermissionedMinter._mint", + "jump": "i", + "offset": [ + 2855, + 2884 + ], + "op": "JUMP", + "path": "104" + }, + "3934": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "JUMPDEST", + "path": "104" + }, + "3935": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "SWAP1", + "path": "104" + }, + "3936": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "SWAP2", + "path": "104" + }, + "3937": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2855, + 2884 + ], + "op": "SSTORE", + "path": "104" + }, + "3938": { + "op": "POP" + }, + "3939": { + "op": "POP" + }, + "3940": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH1", + "path": "104", + "statement": 40, + "value": "0x40" + }, + "3942": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "MLOAD", + "path": "104" + }, + "3943": { + "op": "PUSH4", + "value": "0x94CEFED" + }, + "3948": { + "op": "PUSH1", + "value": "0xE0" + }, + "3950": { + "op": "SHL" + }, + "3951": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP2", + "path": "104" + }, + "3952": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "MSTORE", + "path": "104" + }, + "3953": { + "op": "PUSH1", + "value": "0x1" + }, + "3955": { + "op": "PUSH1", + "value": "0x1" + }, + "3957": { + "op": "PUSH1", + "value": "0xA0" + }, + "3959": { + "op": "SHL" + }, + "3960": { + "op": "SUB" + }, + "3961": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2910 + ], + "op": "PUSH32", + "path": "104", + "value": "0x0" + }, + "3994": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2915 + ], + "op": "AND", + "path": "104" + }, + "3995": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2915 + ], + "op": "SWAP1", + "path": "104" + }, + "3996": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2915 + ], + "op": "PUSH4", + "path": "104", + "value": "0x94CEFED" + }, + "4001": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2915 + ], + "op": "SWAP1", + "path": "104" + }, + "4002": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH2", + "path": "104", + "value": "0xFB9" + }, + "4005": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "SWAP1", + "path": "104" + }, + "4006": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2916, + 2918 + ], + "op": "DUP12", + "path": "104" + }, + "4007": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2916, + 2918 + ], + "op": "SWAP1", + "path": "104" + }, + "4008": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2920, + 2924 + ], + "op": "DUP12", + "path": "104" + }, + "4009": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2920, + 2924 + ], + "op": "SWAP1", + "path": "104" + }, + "4010": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2920, + 2924 + ], + "op": "DUP12", + "path": "104" + }, + "4011": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2920, + 2924 + ], + "op": "SWAP1", + "path": "104" + }, + "4012": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2926, + 2940 + ], + "op": "DUP12", + "path": "104" + }, + "4013": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2926, + 2940 + ], + "op": "SWAP1", + "path": "104" + }, + "4014": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2926, + 2940 + ], + "op": "DUP12", + "path": "104" + }, + "4015": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2926, + 2940 + ], + "op": "SWAP1", + "path": "104" + }, + "4016": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2942, + 2956 + ], + "op": "DUP12", + "path": "104" + }, + "4017": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2942, + 2956 + ], + "op": "SWAP1", + "path": "104" + }, + "4018": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH1", + "path": "104", + "value": "0x4" + }, + "4020": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "ADD", + "path": "104" + }, + "4021": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH2", + "path": "104", + "value": "0x263E" + }, + "4024": { + "fn": "HyperAccountPermissionedMinter._mint", + "jump": "i", + "offset": [ + 2901, + 2957 + ], + "op": "JUMP", + "path": "104" + }, + "4025": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "JUMPDEST", + "path": "104" + }, + "4026": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH1", + "path": "104", + "value": "0x20" + }, + "4028": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "4030": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "MLOAD", + "path": "104" + }, + "4031": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP1", + "path": "104" + }, + "4032": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP4", + "path": "104" + }, + "4033": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "SUB", + "path": "104" + }, + "4034": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP2", + "path": "104" + }, + "4035": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH0", + "path": "104" + }, + "4036": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP8", + "path": "104" + }, + "4037": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "GAS", + "path": "104" + }, + "4038": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "CALL", + "path": "104" + }, + "4039": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "ISZERO", + "path": "104" + }, + "4040": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP1", + "path": "104" + }, + "4041": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "ISZERO", + "path": "104" + }, + "4042": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH2", + "path": "104", + "value": "0xFD5" + }, + "4045": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "JUMPI", + "path": "104" + }, + "4046": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "RETURNDATASIZE", + "path": "104" + }, + "4047": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH0", + "path": "104" + }, + "4048": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH0", + "path": "104" + }, + "4049": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "RETURNDATACOPY", + "path": "104" + }, + "4050": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "RETURNDATASIZE", + "path": "104" + }, + "4051": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH0", + "path": "104" + }, + "4052": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "REVERT", + "path": "104" + }, + "4053": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "JUMPDEST", + "path": "104" + }, + "4054": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "POP", + "path": "104" + }, + "4055": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "POP", + "path": "104" + }, + "4056": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "POP", + "path": "104" + }, + "4057": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "POP", + "path": "104" + }, + "4058": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "4060": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "MLOAD", + "path": "104" + }, + "4061": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "RETURNDATASIZE", + "path": "104" + }, + "4062": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH1", + "path": "104", + "value": "0x1F" + }, + "4064": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "NOT", + "path": "104" + }, + "4065": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH1", + "path": "104", + "value": "0x1F" + }, + "4067": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP3", + "path": "104" + }, + "4068": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "ADD", + "path": "104" + }, + "4069": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "AND", + "path": "104" + }, + "4070": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP3", + "path": "104" + }, + "4071": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "ADD", + "path": "104" + }, + "4072": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP1", + "path": "104" + }, + "4073": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH1", + "path": "104", + "value": "0x40" + }, + "4075": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "MSTORE", + "path": "104" + }, + "4076": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "POP", + "path": "104" + }, + "4077": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "DUP2", + "path": "104" + }, + "4078": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "ADD", + "path": "104" + }, + "4079": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "SWAP1", + "path": "104" + }, + "4080": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH2", + "path": "104", + "value": "0xFF9" + }, + "4083": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "SWAP2", + "path": "104" + }, + "4084": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "SWAP1", + "path": "104" + }, + "4085": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "PUSH2", + "path": "104", + "value": "0x25BD" + }, + "4088": { + "fn": "HyperAccountPermissionedMinter._mint", + "jump": "i", + "offset": [ + 2901, + 2957 + ], + "op": "JUMP", + "path": "104" + }, + "4089": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2901, + 2957 + ], + "op": "JUMPDEST", + "path": "104" + }, + "4090": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2894, + 2957 + ], + "op": "SWAP9", + "path": "104" + }, + "4091": { + "fn": "HyperAccountPermissionedMinter._mint", + "offset": [ + 2446, + 2964 + ], + "op": "SWAP8", + "path": "104" + }, + "4092": { + "op": "POP" + }, + "4093": { + "op": "POP" + }, + "4094": { + "op": "POP" + }, + "4095": { + "op": "POP" + }, + "4096": { + "op": "POP" + }, + "4097": { + "op": "POP" + }, + "4098": { + "op": "POP" + }, + "4099": { + "op": "POP" + }, + "4100": { + "fn": "HyperAccountPermissionedMinter._mint", + "jump": "o", + "offset": [ + 2446, + 2964 + ], + "op": "JUMP", + "path": "104" + }, + "4101": { + "op": "JUMPDEST" + }, + "4102": { + "op": "PUSH0" + }, + "4103": { + "op": "PUSH0" + }, + "4104": { + "op": "PUSH0" + }, + "4105": { + "op": "PUSH0" + }, + "4106": { + "op": "PUSH2", + "value": "0x1015" + }, + "4109": { + "op": "DUP9" + }, + "4110": { + "op": "DUP9" + }, + "4111": { + "op": "DUP9" + }, + "4112": { + "op": "DUP9" + }, + "4113": { + "op": "PUSH2", + "value": "0x157C" + }, + "4116": { + "jump": "i", + "op": "JUMP" + }, + "4117": { + "op": "JUMPDEST" + }, + "4118": { + "op": "SWAP3" + }, + "4119": { + "op": "POP" + }, + "4120": { + "op": "SWAP3" + }, + "4121": { + "op": "POP" + }, + "4122": { + "op": "SWAP3" + }, + "4123": { + "op": "POP" + }, + "4124": { + "op": "PUSH2", + "value": "0x1025" + }, + "4127": { + "op": "DUP3" + }, + "4128": { + "op": "DUP3" + }, + "4129": { + "op": "PUSH2", + "value": "0x1644" + }, + "4132": { + "jump": "i", + "op": "JUMP" + }, + "4133": { + "op": "JUMPDEST" + }, + "4134": { + "op": "POP" + }, + "4135": { + "op": "SWAP1" + }, + "4136": { + "op": "SWAP7" + }, + "4137": { + "op": "SWAP6" + }, + "4138": { + "op": "POP" + }, + "4139": { + "op": "POP" + }, + "4140": { + "op": "POP" + }, + "4141": { + "op": "POP" + }, + "4142": { + "op": "POP" + }, + "4143": { + "op": "POP" + }, + "4144": { + "jump": "o", + "op": "JUMP" + }, + "4145": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 2953, + 3136 + ], + "op": "JUMPDEST", + "path": "85" + }, + "4146": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3040, + 3050 + ], + "op": "CALLER", + "path": "85", + "statement": 41 + }, + "4147": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "4168": { + "branch": 74, + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3040, + 3075 + ], + "op": "EQ", + "path": "85" + }, + "4169": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1094" + }, + "4172": { + "branch": 74, + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "JUMPI", + "path": "85" + }, + "4173": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "4175": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "MLOAD", + "path": "85" + }, + "4176": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "4180": { + "op": "PUSH1", + "value": "0xE5" + }, + "4182": { + "op": "SHL" + }, + "4183": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "DUP2", + "path": "85" + }, + "4184": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "MSTORE", + "path": "85" + }, + "4185": { + "op": "PUSH1", + "value": "0x20" + }, + "4187": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH1", + "path": "85", + "value": "0x4" + }, + "4189": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "DUP3", + "path": "85" + }, + "4190": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "ADD", + "path": "85" + }, + "4191": { + "op": "MSTORE" + }, + "4192": { + "op": "PUSH1", + "value": "0x1C" + }, + "4194": { + "op": "PUSH1", + "value": "0x24" + }, + "4196": { + "op": "DUP3" + }, + "4197": { + "op": "ADD" + }, + "4198": { + "op": "MSTORE" + }, + "4199": { + "op": "PUSH32", + "value": "0x6163636F756E743A206E6F742066726F6D20456E747279506F696E7400000000" + }, + "4232": { + "op": "PUSH1", + "value": "0x44" + }, + "4234": { + "op": "DUP3" + }, + "4235": { + "op": "ADD" + }, + "4236": { + "op": "MSTORE" + }, + "4237": { + "op": "PUSH1", + "value": "0x64" + }, + "4239": { + "op": "ADD" + }, + "4240": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "PUSH2", + "path": "85", + "value": "0x901" + }, + "4243": { + "op": "JUMP" + }, + "4244": { + "fn": "BaseAccount._requireFromEntryPoint", + "offset": [ + 3019, + 3129 + ], + "op": "JUMPDEST", + "path": "85" + }, + "4245": { + "fn": "BaseAccount._requireFromEntryPoint", + "jump": "o", + "offset": [ + 2953, + 3136 + ], + "op": "JUMP", + "path": "85" + }, + "4246": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 2978, + 3594 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4247": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3130, + 3152 + ], + "op": "PUSH0", + "path": "101" + }, + "4248": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3197, + 3198 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "4250": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH2", + "path": "101", + "value": "0x10A6" + }, + "4253": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH1", + "path": "101", + "value": "0x60" + }, + "4255": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "DUP6", + "path": "101" + }, + "4256": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "ADD", + "path": "101" + }, + "4257": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3178 + ], + "op": "DUP6", + "path": "101" + }, + "4258": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "PUSH2", + "path": "101", + "value": "0x257B" + }, + "4261": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3172, + 3187 + ], + "op": "JUMP", + "path": "101" + }, + "4262": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3187 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4263": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3194 + ], + "op": "SWAP1", + "path": "101" + }, + "4264": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3194 + ], + "op": "POP", + "path": "101" + }, + "4265": { + "branch": 84, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3172, + 3198 + ], + "op": "GT", + "path": "101" + }, + "4266": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "ISZERO", + "path": "101" + }, + "4267": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "PUSH2", + "path": "101", + "value": "0x10E9" + }, + "4270": { + "branch": 84, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "JUMPI", + "path": "101" + }, + "4271": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3214, + 3224 + ], + "op": "PUSH0", + "path": "101" + }, + "4272": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3253 + ], + "op": "PUSH2", + "path": "101", + "value": "0x10C4" + }, + "4275": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH2", + "path": "101", + "value": "0x10BF" + }, + "4278": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH1", + "path": "101", + "value": "0x60" + }, + "4280": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "DUP7", + "path": "101" + }, + "4281": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "ADD", + "path": "101" + }, + "4282": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3243 + ], + "op": "DUP7", + "path": "101" + }, + "4283": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "PUSH2", + "path": "101", + "value": "0x257B" + }, + "4286": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3237, + 3252 + ], + "op": "JUMP", + "path": "101" + }, + "4287": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3237, + 3252 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4288": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3236 + ], + "op": "PUSH2", + "path": "101", + "value": "0x16FC" + }, + "4291": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3227, + 3253 + ], + "op": "JUMP", + "path": "101" + }, + "4292": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3227, + 3253 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4293": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3214, + 3253 + ], + "op": "SWAP1", + "path": "101" + }, + "4294": { + "op": "POP" + }, + "4295": { + "op": "PUSH4", + "value": "0xF6B31013" + }, + "4300": { + "op": "PUSH1", + "value": "0xE0" + }, + "4302": { + "op": "SHL" + }, + "4303": { + "op": "PUSH1", + "value": "0x1" + }, + "4305": { + "op": "PUSH1", + "value": "0x1" + }, + "4307": { + "op": "PUSH1", + "value": "0xE0" + }, + "4309": { + "op": "SHL" + }, + "4310": { + "op": "SUB" + }, + "4311": { + "op": "NOT" + }, + "4312": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "DUP3", + "path": "101" + }, + "4313": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "AND", + "path": "101" + }, + "4314": { + "branch": 85, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3346, + 3366 + ], + "op": "ADD", + "path": "101" + }, + "4315": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "PUSH2", + "path": "101", + "value": "0x10E7" + }, + "4318": { + "branch": 85, + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "JUMPI", + "path": "101" + }, + "4319": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "4320": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "SWAP2", + "path": "101", + "statement": 42 + }, + "4321": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "POP", + "path": "101" + }, + "4322": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "POP", + "path": "101" + }, + "4323": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "PUSH2", + "path": "101", + "value": "0x5EC" + }, + "4326": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3386, + 3417 + ], + "op": "JUMP", + "path": "101" + }, + "4327": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3342, + 3432 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4328": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3200, + 3442 + ], + "op": "POP", + "path": "101" + }, + "4329": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3168, + 3442 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4330": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3543, + 3587 + ], + "op": "PUSH2", + "path": "101", + "statement": 43, + "value": "0x823" + }, + "4333": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3568, + 3574 + ], + "op": "DUP4", + "path": "101" + }, + "4334": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3576, + 3586 + ], + "op": "DUP4", + "path": "101" + }, + "4335": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "offset": [ + 3543, + 3567 + ], + "op": "PUSH2", + "path": "101", + "value": "0x1713" + }, + "4338": { + "fn": "HyperAccountMinterUpgradable._validateSignature", + "jump": "i", + "offset": [ + 3543, + 3587 + ], + "op": "JUMP", + "path": "101" + }, + "4339": { + "fn": "Account._validateNonce", + "offset": [ + 1189, + 1508 + ], + "op": "JUMPDEST", + "path": "109" + }, + "4340": { + "op": "PUSH1", + "value": "0x1" + }, + "4342": { + "op": "PUSH1", + "value": "0x1" + }, + "4344": { + "op": "PUSH1", + "value": "0x40" + }, + "4346": { + "op": "SHL" + }, + "4347": { + "op": "SUB" + }, + "4348": { + "fn": "Account._validateNonce", + "offset": [ + 1459, + 1483 + ], + "op": "DUP2", + "path": "109", + "statement": 44 + }, + "4349": { + "branch": 70, + "fn": "Account._validateNonce", + "offset": [ + 1459, + 1483 + ], + "op": "LT", + "path": "109" + }, + "4350": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH2", + "path": "109", + "value": "0x1139" + }, + "4353": { + "branch": 70, + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "JUMPI", + "path": "109" + }, + "4354": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH1", + "path": "109", + "value": "0x40" + }, + "4356": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "MLOAD", + "path": "109" + }, + "4357": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "4361": { + "op": "PUSH1", + "value": "0xE5" + }, + "4363": { + "op": "SHL" + }, + "4364": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "DUP2", + "path": "109" + }, + "4365": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "MSTORE", + "path": "109" + }, + "4366": { + "op": "PUSH1", + "value": "0x20" + }, + "4368": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH1", + "path": "109", + "value": "0x4" + }, + "4370": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "DUP3", + "path": "109" + }, + "4371": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "ADD", + "path": "109" + }, + "4372": { + "op": "MSTORE" + }, + "4373": { + "op": "PUSH1", + "value": "0xD" + }, + "4375": { + "op": "PUSH1", + "value": "0x24" + }, + "4377": { + "op": "DUP3" + }, + "4378": { + "op": "ADD" + }, + "4379": { + "op": "MSTORE" + }, + "4380": { + "op": "PUSH13", + "value": "0x496E76616C6964206E6F6E6365" + }, + "4394": { + "op": "PUSH1", + "value": "0x98" + }, + "4396": { + "op": "SHL" + }, + "4397": { + "op": "PUSH1", + "value": "0x44" + }, + "4399": { + "op": "DUP3" + }, + "4400": { + "op": "ADD" + }, + "4401": { + "op": "MSTORE" + }, + "4402": { + "op": "PUSH1", + "value": "0x64" + }, + "4404": { + "op": "ADD" + }, + "4405": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "PUSH2", + "path": "109", + "value": "0x901" + }, + "4408": { + "op": "JUMP" + }, + "4409": { + "fn": "Account._validateNonce", + "offset": [ + 1451, + 1501 + ], + "op": "JUMPDEST", + "path": "109" + }, + "4410": { + "fn": "Account._validateNonce", + "offset": [ + 1189, + 1508 + ], + "op": "POP", + "path": "109" + }, + "4411": { + "fn": "Account._validateNonce", + "jump": "o", + "offset": [ + 1189, + 1508 + ], + "op": "JUMP", + "path": "109" + }, + "4412": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5811, + 6161 + ], + "op": "JUMPDEST", + "path": "85" + }, + "4413": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5892, + 5916 + ], + "op": "DUP1", + "path": "85" + }, + "4414": { + "branch": 75, + "fn": "BaseAccount._payPrefund", + "offset": [ + 5892, + 5916 + ], + "op": "ISZERO", + "path": "85" + }, + "4415": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5888, + 6155 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1139" + }, + "4418": { + "branch": 75, + "fn": "BaseAccount._payPrefund", + "offset": [ + 5888, + 6155 + ], + "op": "JUMPI", + "path": "85" + }, + "4419": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "4421": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MLOAD", + "path": "85" + }, + "4422": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "PUSH0", + "path": "85" + }, + "4423": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "SWAP1", + "path": "85" + }, + "4424": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "CALLER", + "path": "85" + }, + "4425": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "SWAP1", + "path": "85" + }, + "4426": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "DUP4", + "path": "85" + }, + "4427": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "SWAP1", + "path": "85" + }, + "4428": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "DUP4", + "path": "85" + }, + "4429": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "4430": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5933, + 5945 + ], + "op": "DUP2", + "path": "85" + }, + "4431": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "4432": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 6003, + 6022 + ], + "op": "DUP6", + "path": "85" + }, + "4433": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5958, + 5968 + ], + "op": "DUP8", + "path": "85" + }, + "4434": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "GAS", + "path": "85" + }, + "4435": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "CALL", + "path": "85" + }, + "4436": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "SWAP3", + "path": "85" + }, + "4437": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "4438": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "4439": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "4440": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "4441": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP1", + "path": "85" + }, + "4442": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH0", + "path": "85" + }, + "4443": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP2", + "path": "85" + }, + "4444": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "EQ", + "path": "85" + }, + "4445": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH2", + "path": "85", + "value": "0xB9E" + }, + "4448": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "JUMPI", + "path": "85" + }, + "4449": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "4451": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MLOAD", + "path": "85" + }, + "4452": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "SWAP2", + "path": "85" + }, + "4453": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "POP", + "path": "85" + }, + "4454": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x1F" + }, + "4456": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "NOT", + "path": "85" + }, + "4457": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x3F" + }, + "4459": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "4460": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "4461": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "AND", + "path": "85" + }, + "4462": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP3", + "path": "85" + }, + "4463": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "4464": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x40" + }, + "4466": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MSTORE", + "path": "85" + }, + "4467": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "4468": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP3", + "path": "85" + }, + "4469": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "MSTORE", + "path": "85" + }, + "4470": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATASIZE", + "path": "85" + }, + "4471": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH0", + "path": "85" + }, + "4472": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH1", + "path": "85", + "value": "0x20" + }, + "4474": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "DUP5", + "path": "85" + }, + "4475": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "ADD", + "path": "85" + }, + "4476": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "RETURNDATACOPY", + "path": "85" + }, + "4477": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "PUSH2", + "path": "85", + "value": "0xB9E" + }, + "4480": { + "fn": "BaseAccount._payPrefund", + "offset": [ + 5950, + 6044 + ], + "op": "JUMP", + "path": "85" + }, + "4481": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3142, + 3235 + ], + "op": "JUMPDEST", + "path": "85" + }, + "4482": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3204, + 3228 + ], + "op": "PUSH2", + "path": "85", + "statement": 45, + "value": "0x1094" + }, + "4485": { + "fn": "BaseAccount._requireForExecute", + "offset": [ + 3204, + 3226 + ], + "op": "PUSH2", + "path": "85", + "value": "0x1031" + }, + "4488": { + "fn": "BaseAccount._requireForExecute", + "jump": "i", + "offset": [ + 3204, + 3228 + ], + "op": "JUMP", + "path": "85" + }, + "4489": { + "op": "JUMPDEST" + }, + "4490": { + "op": "PUSH0" + }, + "4491": { + "op": "PUSH0" + }, + "4492": { + "op": "PUSH0" + }, + "4493": { + "op": "DUP5" + }, + "4494": { + "op": "MLOAD" + }, + "4495": { + "op": "PUSH1", + "value": "0x20" + }, + "4497": { + "op": "DUP7" + }, + "4498": { + "op": "ADD" + }, + "4499": { + "op": "DUP8" + }, + "4500": { + "op": "DUP10" + }, + "4501": { + "op": "DUP8" + }, + "4502": { + "op": "CALL" + }, + "4503": { + "op": "SWAP6" + }, + "4504": { + "op": "SWAP5" + }, + "4505": { + "op": "POP" + }, + "4506": { + "op": "POP" + }, + "4507": { + "op": "POP" + }, + "4508": { + "op": "POP" + }, + "4509": { + "op": "POP" + }, + "4510": { + "jump": "o", + "op": "JUMP" + }, + "4511": { + "op": "JUMPDEST" + }, + "4512": { + "op": "PUSH2", + "value": "0x1094" + }, + "4515": { + "op": "PUSH2", + "value": "0x11AB" + }, + "4518": { + "op": "PUSH0" + }, + "4519": { + "op": "PUSH2", + "value": "0x11B0" + }, + "4522": { + "jump": "i", + "op": "JUMP" + }, + "4523": { + "op": "JUMPDEST" + }, + "4524": { + "op": "PUSH2", + "value": "0x1820" + }, + "4527": { + "jump": "i", + "op": "JUMP" + }, + "4528": { + "op": "JUMPDEST" + }, + "4529": { + "op": "PUSH1", + "value": "0x60" + }, + "4531": { + "op": "RETURNDATASIZE" + }, + "4532": { + "op": "DUP3" + }, + "4533": { + "op": "ISZERO" + }, + "4534": { + "op": "PUSH2", + "value": "0x11C4" + }, + "4537": { + "op": "JUMPI" + }, + "4538": { + "op": "DUP3" + }, + "4539": { + "op": "DUP2" + }, + "4540": { + "op": "GT" + }, + "4541": { + "op": "ISZERO" + }, + "4542": { + "op": "PUSH2", + "value": "0x11C4" + }, + "4545": { + "op": "JUMPI" + }, + "4546": { + "op": "POP" + }, + "4547": { + "op": "DUP2" + }, + "4548": { + "op": "JUMPDEST" + }, + "4549": { + "op": "PUSH1", + "value": "0x40" + }, + "4551": { + "op": "MLOAD" + }, + "4552": { + "op": "PUSH1", + "value": "0x20" + }, + "4554": { + "op": "DUP3" + }, + "4555": { + "op": "ADD" + }, + "4556": { + "op": "DUP2" + }, + "4557": { + "op": "ADD" + }, + "4558": { + "op": "PUSH1", + "value": "0x40" + }, + "4560": { + "op": "MSTORE" + }, + "4561": { + "op": "DUP2" + }, + "4562": { + "op": "DUP2" + }, + "4563": { + "op": "MSTORE" + }, + "4564": { + "op": "DUP2" + }, + "4565": { + "op": "PUSH0" + }, + "4566": { + "op": "PUSH1", + "value": "0x20" + }, + "4568": { + "op": "DUP4" + }, + "4569": { + "op": "ADD" + }, + "4570": { + "op": "RETURNDATACOPY" + }, + "4571": { + "op": "SWAP4" + }, + "4572": { + "op": "SWAP3" + }, + "4573": { + "op": "POP" + }, + "4574": { + "op": "POP" + }, + "4575": { + "op": "POP" + }, + "4576": { + "jump": "o", + "op": "JUMP" + }, + "4577": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4603, + 4915 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4578": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4683, + 4687 + ], + "op": "ADDRESS", + "path": "68", + "statement": 46 + }, + "4579": { + "op": "PUSH1", + "value": "0x1" + }, + "4581": { + "op": "PUSH1", + "value": "0x1" + }, + "4583": { + "op": "PUSH1", + "value": "0xA0" + }, + "4585": { + "op": "SHL" + }, + "4586": { + "op": "SUB" + }, + "4587": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4692, + 4698 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "4620": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "AND", + "path": "68" + }, + "4621": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "EQ", + "path": "68" + }, + "4622": { + "branch": 97, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4698 + ], + "op": "DUP1", + "path": "68" + }, + "4623": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1267" + }, + "4626": { + "branch": 97, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "JUMPI", + "path": "68" + }, + "4627": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "POP", + "path": "68" + }, + "4628": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4789, + 4795 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "4661": { + "op": "PUSH1", + "value": "0x1" + }, + "4663": { + "op": "PUSH1", + "value": "0x1" + }, + "4665": { + "op": "PUSH1", + "value": "0xA0" + }, + "4667": { + "op": "SHL" + }, + "4668": { + "op": "SUB" + }, + "4669": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "AND", + "path": "68" + }, + "4670": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4785 + ], + "op": "PUSH2", + "path": "68", + "value": "0x125B" + }, + "4673": { + "op": "PUSH0" + }, + "4674": { + "op": "MLOAD" + }, + "4675": { + "op": "PUSH1", + "value": "0x20" + }, + "4677": { + "op": "PUSH2", + "value": "0x2871" + }, + "4680": { + "op": "PUSH0" + }, + "4681": { + "op": "CODECOPY" + }, + "4682": { + "op": "PUSH0" + }, + "4683": { + "op": "MLOAD" + }, + "4684": { + "op": "SWAP1" + }, + "4685": { + "op": "PUSH0" + }, + "4686": { + "op": "MSTORE" + }, + "4687": { + "op": "SLOAD" + }, + "4688": { + "op": "PUSH1", + "value": "0x1" + }, + "4690": { + "op": "PUSH1", + "value": "0x1" + }, + "4692": { + "op": "PUSH1", + "value": "0xA0" + }, + "4694": { + "op": "SHL" + }, + "4695": { + "op": "SUB" + }, + "4696": { + "op": "AND" + }, + "4697": { + "op": "SWAP1" + }, + "4698": { + "op": "JUMP" + }, + "4699": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4785 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4700": { + "op": "PUSH1", + "value": "0x1" + }, + "4702": { + "op": "PUSH1", + "value": "0x1" + }, + "4704": { + "op": "PUSH1", + "value": "0xA0" + }, + "4706": { + "op": "SHL" + }, + "4707": { + "op": "SUB" + }, + "4708": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "AND", + "path": "68" + }, + "4709": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "EQ", + "path": "68" + }, + "4710": { + "branch": 98, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4753, + 4795 + ], + "op": "ISZERO", + "path": "68" + }, + "4711": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4675, + 4795 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4712": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "ISZERO", + "path": "68" + }, + "4713": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1094" + }, + "4716": { + "branch": 98, + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4658, + 4909 + ], + "op": "JUMPI", + "path": "68" + }, + "4717": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4719": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MLOAD", + "path": "68" + }, + "4720": { + "op": "PUSH4", + "value": "0x703E46DD" + }, + "4725": { + "op": "PUSH1", + "value": "0xE1" + }, + "4727": { + "op": "SHL" + }, + "4728": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "DUP2", + "path": "68" + }, + "4729": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MSTORE", + "path": "68" + }, + "4730": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4732": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "ADD", + "path": "68" + }, + "4733": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4735": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "MLOAD", + "path": "68" + }, + "4736": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "DUP1", + "path": "68" + }, + "4737": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SWAP2", + "path": "68" + }, + "4738": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SUB", + "path": "68" + }, + "4739": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "SWAP1", + "path": "68" + }, + "4740": { + "fn": "UUPSUpgradeable._checkProxy", + "offset": [ + 4869, + 4898 + ], + "op": "REVERT", + "path": "68" + }, + "4741": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 2877, + 2972 + ], + "op": "JUMPDEST", + "path": "101" + }, + "4742": { + "offset": [ + 1240, + 1262 + ], + "op": "PUSH2", + "path": "111", + "value": "0x128E" + }, + "4745": { + "offset": [ + 1251, + 1261 + ], + "op": "CALLER", + "path": "111" + }, + "4746": { + "offset": [ + 1240, + 1250 + ], + "op": "PUSH2", + "path": "111", + "value": "0x9A5" + }, + "4749": { + "jump": "i", + "offset": [ + 1240, + 1262 + ], + "op": "JUMP", + "path": "111" + }, + "4750": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1240, + 1262 + ], + "op": "JUMPDEST", + "path": "111" + }, + "4751": { + "offset": [ + 1239, + 1262 + ], + "op": "ISZERO", + "path": "111" + }, + "4752": { + "offset": [ + 1239, + 1301 + ], + "op": "DUP1", + "path": "111" + }, + "4753": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1239, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "4754": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1239, + 1301 + ], + "op": "PUSH2", + "path": "111", + "value": "0x12AF" + }, + "4757": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPI", + "path": "111" + }, + "4758": { + "op": "POP" + }, + "4759": { + "offset": [ + 1266, + 1276 + ], + "op": "CALLER", + "path": "111" + }, + "4760": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "4781": { + "offset": [ + 1266, + 1301 + ], + "op": "EQ", + "path": "111" + }, + "4782": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1266, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "4783": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPDEST", + "path": "111" + }, + "4784": { + "offset": [ + 1235, + 1360 + ], + "op": "ISZERO", + "path": "111" + }, + "4785": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1235, + 1360 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1139" + }, + "4788": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPI", + "path": "111" + }, + "4789": { + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "4791": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "4792": { + "op": "PUSH4", + "value": "0x47802953" + }, + "4797": { + "op": "PUSH1", + "value": "0xE1" + }, + "4799": { + "op": "SHL" + }, + "4800": { + "offset": [ + 1324, + 1349 + ], + "op": "DUP2", + "path": "111" + }, + "4801": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MSTORE", + "path": "111" + }, + "4802": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "4804": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "ADD", + "path": "111" + }, + "4805": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "4807": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "4808": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "DUP1", + "path": "111" + }, + "4809": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP2", + "path": "111" + }, + "4810": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SUB", + "path": "111" + }, + "4811": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP1", + "path": "111" + }, + "4812": { + "fn": "HyperAccountMinterUpgradable._authorizeUpgrade", + "offset": [ + 1324, + 1349 + ], + "op": "REVERT", + "path": "111" + }, + "4813": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4814": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6174, + 6191 + ], + "op": "DUP2", + "path": "68" + }, + "4815": { + "op": "PUSH1", + "value": "0x1" + }, + "4817": { + "op": "PUSH1", + "value": "0x1" + }, + "4819": { + "op": "PUSH1", + "value": "0xA0" + }, + "4821": { + "op": "SHL" + }, + "4822": { + "op": "SUB" + }, + "4823": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6206 + ], + "op": "AND", + "path": "68" + }, + "4824": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6206 + ], + "op": "PUSH4", + "path": "68", + "value": "0x52D1902D" + }, + "4829": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4831": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4832": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4833": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH4", + "path": "68", + "value": "0xFFFFFFFF" + }, + "4838": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "AND", + "path": "68" + }, + "4839": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0xE0" + }, + "4841": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SHL", + "path": "68" + }, + "4842": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4843": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MSTORE", + "path": "68" + }, + "4844": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4846": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4847": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x20" + }, + "4849": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4851": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4852": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4853": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP4", + "path": "68" + }, + "4854": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SUB", + "path": "68" + }, + "4855": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4856": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP7", + "path": "68" + }, + "4857": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "GAS", + "path": "68" + }, + "4858": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "STATICCALL", + "path": "68" + }, + "4859": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP3", + "path": "68" + }, + "4860": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4861": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4862": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "POP", + "path": "68" + }, + "4863": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4864": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ISZERO", + "path": "68" + }, + "4865": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1327" + }, + "4868": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPI", + "path": "68" + }, + "4869": { + "op": "POP" + }, + "4870": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4872": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP1", + "path": "68" + }, + "4873": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MLOAD", + "path": "68" + }, + "4874": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x1F" + }, + "4876": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "RETURNDATASIZE", + "path": "68" + }, + "4877": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4878": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4879": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4880": { + "op": "PUSH1", + "value": "0x1F" + }, + "4882": { + "op": "NOT" + }, + "4883": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "AND", + "path": "68" + }, + "4884": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP3", + "path": "68" + }, + "4885": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4886": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4887": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP3", + "path": "68" + }, + "4888": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "MSTORE", + "path": "68" + }, + "4889": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1324" + }, + "4892": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP2", + "path": "68" + }, + "4893": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "DUP2", + "path": "68" + }, + "4894": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "ADD", + "path": "68" + }, + "4895": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "SWAP1", + "path": "68" + }, + "4896": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH2", + "path": "68", + "value": "0x25D8" + }, + "4899": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "i", + "offset": [ + 6156, + 6208 + ], + "op": "JUMP", + "path": "68" + }, + "4900": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4901": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "PUSH1", + "path": "68", + "value": "0x1" + }, + "4903": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6156, + 6208 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4904": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "PUSH2", + "path": "68", + "value": "0x134F" + }, + "4907": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "JUMPI", + "path": "68" + }, + "4908": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4910": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "MLOAD", + "path": "68" + }, + "4911": { + "op": "PUSH4", + "value": "0x4C9C8CE3" + }, + "4916": { + "op": "PUSH1", + "value": "0xE0" + }, + "4918": { + "op": "SHL" + }, + "4919": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "DUP2", + "path": "68" + }, + "4920": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "MSTORE", + "path": "68" + }, + "4921": { + "op": "PUSH1", + "value": "0x1" + }, + "4923": { + "op": "PUSH1", + "value": "0x1" + }, + "4925": { + "op": "PUSH1", + "value": "0xA0" + }, + "4927": { + "op": "SHL" + }, + "4928": { + "op": "SUB" + }, + "4929": { + "op": "DUP4" + }, + "4930": { + "op": "AND" + }, + "4931": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4933": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "DUP3", + "path": "68" + }, + "4934": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "ADD", + "path": "68" + }, + "4935": { + "op": "MSTORE" + }, + "4936": { + "op": "PUSH1", + "value": "0x24" + }, + "4938": { + "op": "ADD" + }, + "4939": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6518, + 6578 + ], + "op": "PUSH2", + "path": "68", + "value": "0x901" + }, + "4942": { + "op": "JUMP" + }, + "4943": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6152, + 6589 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4944": { + "op": "PUSH0" + }, + "4945": { + "op": "MLOAD" + }, + "4946": { + "op": "PUSH1", + "value": "0x20" + }, + "4948": { + "op": "PUSH2", + "value": "0x2871" + }, + "4951": { + "op": "PUSH0" + }, + "4952": { + "op": "CODECOPY" + }, + "4953": { + "op": "PUSH0" + }, + "4954": { + "op": "MLOAD" + }, + "4955": { + "op": "SWAP1" + }, + "4956": { + "op": "PUSH0" + }, + "4957": { + "op": "MSTORE" + }, + "4958": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6250, + 6290 + ], + "op": "DUP2", + "path": "68", + "statement": 47 + }, + "4959": { + "branch": 99, + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6250, + 6290 + ], + "op": "EQ", + "path": "68" + }, + "4960": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "PUSH2", + "path": "68", + "value": "0x137F" + }, + "4963": { + "branch": 99, + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "JUMPI", + "path": "68" + }, + "4964": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "4966": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "MLOAD", + "path": "68" + }, + "4967": { + "op": "PUSH4", + "value": "0x2A875269" + }, + "4972": { + "op": "PUSH1", + "value": "0xE2" + }, + "4974": { + "op": "SHL" + }, + "4975": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "DUP2", + "path": "68" + }, + "4976": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "MSTORE", + "path": "68" + }, + "4977": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "4979": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "DUP2", + "path": "68" + }, + "4980": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "ADD", + "path": "68" + }, + "4981": { + "op": "DUP3" + }, + "4982": { + "op": "SWAP1" + }, + "4983": { + "op": "MSTORE" + }, + "4984": { + "op": "PUSH1", + "value": "0x24" + }, + "4986": { + "op": "ADD" + }, + "4987": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6317, + 6351 + ], + "op": "PUSH2", + "path": "68", + "value": "0x901" + }, + "4990": { + "op": "JUMP" + }, + "4991": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6246, + 6366 + ], + "op": "JUMPDEST", + "path": "68" + }, + "4992": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6433 + ], + "op": "PUSH2", + "path": "68", + "statement": 48, + "value": "0x1389" + }, + "4995": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6409, + 6426 + ], + "op": "DUP4", + "path": "68" + }, + "4996": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6428, + 6432 + ], + "op": "DUP4", + "path": "68" + }, + "4997": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6408 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1828" + }, + "5000": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "i", + "offset": [ + 6379, + 6433 + ], + "op": "JUMP", + "path": "68" + }, + "5001": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6379, + 6433 + ], + "op": "JUMPDEST", + "path": "68" + }, + "5002": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6209, + 6444 + ], + "op": "POP", + "path": "68" + }, + "5003": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "POP", + "path": "68" + }, + "5004": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "offset": [ + 6057, + 6595 + ], + "op": "POP", + "path": "68" + }, + "5005": { + "fn": "UUPSUpgradeable._upgradeToAndCallUUPS", + "jump": "o", + "offset": [ + 6057, + 6595 + ], + "op": "JUMP", + "path": "68" + }, + "5006": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5007": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "PUSH32", + "path": "113", + "value": "0xE4B1C7558F331D2752F6CB495B2CF8E1B8AE3112BCC78EC0C3BFEBFBE3CD4800" + }, + "5040": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "DUP1", + "path": "113", + "statement": 49 + }, + "5041": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SLOAD", + "path": "113" + }, + "5042": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "PUSH0", + "path": "113" + }, + "5043": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "SWAP2", + "path": "113" + }, + "5044": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3439, + 3462 + ], + "op": "PUSH1", + "path": "113", + "value": "0x60" + }, + "5046": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3439, + 3462 + ], + "op": "SWAP2", + "path": "113" + }, + "5047": { + "fn": "TokenBoundMech._getTokenBoundMechStorage", + "offset": [ + 1108, + 1133 + ], + "op": "DUP2", + "path": "113" + }, + "5048": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3425, + 3437 + ], + "op": "DUP5", + "path": "113" + }, + "5049": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "PUSH2", + "path": "113", + "value": "0x13C1" + }, + "5052": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "DUP4", + "path": "113" + }, + "5053": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "PUSH2", + "path": "113", + "value": "0x2691" + }, + "5056": { + "fn": "TokenBoundMech._exec", + "jump": "i", + "offset": [ + 3601, + 3617 + ], + "op": "JUMP", + "path": "113" + }, + "5057": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5058": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SWAP2", + "path": "113" + }, + "5059": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SWAP1", + "path": "113" + }, + "5060": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "POP", + "path": "113" + }, + "5061": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "SSTORE", + "path": "113" + }, + "5062": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3601, + 3617 + ], + "op": "POP", + "path": "113" + }, + "5063": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3719 + ], + "op": "PUSH2", + "path": "113", + "statement": 50, + "value": "0x13D4" + }, + "5066": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3685, + 3687 + ], + "op": "DUP10", + "path": "113" + }, + "5067": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3689, + 3694 + ], + "op": "DUP10", + "path": "113" + }, + "5068": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3696, + 3700 + ], + "op": "DUP10", + "path": "113" + }, + "5069": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3696, + 3700 + ], + "op": "DUP10", + "path": "113" + }, + "5070": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3702, + 3711 + ], + "op": "DUP10", + "path": "113" + }, + "5071": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3713, + 3718 + ], + "op": "DUP10", + "path": "113" + }, + "5072": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3684 + ], + "op": "PUSH2", + "path": "113", + "value": "0x187D" + }, + "5075": { + "fn": "TokenBoundMech._exec", + "jump": "i", + "offset": [ + 3673, + 3719 + ], + "op": "JUMP", + "path": "113" + }, + "5076": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3673, + 3719 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5077": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "SWAP3", + "path": "113" + }, + "5078": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "5079": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "SWAP3", + "path": "113" + }, + "5080": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "5081": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3666, + 3719 + ], + "op": "POP", + "path": "113" + }, + "5082": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5083": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP7", + "path": "113" + }, + "5084": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5085": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP7", + "path": "113" + }, + "5086": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "SWAP5", + "path": "113" + }, + "5087": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5088": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5089": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5090": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5091": { + "fn": "TokenBoundMech._exec", + "offset": [ + 3263, + 3726 + ], + "op": "POP", + "path": "113" + }, + "5092": { + "fn": "TokenBoundMech._exec", + "jump": "o", + "offset": [ + 3263, + 3726 + ], + "op": "JUMP", + "path": "113" + }, + "5093": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5032, + 5245 + ], + "op": "JUMPDEST", + "path": "68" + }, + "5094": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5106, + 5110 + ], + "op": "ADDRESS", + "path": "68", + "statement": 51 + }, + "5095": { + "op": "PUSH1", + "value": "0x1" + }, + "5097": { + "op": "PUSH1", + "value": "0x1" + }, + "5099": { + "op": "PUSH1", + "value": "0xA0" + }, + "5101": { + "op": "SHL" + }, + "5102": { + "op": "SUB" + }, + "5103": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5115, + 5121 + ], + "op": "PUSH32", + "path": "68", + "value": "0x0" + }, + "5136": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5098, + 5121 + ], + "op": "AND", + "path": "68" + }, + "5137": { + "branch": 100, + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5098, + 5121 + ], + "op": "EQ", + "path": "68" + }, + "5138": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5094, + 5239 + ], + "op": "PUSH2", + "path": "68", + "value": "0x1094" + }, + "5141": { + "branch": 100, + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5094, + 5239 + ], + "op": "JUMPI", + "path": "68" + }, + "5142": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "5144": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MLOAD", + "path": "68" + }, + "5145": { + "op": "PUSH4", + "value": "0x703E46DD" + }, + "5150": { + "op": "PUSH1", + "value": "0xE1" + }, + "5152": { + "op": "SHL" + }, + "5153": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "DUP2", + "path": "68" + }, + "5154": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MSTORE", + "path": "68" + }, + "5155": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x4" + }, + "5157": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "ADD", + "path": "68" + }, + "5158": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "PUSH1", + "path": "68", + "value": "0x40" + }, + "5160": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "MLOAD", + "path": "68" + }, + "5161": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "DUP1", + "path": "68" + }, + "5162": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SWAP2", + "path": "68" + }, + "5163": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SUB", + "path": "68" + }, + "5164": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "SWAP1", + "path": "68" + }, + "5165": { + "fn": "UUPSUpgradeable._checkNotDelegated", + "offset": [ + 5199, + 5228 + ], + "op": "REVERT", + "path": "68" + }, + "5166": { + "fn": "UUPSUpgradeable.__UUPSUpgradeable_init", + "offset": [ + 2970, + 3037 + ], + "op": "JUMPDEST", + "path": "68" + }, + "5167": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1094" + }, + "5170": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x19D4" + }, + "5173": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "5174": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3446, + 3593 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5175": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0x143E" + }, + "5178": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x19D4" + }, + "5181": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "5182": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 6931, + 6951 + ], + "op": "JUMPDEST", + "path": "67" + }, + "5183": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3548, + 3586 + ], + "op": "PUSH2", + "path": "75", + "statement": 52, + "value": "0x935" + }, + "5186": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3572, + 3576 + ], + "op": "DUP3", + "path": "75" + }, + "5187": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3578, + 3585 + ], + "op": "DUP3", + "path": "75" + }, + "5188": { + "fn": "EIP712Upgradeable.__EIP712_init", + "offset": [ + 3548, + 3571 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1A1D" + }, + "5191": { + "fn": "EIP712Upgradeable.__EIP712_init", + "jump": "i", + "offset": [ + 3548, + 3586 + ], + "op": "JUMP", + "path": "75" + }, + "5192": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6300, + 6455 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5193": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6441, + 6448 + ], + "op": "PUSH32", + "path": "75", + "statement": 53, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102" + }, + "5226": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5227": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "5228": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6354, + 6367 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "5230": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6354, + 6367 + ], + "op": "SWAP2", + "path": "75" + }, + "5231": { + "op": "PUSH0" + }, + "5232": { + "op": "MLOAD" + }, + "5233": { + "op": "PUSH1", + "value": "0x20" + }, + "5235": { + "op": "PUSH2", + "value": "0x2851" + }, + "5238": { + "op": "PUSH0" + }, + "5239": { + "op": "CODECOPY" + }, + "5240": { + "op": "PUSH0" + }, + "5241": { + "op": "MLOAD" + }, + "5242": { + "op": "SWAP1" + }, + "5243": { + "op": "PUSH0" + }, + "5244": { + "op": "MSTORE" + }, + "5245": { + "fn": "EIP712Upgradeable._getEIP712Storage", + "offset": [ + 2839, + 2860 + ], + "op": "SWAP2", + "path": "75" + }, + "5246": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1486" + }, + "5249": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5250": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x26A9" + }, + "5253": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "i", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "5254": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5255": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5256": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "5258": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5259": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5261": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5262": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5263": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DIV", + "path": "75" + }, + "5264": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MUL", + "path": "75" + }, + "5265": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5267": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5268": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "5270": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MLOAD", + "path": "75" + }, + "5271": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5272": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5273": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5274": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x40" + }, + "5276": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5277": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5278": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP3", + "path": "75" + }, + "5279": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5280": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5281": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5282": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5283": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5284": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5286": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5287": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "5288": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5289": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "5290": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x14B2" + }, + "5293": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5294": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x26A9" + }, + "5297": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "i", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "5298": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5299": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5300": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ISZERO", + "path": "75" + }, + "5301": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x14FD" + }, + "5304": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "5305": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5306": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "5308": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "LT", + "path": "75" + }, + "5309": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x14D4" + }, + "5312": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "5313": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x100" + }, + "5316": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5317": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "5318": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "5319": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DIV", + "path": "75" + }, + "5320": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MUL", + "path": "75" + }, + "5321": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "5322": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5323": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5324": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5326": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5327": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5328": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x14FD" + }, + "5331": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMP", + "path": "75" + }, + "5332": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5333": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "5334": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5335": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5336": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5337": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH0", + "path": "75" + }, + "5338": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5339": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5341": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH0", + "path": "75" + }, + "5342": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "KECCAK256", + "path": "75" + }, + "5343": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5344": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5345": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5346": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SLOAD", + "path": "75" + }, + "5347": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP2", + "path": "75" + }, + "5348": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "MSTORE", + "path": "75" + }, + "5349": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5350": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1" + }, + "5352": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5353": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5354": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x20" + }, + "5356": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5357": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP1", + "path": "75" + }, + "5358": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP4", + "path": "75" + }, + "5359": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "GT", + "path": "75" + }, + "5360": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH2", + "path": "75", + "value": "0x14E0" + }, + "5363": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPI", + "path": "75" + }, + "5364": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "5365": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP1", + "path": "75" + }, + "5366": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SUB", + "path": "75" + }, + "5367": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "PUSH1", + "path": "75", + "value": "0x1F" + }, + "5369": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "AND", + "path": "75" + }, + "5370": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "DUP3", + "path": "75" + }, + "5371": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "ADD", + "path": "75" + }, + "5372": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5373": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5374": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5375": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5376": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5377": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5378": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5379": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "SWAP2", + "path": "75" + }, + "5380": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5381": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6434, + 6448 + ], + "op": "POP", + "path": "75" + }, + "5382": { + "fn": "EIP712Upgradeable._EIP712Name", + "offset": [ + 6300, + 6455 + ], + "op": "SWAP1", + "path": "75" + }, + "5383": { + "fn": "EIP712Upgradeable._EIP712Name", + "jump": "o", + "offset": [ + 6300, + 6455 + ], + "op": "JUMP", + "path": "75" + }, + "5384": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6682, + 6843 + ], + "op": "JUMPDEST", + "path": "75" + }, + "5385": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6826, + 6836 + ], + "op": "PUSH32", + "path": "75", + "statement": 54, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D103" + }, + "5418": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "DUP1", + "path": "75" + }, + "5419": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "SLOAD", + "path": "75" + }, + "5420": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6739, + 6752 + ], + "op": "PUSH1", + "path": "75", + "value": "0x60" + }, + "5422": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6739, + 6752 + ], + "op": "SWAP2", + "path": "75" + }, + "5423": { + "op": "PUSH0" + }, + "5424": { + "op": "MLOAD" + }, + "5425": { + "op": "PUSH1", + "value": "0x20" + }, + "5427": { + "op": "PUSH2", + "value": "0x2851" + }, + "5430": { + "op": "PUSH0" + }, + "5431": { + "op": "CODECOPY" + }, + "5432": { + "op": "PUSH0" + }, + "5433": { + "op": "MLOAD" + }, + "5434": { + "op": "SWAP1" + }, + "5435": { + "op": "PUSH0" + }, + "5436": { + "op": "MSTORE" + }, + "5437": { + "fn": "EIP712Upgradeable._getEIP712Storage", + "offset": [ + 2839, + 2860 + ], + "op": "SWAP2", + "path": "75" + }, + "5438": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1486" + }, + "5441": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "SWAP1", + "path": "75" + }, + "5442": { + "fn": "EIP712Upgradeable._EIP712Version", + "offset": [ + 6819, + 6836 + ], + "op": "PUSH2", + "path": "75", + "value": "0x26A9" + }, + "5445": { + "fn": "EIP712Upgradeable._EIP712Version", + "jump": "i", + "offset": [ + 6819, + 6836 + ], + "op": "JUMP", + "path": "75" + }, + "5446": { + "op": "JUMPDEST" + }, + "5447": { + "op": "PUSH0" + }, + "5448": { + "op": "PUSH0" + }, + "5449": { + "op": "PUSH0" + }, + "5450": { + "op": "PUSH2", + "value": "0xECA" + }, + "5453": { + "op": "ADDRESS" + }, + "5454": { + "op": "PUSH2", + "value": "0x1A7C" + }, + "5457": { + "jump": "i", + "op": "JUMP" + }, + "5458": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3732, + 3935 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5459": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3817, + 3821 + ], + "op": "PUSH0", + "path": "113" + }, + "5460": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3876 + ], + "op": "PUSH2", + "path": "113", + "statement": 55, + "value": "0x155C" + }, + "5463": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3864, + 3875 + ], + "op": "DUP3", + "path": "113" + }, + "5464": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3863 + ], + "op": "PUSH2", + "path": "113", + "value": "0x1AD0" + }, + "5467": { + "fn": "TokenBoundMech.supportsInterface", + "jump": "i", + "offset": [ + 3840, + 3876 + ], + "op": "JUMP", + "path": "113" + }, + "5468": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3876 + ], + "op": "JUMPDEST", + "path": "113" + }, + "5469": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "DUP1", + "path": "113" + }, + "5470": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "PUSH2", + "path": "113", + "value": "0x5EC" + }, + "5473": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3840, + 3928 + ], + "op": "JUMPI", + "path": "113" + }, + "5474": { + "op": "POP" + }, + "5475": { + "op": "PUSH1", + "value": "0x1" + }, + "5477": { + "op": "PUSH1", + "value": "0x1" + }, + "5479": { + "op": "PUSH1", + "value": "0xE0" + }, + "5481": { + "op": "SHL" + }, + "5482": { + "op": "SUB" + }, + "5483": { + "op": "NOT" + }, + "5484": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "DUP3", + "path": "113" + }, + "5485": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "AND", + "path": "113" + }, + "5486": { + "op": "PUSH4", + "value": "0x6FAFF5F1" + }, + "5491": { + "op": "PUSH1", + "value": "0xE0" + }, + "5493": { + "op": "SHL" + }, + "5494": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3880, + 3928 + ], + "op": "EQ", + "path": "113" + }, + "5495": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3833, + 3928 + ], + "op": "SWAP3", + "path": "113" + }, + "5496": { + "fn": "TokenBoundMech.supportsInterface", + "offset": [ + 3732, + 3935 + ], + "op": "SWAP2", + "path": "113" + }, + "5497": { + "op": "POP" + }, + "5498": { + "op": "POP" + }, + "5499": { + "fn": "TokenBoundMech.supportsInterface", + "jump": "o", + "offset": [ + 3732, + 3935 + ], + "op": "JUMP", + "path": "113" + }, + "5500": { + "op": "JUMPDEST" + }, + "5501": { + "op": "PUSH0" + }, + "5502": { + "op": "DUP1" + }, + "5503": { + "op": "DUP1" + }, + "5504": { + "op": "PUSH32", + "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" + }, + "5537": { + "op": "DUP5" + }, + "5538": { + "op": "GT" + }, + "5539": { + "op": "ISZERO" + }, + "5540": { + "op": "PUSH2", + "value": "0x15B5" + }, + "5543": { + "op": "JUMPI" + }, + "5544": { + "op": "POP" + }, + "5545": { + "op": "PUSH0" + }, + "5546": { + "op": "SWAP2" + }, + "5547": { + "op": "POP" + }, + "5548": { + "op": "PUSH1", + "value": "0x3" + }, + "5550": { + "op": "SWAP1" + }, + "5551": { + "op": "POP" + }, + "5552": { + "op": "DUP3" + }, + "5553": { + "op": "PUSH2", + "value": "0x163A" + }, + "5556": { + "op": "JUMP" + }, + "5557": { + "op": "JUMPDEST" + }, + "5558": { + "op": "PUSH1", + "value": "0x40" + }, + "5560": { + "op": "DUP1" + }, + "5561": { + "op": "MLOAD" + }, + "5562": { + "op": "PUSH0" + }, + "5563": { + "op": "DUP1" + }, + "5564": { + "op": "DUP3" + }, + "5565": { + "op": "MSTORE" + }, + "5566": { + "op": "PUSH1", + "value": "0x20" + }, + "5568": { + "op": "DUP3" + }, + "5569": { + "op": "ADD" + }, + "5570": { + "op": "DUP1" + }, + "5571": { + "op": "DUP5" + }, + "5572": { + "op": "MSTORE" + }, + "5573": { + "op": "DUP11" + }, + "5574": { + "op": "SWAP1" + }, + "5575": { + "op": "MSTORE" + }, + "5576": { + "op": "PUSH1", + "value": "0xFF" + }, + "5578": { + "op": "DUP10" + }, + "5579": { + "op": "AND" + }, + "5580": { + "op": "SWAP3" + }, + "5581": { + "op": "DUP3" + }, + "5582": { + "op": "ADD" + }, + "5583": { + "op": "SWAP3" + }, + "5584": { + "op": "SWAP1" + }, + "5585": { + "op": "SWAP3" + }, + "5586": { + "op": "MSTORE" + }, + "5587": { + "op": "PUSH1", + "value": "0x60" + }, + "5589": { + "op": "DUP2" + }, + "5590": { + "op": "ADD" + }, + "5591": { + "op": "DUP8" + }, + "5592": { + "op": "SWAP1" + }, + "5593": { + "op": "MSTORE" + }, + "5594": { + "op": "PUSH1", + "value": "0x80" + }, + "5596": { + "op": "DUP2" + }, + "5597": { + "op": "ADD" + }, + "5598": { + "op": "DUP7" + }, + "5599": { + "op": "SWAP1" + }, + "5600": { + "op": "MSTORE" + }, + "5601": { + "op": "PUSH1", + "value": "0x1" + }, + "5603": { + "op": "SWAP1" + }, + "5604": { + "op": "PUSH1", + "value": "0xA0" + }, + "5606": { + "op": "ADD" + }, + "5607": { + "op": "PUSH1", + "value": "0x20" + }, + "5609": { + "op": "PUSH1", + "value": "0x40" + }, + "5611": { + "op": "MLOAD" + }, + "5612": { + "op": "PUSH1", + "value": "0x20" + }, + "5614": { + "op": "DUP2" + }, + "5615": { + "op": "SUB" + }, + "5616": { + "op": "SWAP1" + }, + "5617": { + "op": "DUP1" + }, + "5618": { + "op": "DUP5" + }, + "5619": { + "op": "SUB" + }, + "5620": { + "op": "SWAP1" + }, + "5621": { + "op": "DUP6" + }, + "5622": { + "op": "GAS" + }, + "5623": { + "op": "STATICCALL" + }, + "5624": { + "op": "ISZERO" + }, + "5625": { + "op": "DUP1" + }, + "5626": { + "op": "ISZERO" + }, + "5627": { + "op": "PUSH2", + "value": "0x1606" + }, + "5630": { + "op": "JUMPI" + }, + "5631": { + "op": "RETURNDATASIZE" + }, + "5632": { + "op": "PUSH0" + }, + "5633": { + "op": "PUSH0" + }, + "5634": { + "op": "RETURNDATACOPY" + }, + "5635": { + "op": "RETURNDATASIZE" + }, + "5636": { + "op": "PUSH0" + }, + "5637": { + "op": "REVERT" + }, + "5638": { + "op": "JUMPDEST" + }, + "5639": { + "op": "POP" + }, + "5640": { + "op": "POP" + }, + "5641": { + "op": "PUSH1", + "value": "0x40" + }, + "5643": { + "op": "MLOAD" + }, + "5644": { + "op": "PUSH1", + "value": "0x1F" + }, + "5646": { + "op": "NOT" + }, + "5647": { + "op": "ADD" + }, + "5648": { + "op": "MLOAD" + }, + "5649": { + "op": "SWAP2" + }, + "5650": { + "op": "POP" + }, + "5651": { + "op": "POP" + }, + "5652": { + "op": "PUSH1", + "value": "0x1" + }, + "5654": { + "op": "PUSH1", + "value": "0x1" + }, + "5656": { + "op": "PUSH1", + "value": "0xA0" + }, + "5658": { + "op": "SHL" + }, + "5659": { + "op": "SUB" + }, + "5660": { + "op": "DUP2" + }, + "5661": { + "op": "AND" + }, + "5662": { + "op": "PUSH2", + "value": "0x1631" + }, + "5665": { + "op": "JUMPI" + }, + "5666": { + "op": "POP" + }, + "5667": { + "op": "PUSH0" + }, + "5668": { + "op": "SWAP3" + }, + "5669": { + "op": "POP" + }, + "5670": { + "op": "PUSH1", + "value": "0x1" + }, + "5672": { + "op": "SWAP2" + }, + "5673": { + "op": "POP" + }, + "5674": { + "op": "DUP3" + }, + "5675": { + "op": "SWAP1" + }, + "5676": { + "op": "POP" + }, + "5677": { + "op": "PUSH2", + "value": "0x163A" + }, + "5680": { + "op": "JUMP" + }, + "5681": { + "op": "JUMPDEST" + }, + "5682": { + "op": "SWAP3" + }, + "5683": { + "op": "POP" + }, + "5684": { + "op": "PUSH0" + }, + "5685": { + "op": "SWAP2" + }, + "5686": { + "op": "POP" + }, + "5687": { + "op": "DUP2" + }, + "5688": { + "op": "SWAP1" + }, + "5689": { + "op": "POP" + }, + "5690": { + "op": "JUMPDEST" + }, + "5691": { + "op": "SWAP5" + }, + "5692": { + "op": "POP" + }, + "5693": { + "op": "SWAP5" + }, + "5694": { + "op": "POP" + }, + "5695": { + "op": "SWAP5" + }, + "5696": { + "op": "SWAP2" + }, + "5697": { + "op": "POP" + }, + "5698": { + "op": "POP" + }, + "5699": { + "jump": "o", + "op": "JUMP" + }, + "5700": { + "op": "JUMPDEST" + }, + "5701": { + "op": "PUSH0" + }, + "5702": { + "op": "DUP3" + }, + "5703": { + "op": "PUSH1", + "value": "0x3" + }, + "5705": { + "op": "DUP2" + }, + "5706": { + "op": "GT" + }, + "5707": { + "op": "ISZERO" + }, + "5708": { + "op": "PUSH2", + "value": "0x1657" + }, + "5711": { + "op": "JUMPI" + }, + "5712": { + "op": "PUSH2", + "value": "0x1657" + }, + "5715": { + "op": "PUSH2", + "value": "0x26E1" + }, + "5718": { + "jump": "i", + "op": "JUMP" + }, + "5719": { + "op": "JUMPDEST" + }, + "5720": { + "op": "SUB" + }, + "5721": { + "op": "PUSH2", + "value": "0x1660" + }, + "5724": { + "op": "JUMPI" + }, + "5725": { + "op": "POP" + }, + "5726": { + "op": "POP" + }, + "5727": { + "jump": "o", + "op": "JUMP" + }, + "5728": { + "op": "JUMPDEST" + }, + "5729": { + "op": "PUSH1", + "value": "0x1" + }, + "5731": { + "op": "DUP3" + }, + "5732": { + "op": "PUSH1", + "value": "0x3" + }, + "5734": { + "op": "DUP2" + }, + "5735": { + "op": "GT" + }, + "5736": { + "op": "ISZERO" + }, + "5737": { + "op": "PUSH2", + "value": "0x1674" + }, + "5740": { + "op": "JUMPI" + }, + "5741": { + "op": "PUSH2", + "value": "0x1674" + }, + "5744": { + "op": "PUSH2", + "value": "0x26E1" + }, + "5747": { + "jump": "i", + "op": "JUMP" + }, + "5748": { + "op": "JUMPDEST" + }, + "5749": { + "op": "SUB" + }, + "5750": { + "op": "PUSH2", + "value": "0x1692" + }, + "5753": { + "op": "JUMPI" + }, + "5754": { + "op": "PUSH1", + "value": "0x40" + }, + "5756": { + "op": "MLOAD" + }, + "5757": { + "op": "PUSH4", + "value": "0xF645EEDF" + }, + "5762": { + "op": "PUSH1", + "value": "0xE0" + }, + "5764": { + "op": "SHL" + }, + "5765": { + "op": "DUP2" + }, + "5766": { + "op": "MSTORE" + }, + "5767": { + "op": "PUSH1", + "value": "0x4" + }, + "5769": { + "op": "ADD" + }, + "5770": { + "op": "PUSH1", + "value": "0x40" + }, + "5772": { + "op": "MLOAD" + }, + "5773": { + "op": "DUP1" + }, + "5774": { + "op": "SWAP2" + }, + "5775": { + "op": "SUB" + }, + "5776": { + "op": "SWAP1" + }, + "5777": { + "op": "REVERT" + }, + "5778": { + "op": "JUMPDEST" + }, + "5779": { + "op": "PUSH1", + "value": "0x2" + }, + "5781": { + "op": "DUP3" + }, + "5782": { + "op": "PUSH1", + "value": "0x3" + }, + "5784": { + "op": "DUP2" + }, + "5785": { + "op": "GT" + }, + "5786": { + "op": "ISZERO" + }, + "5787": { + "op": "PUSH2", + "value": "0x16A6" + }, + "5790": { + "op": "JUMPI" + }, + "5791": { + "op": "PUSH2", + "value": "0x16A6" + }, + "5794": { + "op": "PUSH2", + "value": "0x26E1" + }, + "5797": { + "jump": "i", + "op": "JUMP" + }, + "5798": { + "op": "JUMPDEST" + }, + "5799": { + "op": "SUB" + }, + "5800": { + "op": "PUSH2", + "value": "0x16C7" + }, + "5803": { + "op": "JUMPI" + }, + "5804": { + "op": "PUSH1", + "value": "0x40" + }, + "5806": { + "op": "MLOAD" + }, + "5807": { + "op": "PUSH4", + "value": "0xFCE698F7" + }, + "5812": { + "op": "PUSH1", + "value": "0xE0" + }, + "5814": { + "op": "SHL" + }, + "5815": { + "op": "DUP2" + }, + "5816": { + "op": "MSTORE" + }, + "5817": { + "op": "PUSH1", + "value": "0x4" + }, + "5819": { + "op": "DUP2" + }, + "5820": { + "op": "ADD" + }, + "5821": { + "op": "DUP3" + }, + "5822": { + "op": "SWAP1" + }, + "5823": { + "op": "MSTORE" + }, + "5824": { + "op": "PUSH1", + "value": "0x24" + }, + "5826": { + "op": "ADD" + }, + "5827": { + "op": "PUSH2", + "value": "0x901" + }, + "5830": { + "op": "JUMP" + }, + "5831": { + "op": "JUMPDEST" + }, + "5832": { + "op": "PUSH1", + "value": "0x3" + }, + "5834": { + "op": "DUP3" + }, + "5835": { + "op": "PUSH1", + "value": "0x3" + }, + "5837": { + "op": "DUP2" + }, + "5838": { + "op": "GT" + }, + "5839": { + "op": "ISZERO" + }, + "5840": { + "op": "PUSH2", + "value": "0x16DB" + }, + "5843": { + "op": "JUMPI" + }, + "5844": { + "op": "PUSH2", + "value": "0x16DB" + }, + "5847": { + "op": "PUSH2", + "value": "0x26E1" + }, + "5850": { + "jump": "i", + "op": "JUMP" + }, + "5851": { + "op": "JUMPDEST" + }, + "5852": { + "op": "SUB" + }, + "5853": { + "op": "PUSH2", + "value": "0x935" + }, + "5856": { + "op": "JUMPI" + }, + "5857": { + "op": "PUSH1", + "value": "0x40" + }, + "5859": { + "op": "MLOAD" + }, + "5860": { + "op": "PUSH4", + "value": "0x35E2F383" + }, + "5865": { + "op": "PUSH1", + "value": "0xE2" + }, + "5867": { + "op": "SHL" + }, + "5868": { + "op": "DUP2" + }, + "5869": { + "op": "MSTORE" + }, + "5870": { + "op": "PUSH1", + "value": "0x4" + }, + "5872": { + "op": "DUP2" + }, + "5873": { + "op": "ADD" + }, + "5874": { + "op": "DUP3" + }, + "5875": { + "op": "SWAP1" + }, + "5876": { + "op": "MSTORE" + }, + "5877": { + "op": "PUSH1", + "value": "0x24" + }, + "5879": { + "op": "ADD" + }, + "5880": { + "op": "PUSH2", + "value": "0x901" + }, + "5883": { + "op": "JUMP" + }, + "5884": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3600, + 3803 + ], + "op": "JUMPDEST", + "path": "101" + }, + "5885": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3663, + 3673 + ], + "op": "PUSH0", + "path": "101" + }, + "5886": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3703, + 3704 + ], + "op": "PUSH1", + "path": "101", + "value": "0x4" + }, + "5888": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3689, + 3704 + ], + "op": "DUP3", + "path": "101" + }, + "5889": { + "branch": 86, + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3689, + 3704 + ], + "op": "LT", + "path": "101" + }, + "5890": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "ISZERO", + "path": "101" + }, + "5891": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "PUSH2", + "path": "101", + "value": "0x170D" + }, + "5894": { + "branch": 86, + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "JUMPI", + "path": "101" + }, + "5895": { + "op": "POP" + }, + "5896": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3720, + 3721 + ], + "op": "PUSH0", + "path": "101", + "statement": 56 + }, + "5897": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3706, + 3722 + ], + "op": "PUSH2", + "path": "101", + "value": "0x5EC" + }, + "5900": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3706, + 3722 + ], + "op": "JUMP", + "path": "101" + }, + "5901": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3685, + 3722 + ], + "op": "JUMPDEST", + "path": "101" + }, + "5902": { + "op": "POP" + }, + "5903": { + "op": "POP" + }, + "5904": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3762, + 3787 + ], + "op": "CALLDATALOAD", + "path": "101" + }, + "5905": { + "fn": "HyperAccountMinterUpgradable._selector", + "offset": [ + 3762, + 3787 + ], + "op": "SWAP1", + "path": "101" + }, + "5906": { + "fn": "HyperAccountMinterUpgradable._selector", + "jump": "o", + "offset": [ + 3600, + 3803 + ], + "op": "JUMP", + "path": "101" + }, + "5907": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 525, + 1349 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5908": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "PUSH0", + "path": "96" + }, + "5909": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "DUP1", + "path": "96" + }, + "5910": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 677, + 699 + ], + "op": "DUP1", + "path": "96" + }, + "5911": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1761" + }, + "5914": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 787, + 797 + ], + "op": "DUP5", + "path": "96" + }, + "5915": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1728" + }, + "5918": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x100" + }, + "5921": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "DUP9", + "path": "96" + }, + "5922": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "ADD", + "path": "96" + }, + "5923": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 805 + ], + "op": "DUP9", + "path": "96" + }, + "5924": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "PUSH2", + "path": "96", + "value": "0x257B" + }, + "5927": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 799, + 815 + ], + "op": "JUMP", + "path": "96" + }, + "5928": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 799, + 815 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5929": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5930": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5931": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x1F" + }, + "5933": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5934": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "5936": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5937": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "5938": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DIV", + "path": "96" + }, + "5939": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MUL", + "path": "96" + }, + "5940": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "5942": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5943": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x40" + }, + "5945": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MLOAD", + "path": "96" + }, + "5946": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5947": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "5948": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5949": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x40" + }, + "5951": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "5952": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5953": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP4", + "path": "96" + }, + "5954": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "5955": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "5956": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5957": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "5958": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP2", + "path": "96" + }, + "5959": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "5960": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH1", + "path": "96", + "value": "0x20" + }, + "5962": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5963": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP4", + "path": "96" + }, + "5964": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP4", + "path": "96" + }, + "5965": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP1", + "path": "96" + }, + "5966": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP3", + "path": "96" + }, + "5967": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "DUP5", + "path": "96" + }, + "5968": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "CALLDATACOPY", + "path": "96" + }, + "5969": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "PUSH0", + "path": "96" + }, + "5970": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "5971": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "ADD", + "path": "96" + }, + "5972": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "5973": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5974": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "SWAP2", + "path": "96" + }, + "5975": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "MSTORE", + "path": "96" + }, + "5976": { + "op": "POP" + }, + "5977": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 786 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1B71" + }, + "5980": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 786 + ], + "op": "SWAP3", + "path": "96" + }, + "5981": { + "op": "POP" + }, + "5982": { + "op": "POP" + }, + "5983": { + "op": "POP" + }, + "5984": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 770, + 816 + ], + "op": "JUMP", + "path": "96" + }, + "5985": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 770, + 816 + ], + "op": "JUMPDEST", + "path": "96" + }, + "5986": { + "op": "POP" + }, + "5987": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5988": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP3", + "path": "96" + }, + "5989": { + "op": "POP" + }, + "5990": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 715, + 816 + ], + "op": "SWAP1", + "path": "96" + }, + "5991": { + "op": "POP" + }, + "5992": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 840, + 866 + ], + "op": "PUSH0", + "path": "96" + }, + "5993": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 836 + ], + "op": "DUP2", + "path": "96" + }, + "5994": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH1", + "path": "96", + "value": "0x3" + }, + "5996": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "DUP2", + "path": "96" + }, + "5997": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "GT", + "path": "96" + }, + "5998": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "ISZERO", + "path": "96" + }, + "5999": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x177A" + }, + "6002": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "JUMPI", + "path": "96" + }, + "6003": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x177A" + }, + "6006": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "PUSH2", + "path": "96", + "value": "0x26E1" + }, + "6009": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 831, + 866 + ], + "op": "JUMP", + "path": "96" + }, + "6010": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6011": { + "branch": 80, + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 866 + ], + "op": "EQ", + "path": "96" + }, + "6012": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "DUP1", + "path": "96" + }, + "6013": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "ISZERO", + "path": "96" + }, + "6014": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "PUSH2", + "path": "96", + "value": "0x178B" + }, + "6017": { + "branch": 80, + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "JUMPI", + "path": "96" + }, + "6018": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 831, + 897 + ], + "op": "POP", + "path": "96" + }, + "6019": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 897 + ], + "op": "PUSH2", + "path": "96", + "value": "0x178B" + }, + "6022": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 881, + 896 + ], + "op": "DUP3", + "path": "96" + }, + "6023": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 880 + ], + "op": "PUSH2", + "path": "96", + "value": "0x9A5" + }, + "6026": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 870, + 897 + ], + "op": "JUMP", + "path": "96" + }, + "6027": { + "branch": 81, + "fn": "HyperAccount._validateSignature", + "offset": [ + 870, + 897 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6028": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "ISZERO", + "path": "96" + }, + "6029": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "PUSH2", + "path": "96", + "value": "0x179A" + }, + "6032": { + "branch": 81, + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "JUMPI", + "path": "96" + }, + "6033": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "6034": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "SWAP3", + "path": "96", + "statement": 57 + }, + "6035": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "6036": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "6037": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "POP", + "path": "96" + }, + "6038": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "PUSH2", + "path": "96", + "value": "0x5EC" + }, + "6041": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 913, + 944 + ], + "op": "JUMP", + "path": "96" + }, + "6042": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 827, + 955 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6043": { + "op": "PUSH32", + "value": "0x19457468657265756D205369676E6564204D6573736167653A0A333200000000" + }, + "6076": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1021, + 1033 + ], + "op": "PUSH0", + "path": "96" + }, + "6077": { + "op": "SWAP1" + }, + "6078": { + "op": "DUP2" + }, + "6079": { + "op": "MSTORE" + }, + "6080": { + "op": "PUSH1", + "value": "0x1C" + }, + "6082": { + "op": "DUP6" + }, + "6083": { + "op": "SWAP1" + }, + "6084": { + "op": "MSTORE" + }, + "6085": { + "op": "PUSH1", + "value": "0x3C" + }, + "6087": { + "op": "SWAP1" + }, + "6088": { + "op": "KECCAK256" + }, + "6089": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1125, + 1165 + ], + "op": "PUSH2", + "path": "96", + "statement": 58, + "value": "0x17DA" + }, + "6092": { + "op": "DUP2" + }, + "6093": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1728" + }, + "6096": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x100" + }, + "6099": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "DUP10", + "path": "96" + }, + "6100": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "ADD", + "path": "96" + }, + "6101": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "DUP10", + "path": "96" + }, + "6102": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1148, + 1164 + ], + "op": "PUSH2", + "path": "96", + "value": "0x257B" + }, + "6105": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1148, + 1164 + ], + "op": "JUMP", + "path": "96" + }, + "6106": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1125, + 1165 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6107": { + "op": "POP" + }, + "6108": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP1", + "path": "96" + }, + "6109": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP4", + "path": "96" + }, + "6110": { + "op": "POP" + }, + "6111": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1097, + 1165 + ], + "op": "SWAP2", + "path": "96" + }, + "6112": { + "op": "POP" + }, + "6113": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1189, + 1215 + ], + "op": "PUSH0", + "path": "96" + }, + "6114": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1185 + ], + "op": "DUP3", + "path": "96" + }, + "6115": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH1", + "path": "96", + "value": "0x3" + }, + "6117": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "DUP2", + "path": "96" + }, + "6118": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "GT", + "path": "96" + }, + "6119": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "ISZERO", + "path": "96" + }, + "6120": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x17F3" + }, + "6123": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "JUMPI", + "path": "96" + }, + "6124": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x17F3" + }, + "6127": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "PUSH2", + "path": "96", + "value": "0x26E1" + }, + "6130": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1180, + 1215 + ], + "op": "JUMP", + "path": "96" + }, + "6131": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6132": { + "branch": 82, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1215 + ], + "op": "EQ", + "path": "96" + }, + "6133": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "DUP1", + "path": "96" + }, + "6134": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "ISZERO", + "path": "96" + }, + "6135": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1804" + }, + "6138": { + "branch": 82, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "JUMPI", + "path": "96" + }, + "6139": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1180, + 1246 + ], + "op": "POP", + "path": "96" + }, + "6140": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1246 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1804" + }, + "6143": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1230, + 1245 + ], + "op": "DUP4", + "path": "96" + }, + "6144": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1229 + ], + "op": "PUSH2", + "path": "96", + "value": "0x9A5" + }, + "6147": { + "fn": "HyperAccount._validateSignature", + "jump": "i", + "offset": [ + 1219, + 1246 + ], + "op": "JUMP", + "path": "96" + }, + "6148": { + "branch": 83, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1219, + 1246 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6149": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "ISZERO", + "path": "96" + }, + "6150": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "PUSH2", + "path": "96", + "value": "0x1814" + }, + "6153": { + "branch": 83, + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "JUMPI", + "path": "96" + }, + "6154": { + "offset": [ + 730, + 731 + ], + "op": "PUSH0", + "path": "109" + }, + "6155": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "SWAP4", + "path": "96", + "statement": 59 + }, + "6156": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "6157": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "6158": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "6159": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "POP", + "path": "96" + }, + "6160": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "PUSH2", + "path": "96", + "value": "0x5EC" + }, + "6163": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1262, + 1293 + ], + "op": "JUMP", + "path": "96" + }, + "6164": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 1176, + 1304 + ], + "op": "JUMPDEST", + "path": "96" + }, + "6165": { + "op": "POP" + }, + "6166": { + "offset": [ + 785, + 786 + ], + "op": "PUSH1", + "path": "109", + "value": "0x1" + }, + "6168": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 785, + 786 + ], + "op": "SWAP6", + "path": "109" + }, + "6169": { + "fn": "HyperAccount._validateSignature", + "offset": [ + 525, + 1349 + ], + "op": "SWAP5", + "path": "96" + }, + "6170": { + "op": "POP" + }, + "6171": { + "op": "POP" + }, + "6172": { + "op": "POP" + }, + "6173": { + "op": "POP" + }, + "6174": { + "op": "POP" + }, + "6175": { + "fn": "HyperAccount._validateSignature", + "jump": "o", + "offset": [ + 525, + 1349 + ], + "op": "JUMP", + "path": "96" + }, + "6176": { + "op": "JUMPDEST" + }, + "6177": { + "op": "DUP1" + }, + "6178": { + "op": "MLOAD" + }, + "6179": { + "op": "PUSH1", + "value": "0x20" + }, + "6181": { + "op": "DUP3" + }, + "6182": { + "op": "ADD" + }, + "6183": { + "op": "REVERT" + }, + "6184": { + "op": "JUMPDEST" + }, + "6185": { + "op": "PUSH2", + "value": "0x1831" + }, + "6188": { + "op": "DUP3" + }, + "6189": { + "op": "PUSH2", + "value": "0x1BBA" + }, + "6192": { + "jump": "i", + "op": "JUMP" + }, + "6193": { + "op": "JUMPDEST" + }, + "6194": { + "op": "PUSH1", + "value": "0x40" + }, + "6196": { + "op": "MLOAD" + }, + "6197": { + "op": "PUSH1", + "value": "0x1" + }, + "6199": { + "op": "PUSH1", + "value": "0x1" + }, + "6201": { + "op": "PUSH1", + "value": "0xA0" + }, + "6203": { + "op": "SHL" + }, + "6204": { + "op": "SUB" + }, + "6205": { + "op": "DUP4" + }, + "6206": { + "op": "AND" + }, + "6207": { + "op": "SWAP1" + }, + "6208": { + "op": "PUSH32", + "value": "0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B" + }, + "6241": { + "op": "SWAP1" + }, + "6242": { + "op": "PUSH0" + }, + "6243": { + "op": "SWAP1" + }, + "6244": { + "op": "LOG2" + }, + "6245": { + "op": "DUP1" + }, + "6246": { + "op": "MLOAD" + }, + "6247": { + "op": "ISZERO" + }, + "6248": { + "op": "PUSH2", + "value": "0x1875" + }, + "6251": { + "op": "JUMPI" + }, + "6252": { + "op": "PUSH2", + "value": "0x1389" + }, + "6255": { + "op": "DUP3" + }, + "6256": { + "op": "DUP3" + }, + "6257": { + "op": "PUSH2", + "value": "0x1C1D" + }, + "6260": { + "jump": "i", + "op": "JUMP" + }, + "6261": { + "op": "JUMPDEST" + }, + "6262": { + "op": "PUSH2", + "value": "0x935" + }, + "6265": { + "op": "PUSH2", + "value": "0x1C8F" + }, + "6268": { + "jump": "i", + "op": "JUMP" + }, + "6269": { + "fn": "Mech._exec", + "offset": [ + 3995, + 4494 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6270": { + "fn": "Mech._exec", + "offset": [ + 4161, + 4173 + ], + "op": "PUSH0", + "path": "111" + }, + "6271": { + "fn": "Mech._exec", + "offset": [ + 4175, + 4198 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "6273": { + "offset": [ + 1240, + 1262 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1889" + }, + "6276": { + "offset": [ + 1251, + 1261 + ], + "op": "CALLER", + "path": "111" + }, + "6277": { + "offset": [ + 1240, + 1250 + ], + "op": "PUSH2", + "path": "111", + "value": "0x9A5" + }, + "6280": { + "jump": "i", + "offset": [ + 1240, + 1262 + ], + "op": "JUMP", + "path": "111" + }, + "6281": { + "branch": 92, + "fn": "Mech._exec", + "offset": [ + 1240, + 1262 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6282": { + "offset": [ + 1239, + 1262 + ], + "op": "ISZERO", + "path": "111" + }, + "6283": { + "offset": [ + 1239, + 1301 + ], + "op": "DUP1", + "path": "111" + }, + "6284": { + "fn": "Mech._exec", + "offset": [ + 1239, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "6285": { + "fn": "Mech._exec", + "offset": [ + 1239, + 1301 + ], + "op": "PUSH2", + "path": "111", + "value": "0x18AA" + }, + "6288": { + "branch": 92, + "offset": [ + 1239, + 1301 + ], + "op": "JUMPI", + "path": "111" + }, + "6289": { + "op": "POP" + }, + "6290": { + "offset": [ + 1266, + 1276 + ], + "op": "CALLER", + "path": "111" + }, + "6291": { + "offset": [ + 961, + 1003 + ], + "op": "PUSH20", + "path": "109", + "value": "0x4337084D9E255FF0702461CF8895CE9E3B5FF108" + }, + "6312": { + "offset": [ + 1266, + 1301 + ], + "op": "EQ", + "path": "111" + }, + "6313": { + "branch": 93, + "fn": "Mech._exec", + "offset": [ + 1266, + 1301 + ], + "op": "ISZERO", + "path": "111" + }, + "6314": { + "offset": [ + 1239, + 1301 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6315": { + "offset": [ + 1235, + 1360 + ], + "op": "ISZERO", + "path": "111" + }, + "6316": { + "fn": "Mech._exec", + "offset": [ + 1235, + 1360 + ], + "op": "PUSH2", + "path": "111", + "value": "0x18C8" + }, + "6319": { + "branch": 93, + "offset": [ + 1235, + 1360 + ], + "op": "JUMPI", + "path": "111" + }, + "6320": { + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6322": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "6323": { + "op": "PUSH4", + "value": "0x47802953" + }, + "6328": { + "op": "PUSH1", + "value": "0xE1" + }, + "6330": { + "op": "SHL" + }, + "6331": { + "offset": [ + 1324, + 1349 + ], + "op": "DUP2", + "path": "111" + }, + "6332": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MSTORE", + "path": "111" + }, + "6333": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "6335": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "ADD", + "path": "111" + }, + "6336": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6338": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "MLOAD", + "path": "111" + }, + "6339": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "DUP1", + "path": "111" + }, + "6340": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP2", + "path": "111" + }, + "6341": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SUB", + "path": "111" + }, + "6342": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "SWAP1", + "path": "111" + }, + "6343": { + "fn": "Mech._exec", + "offset": [ + 1324, + 1349 + ], + "op": "REVERT", + "path": "111" + }, + "6344": { + "offset": [ + 1235, + 1360 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6345": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4227 + ], + "op": "DUP4", + "path": "111" + }, + "6346": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "6348": { + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "AND", + "path": "111" + }, + "6349": { + "fn": "Mech._exec", + "offset": [ + 4231, + 4232 + ], + "op": "PUSH0", + "path": "111" + }, + "6350": { + "branch": 94, + "fn": "Mech._exec", + "offset": [ + 4218, + 4232 + ], + "op": "SUB", + "path": "111" + }, + "6351": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1939" + }, + "6354": { + "branch": 94, + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMPI", + "path": "111" + }, + "6355": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4274 + ], + "op": "DUP8", + "path": "111", + "statement": 60 + }, + "6356": { + "op": "PUSH1", + "value": "0x1" + }, + "6358": { + "op": "PUSH1", + "value": "0x1" + }, + "6360": { + "op": "PUSH1", + "value": "0xA0" + }, + "6362": { + "op": "SHL" + }, + "6363": { + "op": "SUB" + }, + "6364": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4279 + ], + "op": "AND", + "path": "111" + }, + "6365": { + "fn": "Mech._exec", + "offset": [ + 4285, + 4290 + ], + "op": "DUP4", + "path": "111" + }, + "6366": { + "fn": "Mech._exec", + "offset": [ + 4299, + 4304 + ], + "op": "DUP9", + "path": "111" + }, + "6367": { + "fn": "Mech._exec", + "offset": [ + 4306, + 4310 + ], + "op": "DUP9", + "path": "111" + }, + "6368": { + "fn": "Mech._exec", + "offset": [ + 4306, + 4310 + ], + "op": "DUP9", + "path": "111" + }, + "6369": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6371": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "6372": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x18EE" + }, + "6375": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP3", + "path": "111" + }, + "6376": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "6377": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "6378": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x26F5" + }, + "6381": { + "fn": "Mech._exec", + "jump": "i", + "offset": [ + 4272, + 4311 + ], + "op": "JUMP", + "path": "111" + }, + "6382": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6383": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "6384": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6386": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "6387": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP1", + "path": "111" + }, + "6388": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP4", + "path": "111" + }, + "6389": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SUB", + "path": "111" + }, + "6390": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP2", + "path": "111" + }, + "6391": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP6", + "path": "111" + }, + "6392": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP9", + "path": "111" + }, + "6393": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP9", + "path": "111" + }, + "6394": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "CALL", + "path": "111" + }, + "6395": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP4", + "path": "111" + }, + "6396": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6397": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6398": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6399": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6400": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6401": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP1", + "path": "111" + }, + "6402": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "6403": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP2", + "path": "111" + }, + "6404": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "EQ", + "path": "111" + }, + "6405": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1929" + }, + "6408": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPI", + "path": "111" + }, + "6409": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6411": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MLOAD", + "path": "111" + }, + "6412": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "6413": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6414": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "6416": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "NOT", + "path": "111" + }, + "6417": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x3F" + }, + "6419": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6420": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6421": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "AND", + "path": "111" + }, + "6422": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP3", + "path": "111" + }, + "6423": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6424": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6426": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MSTORE", + "path": "111" + }, + "6427": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6428": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP3", + "path": "111" + }, + "6429": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "MSTORE", + "path": "111" + }, + "6430": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6431": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH0", + "path": "111" + }, + "6432": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "6434": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "DUP5", + "path": "111" + }, + "6435": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "ADD", + "path": "111" + }, + "6436": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "6437": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH2", + "path": "111", + "value": "0x192E" + }, + "6440": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMP", + "path": "111" + }, + "6441": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6442": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "PUSH1", + "path": "111", + "value": "0x60" + }, + "6444": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "SWAP2", + "path": "111" + }, + "6445": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "POP", + "path": "111" + }, + "6446": { + "fn": "Mech._exec", + "offset": [ + 4272, + 4311 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6447": { + "op": "POP" + }, + "6448": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "6449": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP3", + "path": "111" + }, + "6450": { + "op": "POP" + }, + "6451": { + "fn": "Mech._exec", + "offset": [ + 4248, + 4311 + ], + "op": "SWAP1", + "path": "111" + }, + "6452": { + "op": "POP" + }, + "6453": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x13DA" + }, + "6456": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMP", + "path": "111" + }, + "6457": { + "fn": "Mech._exec", + "offset": [ + 4214, + 4488 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6458": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4341 + ], + "op": "DUP4", + "path": "111" + }, + "6459": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "PUSH1", + "path": "111", + "value": "0xFF" + }, + "6461": { + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "AND", + "path": "111" + }, + "6462": { + "fn": "Mech._exec", + "offset": [ + 4345, + 4346 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1" + }, + "6464": { + "branch": 95, + "fn": "Mech._exec", + "offset": [ + 4332, + 4346 + ], + "op": "SUB", + "path": "111" + }, + "6465": { + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1998" + }, + "6468": { + "branch": 95, + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "JUMPI", + "path": "111" + }, + "6469": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4388 + ], + "op": "DUP8", + "path": "111", + "statement": 61 + }, + "6470": { + "op": "PUSH1", + "value": "0x1" + }, + "6472": { + "op": "PUSH1", + "value": "0x1" + }, + "6474": { + "op": "PUSH1", + "value": "0xA0" + }, + "6476": { + "op": "SHL" + }, + "6477": { + "op": "SUB" + }, + "6478": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4401 + ], + "op": "AND", + "path": "111" + }, + "6479": { + "fn": "Mech._exec", + "offset": [ + 4407, + 4412 + ], + "op": "DUP4", + "path": "111" + }, + "6480": { + "fn": "Mech._exec", + "offset": [ + 4414, + 4418 + ], + "op": "DUP8", + "path": "111" + }, + "6481": { + "fn": "Mech._exec", + "offset": [ + 4414, + 4418 + ], + "op": "DUP8", + "path": "111" + }, + "6482": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6484": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6485": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x195F" + }, + "6488": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP3", + "path": "111" + }, + "6489": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP2", + "path": "111" + }, + "6490": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP1", + "path": "111" + }, + "6491": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x26F5" + }, + "6494": { + "fn": "Mech._exec", + "jump": "i", + "offset": [ + 4386, + 4419 + ], + "op": "JUMP", + "path": "111" + }, + "6495": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6496": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6497": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6499": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6500": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP1", + "path": "111" + }, + "6501": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP4", + "path": "111" + }, + "6502": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SUB", + "path": "111" + }, + "6503": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP2", + "path": "111" + }, + "6504": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP7", + "path": "111" + }, + "6505": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP7", + "path": "111" + }, + "6506": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DELEGATECALL", + "path": "111" + }, + "6507": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP3", + "path": "111" + }, + "6508": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6509": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6510": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6511": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6512": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP1", + "path": "111" + }, + "6513": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6514": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP2", + "path": "111" + }, + "6515": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "EQ", + "path": "111" + }, + "6516": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1929" + }, + "6519": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMPI", + "path": "111" + }, + "6520": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6522": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MLOAD", + "path": "111" + }, + "6523": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "SWAP2", + "path": "111" + }, + "6524": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "POP", + "path": "111" + }, + "6525": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x1F" + }, + "6527": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "NOT", + "path": "111" + }, + "6528": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x3F" + }, + "6530": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6531": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6532": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "AND", + "path": "111" + }, + "6533": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP3", + "path": "111" + }, + "6534": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6535": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x40" + }, + "6537": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MSTORE", + "path": "111" + }, + "6538": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6539": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP3", + "path": "111" + }, + "6540": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "MSTORE", + "path": "111" + }, + "6541": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATASIZE", + "path": "111" + }, + "6542": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH0", + "path": "111" + }, + "6543": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH1", + "path": "111", + "value": "0x20" + }, + "6545": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "DUP5", + "path": "111" + }, + "6546": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "ADD", + "path": "111" + }, + "6547": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "RETURNDATACOPY", + "path": "111" + }, + "6548": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "PUSH2", + "path": "111", + "value": "0x192E" + }, + "6551": { + "fn": "Mech._exec", + "offset": [ + 4386, + 4419 + ], + "op": "JUMP", + "path": "111" + }, + "6552": { + "fn": "Mech._exec", + "offset": [ + 4328, + 4488 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6553": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH1", + "path": "111", + "statement": 62, + "value": "0x40" + }, + "6555": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "MLOAD", + "path": "111" + }, + "6556": { + "op": "PUSH3", + "value": "0x461BCD" + }, + "6560": { + "op": "PUSH1", + "value": "0xE5" + }, + "6562": { + "op": "SHL" + }, + "6563": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "DUP2", + "path": "111" + }, + "6564": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "MSTORE", + "path": "111" + }, + "6565": { + "op": "PUSH1", + "value": "0x20" + }, + "6567": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH1", + "path": "111", + "value": "0x4" + }, + "6569": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "DUP3", + "path": "111" + }, + "6570": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "ADD", + "path": "111" + }, + "6571": { + "op": "MSTORE" + }, + "6572": { + "op": "PUSH1", + "value": "0x11" + }, + "6574": { + "op": "PUSH1", + "value": "0x24" + }, + "6576": { + "op": "DUP3" + }, + "6577": { + "op": "ADD" + }, + "6578": { + "op": "MSTORE" + }, + "6579": { + "op": "PUSH17", + "value": "0x24B73B30B634B21037B832B930BA34B7B7" + }, + "6597": { + "op": "PUSH1", + "value": "0x79" + }, + "6599": { + "op": "SHL" + }, + "6600": { + "op": "PUSH1", + "value": "0x44" + }, + "6602": { + "op": "DUP3" + }, + "6603": { + "op": "ADD" + }, + "6604": { + "op": "MSTORE" + }, + "6605": { + "op": "PUSH1", + "value": "0x64" + }, + "6607": { + "op": "ADD" + }, + "6608": { + "fn": "Mech._exec", + "offset": [ + 4450, + 4477 + ], + "op": "PUSH2", + "path": "111", + "value": "0x901" + }, + "6611": { + "op": "JUMP" + }, + "6612": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7084, + 7225 + ], + "op": "JUMPDEST", + "path": "67" + }, + "6613": { + "fn": "Initializable._getInitializableStorage", + "offset": [ + 8870, + 8891 + ], + "op": "PUSH32", + "path": "67", + "value": "0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00" + }, + "6646": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "SLOAD", + "path": "67", + "statement": 63 + }, + "6647": { + "op": "PUSH1", + "value": "0x1" + }, + "6649": { + "op": "PUSH1", + "value": "0x40" + }, + "6651": { + "op": "SHL" + }, + "6652": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "SWAP1", + "path": "67" + }, + "6653": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "DIV", + "path": "67" + }, + "6654": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "PUSH1", + "path": "67", + "value": "0xFF" + }, + "6656": { + "fn": "Initializable._isInitializing", + "offset": [ + 8560, + 8600 + ], + "op": "AND", + "path": "67" + }, + "6657": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7146, + 7219 + ], + "op": "PUSH2", + "path": "67", + "statement": 64, + "value": "0x1094" + }, + "6660": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7146, + 7219 + ], + "op": "JUMPI", + "path": "67" + }, + "6661": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "6663": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MLOAD", + "path": "67" + }, + "6664": { + "op": "PUSH4", + "value": "0x1AFCD79F" + }, + "6669": { + "op": "PUSH1", + "value": "0xE3" + }, + "6671": { + "op": "SHL" + }, + "6672": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "DUP2", + "path": "67" + }, + "6673": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MSTORE", + "path": "67" + }, + "6674": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x4" + }, + "6676": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "ADD", + "path": "67" + }, + "6677": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "PUSH1", + "path": "67", + "value": "0x40" + }, + "6679": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "MLOAD", + "path": "67" + }, + "6680": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "DUP1", + "path": "67" + }, + "6681": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SWAP2", + "path": "67" + }, + "6682": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SUB", + "path": "67" + }, + "6683": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "SWAP1", + "path": "67" + }, + "6684": { + "fn": "Initializable._checkInitializing", + "offset": [ + 7191, + 7208 + ], + "op": "REVERT", + "path": "67" + }, + "6685": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3599, + 3929 + ], + "op": "JUMPDEST", + "path": "75" + }, + "6686": { + "offset": [ + 6931, + 6951 + ], + "op": "PUSH2", + "path": "67", + "value": "0x1A25" + }, + "6689": { + "offset": [ + 6931, + 6949 + ], + "op": "PUSH2", + "path": "67", + "value": "0x19D4" + }, + "6692": { + "jump": "i", + "offset": [ + 6931, + 6951 + ], + "op": "JUMP", + "path": "67" + }, + "6693": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 6931, + 6951 + ], + "op": "JUMPDEST", + "path": "67" + }, + "6694": { + "op": "PUSH0" + }, + "6695": { + "op": "MLOAD" + }, + "6696": { + "op": "PUSH1", + "value": "0x20" + }, + "6698": { + "op": "PUSH2", + "value": "0x2851" + }, + "6701": { + "op": "PUSH0" + }, + "6702": { + "op": "CODECOPY" + }, + "6703": { + "op": "PUSH0" + }, + "6704": { + "op": "MLOAD" + }, + "6705": { + "op": "SWAP1" + }, + "6706": { + "op": "PUSH0" + }, + "6707": { + "op": "MSTORE" + }, + "6708": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3773 + ], + "op": "PUSH32", + "path": "75", + "statement": 65, + "value": "0xA16A46D94261C7517CC8FF89F61C0CE93598E3C849801011DEE649A6A557D102" + }, + "6741": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1A5E" + }, + "6744": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3776, + 3780 + ], + "op": "DUP5", + "path": "75" + }, + "6745": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3773 + ], + "op": "DUP3", + "path": "75" + }, + "6746": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2748" + }, + "6749": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "i", + "offset": [ + 3766, + 3780 + ], + "op": "JUMP", + "path": "75" + }, + "6750": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3766, + 3780 + ], + "op": "JUMPDEST", + "path": "75" + }, + "6751": { + "op": "POP" + }, + "6752": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "PUSH1", + "path": "75", + "statement": 66, + "value": "0x3" + }, + "6754": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "DUP2", + "path": "75" + }, + "6755": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "ADD", + "path": "75" + }, + "6756": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "PUSH2", + "path": "75", + "value": "0x1A6D" + }, + "6759": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3803, + 3810 + ], + "op": "DUP4", + "path": "75" + }, + "6760": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3800 + ], + "op": "DUP3", + "path": "75" + }, + "6761": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "PUSH2", + "path": "75", + "value": "0x2748" + }, + "6764": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "i", + "offset": [ + 3790, + 3810 + ], + "op": "JUMP", + "path": "75" + }, + "6765": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3790, + 3810 + ], + "op": "JUMPDEST", + "path": "75" + }, + "6766": { + "op": "POP" + }, + "6767": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3891, + 3892 + ], + "op": "PUSH0", + "path": "75", + "statement": 67 + }, + "6768": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "DUP1", + "path": "75" + }, + "6769": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "DUP3", + "path": "75" + }, + "6770": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3875, + 3892 + ], + "op": "SSTORE", + "path": "75" + }, + "6771": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "PUSH1", + "path": "75", + "statement": 68, + "value": "0x1" + }, + "6773": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "SWAP1", + "path": "75" + }, + "6774": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "SWAP2", + "path": "75" + }, + "6775": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3918 + ], + "op": "ADD", + "path": "75" + }, + "6776": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "offset": [ + 3902, + 3922 + ], + "op": "SSTORE", + "path": "75" + }, + "6777": { + "op": "POP" + }, + "6778": { + "op": "POP" + }, + "6779": { + "fn": "EIP712Upgradeable.__EIP712_init_unchained", + "jump": "o", + "offset": [ + 3599, + 3929 + ], + "op": "JUMP", + "path": "75" + }, + "6780": { + "op": "JUMPDEST" + }, + "6781": { + "op": "PUSH1", + "value": "0x40" + }, + "6783": { + "op": "DUP1" + }, + "6784": { + "op": "MLOAD" + }, + "6785": { + "op": "PUSH1", + "value": "0x60" + }, + "6787": { + "op": "DUP1" + }, + "6788": { + "op": "DUP3" + }, + "6789": { + "op": "MSTORE" + }, + "6790": { + "op": "PUSH1", + "value": "0x80" + }, + "6792": { + "op": "DUP3" + }, + "6793": { + "op": "ADD" + }, + "6794": { + "op": "SWAP1" + }, + "6795": { + "op": "SWAP3" + }, + "6796": { + "op": "MSTORE" + }, + "6797": { + "op": "PUSH0" + }, + "6798": { + "op": "SWAP2" + }, + "6799": { + "op": "DUP3" + }, + "6800": { + "op": "SWAP2" + }, + "6801": { + "op": "DUP3" + }, + "6802": { + "op": "SWAP2" + }, + "6803": { + "op": "DUP3" + }, + "6804": { + "op": "SWAP2" + }, + "6805": { + "op": "SWAP1" + }, + "6806": { + "op": "PUSH1", + "value": "0x20" + }, + "6808": { + "op": "DUP3" + }, + "6809": { + "op": "ADD" + }, + "6810": { + "op": "DUP2" + }, + "6811": { + "op": "DUP1" + }, + "6812": { + "op": "CALLDATASIZE" + }, + "6813": { + "op": "DUP4" + }, + "6814": { + "op": "CALLDATACOPY" + }, + "6815": { + "op": "ADD" + }, + "6816": { + "op": "SWAP1" + }, + "6817": { + "op": "POP" + }, + "6818": { + "op": "POP" + }, + "6819": { + "op": "SWAP1" + }, + "6820": { + "op": "POP" + }, + "6821": { + "op": "PUSH1", + "value": "0x60" + }, + "6823": { + "op": "PUSH1", + "value": "0x4D" + }, + "6825": { + "op": "PUSH1", + "value": "0x20" + }, + "6827": { + "op": "DUP4" + }, + "6828": { + "op": "ADD" + }, + "6829": { + "op": "DUP8" + }, + "6830": { + "op": "EXTCODECOPY" + }, + "6831": { + "op": "DUP1" + }, + "6832": { + "op": "DUP1" + }, + "6833": { + "op": "PUSH1", + "value": "0x20" + }, + "6835": { + "op": "ADD" + }, + "6836": { + "op": "SWAP1" + }, + "6837": { + "op": "MLOAD" + }, + "6838": { + "op": "DUP2" + }, + "6839": { + "op": "ADD" + }, + "6840": { + "op": "SWAP1" + }, + "6841": { + "op": "PUSH2", + "value": "0x1AC2" + }, + "6844": { + "op": "SWAP2" + }, + "6845": { + "op": "SWAP1" + }, + "6846": { + "op": "PUSH2", + "value": "0x2802" + }, + "6849": { + "jump": "i", + "op": "JUMP" + }, + "6850": { + "op": "JUMPDEST" + }, + "6851": { + "op": "SWAP4" + }, + "6852": { + "op": "POP" + }, + "6853": { + "op": "SWAP4" + }, + "6854": { + "op": "POP" + }, + "6855": { + "op": "SWAP4" + }, + "6856": { + "op": "POP" + }, + "6857": { + "op": "POP" + }, + "6858": { + "op": "SWAP2" + }, + "6859": { + "op": "SWAP4" + }, + "6860": { + "op": "SWAP1" + }, + "6861": { + "op": "SWAP3" + }, + "6862": { + "op": "POP" + }, + "6863": { + "jump": "o", + "op": "JUMP" + }, + "6864": { + "fn": "Mech.supportsInterface", + "offset": [ + 7049, + 7459 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6865": { + "fn": "Mech.supportsInterface", + "offset": [ + 7125, + 7129 + ], + "op": "PUSH0", + "path": "111" + }, + "6866": { + "op": "PUSH1", + "value": "0x1" + }, + "6868": { + "op": "PUSH1", + "value": "0x1" + }, + "6870": { + "op": "PUSH1", + "value": "0xE0" + }, + "6872": { + "op": "SHL" + }, + "6873": { + "op": "SUB" + }, + "6874": { + "op": "NOT" + }, + "6875": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "DUP3", + "path": "111", + "statement": 69 + }, + "6876": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "AND", + "path": "111" + }, + "6877": { + "op": "PUSH4", + "value": "0x3CE4A3E9" + }, + "6882": { + "op": "PUSH1", + "value": "0xE0" + }, + "6884": { + "op": "SHL" + }, + "6885": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "EQ", + "path": "111" + }, + "6886": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7186 + ], + "op": "DUP1", + "path": "111" + }, + "6887": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1B00" + }, + "6890": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "JUMPI", + "path": "111" + }, + "6891": { + "op": "POP" + }, + "6892": { + "op": "PUSH1", + "value": "0x1" + }, + "6894": { + "op": "PUSH1", + "value": "0x1" + }, + "6896": { + "op": "PUSH1", + "value": "0xE0" + }, + "6898": { + "op": "SHL" + }, + "6899": { + "op": "SUB" + }, + "6900": { + "op": "NOT" + }, + "6901": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "DUP3", + "path": "111" + }, + "6902": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "AND", + "path": "111" + }, + "6903": { + "op": "PUSH4", + "value": "0x1FFC9A7" + }, + "6908": { + "op": "PUSH1", + "value": "0xE0" + }, + "6910": { + "op": "SHL" + }, + "6911": { + "fn": "Mech.supportsInterface", + "offset": [ + 7190, + 7230 + ], + "op": "EQ", + "path": "111" + }, + "6912": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7230 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6913": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "DUP1", + "path": "111" + }, + "6914": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1B1B" + }, + "6917": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "JUMPI", + "path": "111" + }, + "6918": { + "op": "POP" + }, + "6919": { + "op": "PUSH1", + "value": "0x1" + }, + "6921": { + "op": "PUSH1", + "value": "0x1" + }, + "6923": { + "op": "PUSH1", + "value": "0xE0" + }, + "6925": { + "op": "SHL" + }, + "6926": { + "op": "SUB" + }, + "6927": { + "op": "NOT" + }, + "6928": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "DUP3", + "path": "111" + }, + "6929": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "AND", + "path": "111" + }, + "6930": { + "op": "PUSH4", + "value": "0x6608BDF" + }, + "6935": { + "op": "PUSH1", + "value": "0xE2" + }, + "6937": { + "op": "SHL" + }, + "6938": { + "fn": "Mech.supportsInterface", + "offset": [ + 7246, + 7287 + ], + "op": "EQ", + "path": "111" + }, + "6939": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7287 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6940": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "DUP1", + "path": "111" + }, + "6941": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1B36" + }, + "6944": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "JUMPI", + "path": "111" + }, + "6945": { + "op": "POP" + }, + "6946": { + "op": "PUSH1", + "value": "0x1" + }, + "6948": { + "op": "PUSH1", + "value": "0x1" + }, + "6950": { + "op": "PUSH1", + "value": "0xE0" + }, + "6952": { + "op": "SHL" + }, + "6953": { + "op": "SUB" + }, + "6954": { + "op": "NOT" + }, + "6955": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "DUP3", + "path": "111" + }, + "6956": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "AND", + "path": "111" + }, + "6957": { + "op": "PUSH4", + "value": "0xB135D3F" + }, + "6962": { + "op": "PUSH1", + "value": "0xE1" + }, + "6964": { + "op": "SHL" + }, + "6965": { + "fn": "Mech.supportsInterface", + "offset": [ + 7291, + 7332 + ], + "op": "EQ", + "path": "111" + }, + "6966": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7332 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6967": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "DUP1", + "path": "111" + }, + "6968": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "PUSH2", + "path": "111", + "value": "0x1B51" + }, + "6971": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "JUMPI", + "path": "111" + }, + "6972": { + "op": "POP" + }, + "6973": { + "op": "PUSH1", + "value": "0x1" + }, + "6975": { + "op": "PUSH1", + "value": "0x1" + }, + "6977": { + "op": "PUSH1", + "value": "0xE0" + }, + "6979": { + "op": "SHL" + }, + "6980": { + "op": "SUB" + }, + "6981": { + "op": "NOT" + }, + "6982": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "DUP3", + "path": "111" + }, + "6983": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "AND", + "path": "111" + }, + "6984": { + "op": "PUSH4", + "value": "0x2711897" + }, + "6989": { + "op": "PUSH1", + "value": "0xE5" + }, + "6991": { + "op": "SHL" + }, + "6992": { + "fn": "Mech.supportsInterface", + "offset": [ + 7348, + 7397 + ], + "op": "EQ", + "path": "111" + }, + "6993": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7397 + ], + "op": "JUMPDEST", + "path": "111" + }, + "6994": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "DUP1", + "path": "111" + }, + "6995": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "PUSH2", + "path": "111", + "value": "0x5EC" + }, + "6998": { + "fn": "Mech.supportsInterface", + "offset": [ + 7148, + 7452 + ], + "op": "JUMPI", + "path": "111" + }, + "6999": { + "op": "POP" + }, + "7000": { + "op": "PUSH1", + "value": "0x1" + }, + "7002": { + "op": "PUSH1", + "value": "0x1" + }, + "7004": { + "op": "PUSH1", + "value": "0xE0" + }, + "7006": { + "op": "SHL" + }, + "7007": { + "op": "SUB" + }, + "7008": { + "op": "NOT" + }, + "7009": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "DUP3", + "path": "111" + }, + "7010": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "AND", + "path": "111" + }, + "7011": { + "op": "PUSH4", + "value": "0x51945447" + }, + "7016": { + "op": "PUSH1", + "value": "0xE0" + }, + "7018": { + "op": "SHL" + }, + "7019": { + "fn": "Mech.supportsInterface", + "offset": [ + 7401, + 7452 + ], + "op": "EQ", + "path": "111" + }, + "7020": { + "fn": "Mech.supportsInterface", + "offset": [ + 7141, + 7452 + ], + "op": "SWAP3", + "path": "111" + }, + "7021": { + "fn": "Mech.supportsInterface", + "offset": [ + 7049, + 7459 + ], + "op": "SWAP2", + "path": "111" + }, + "7022": { + "op": "POP" + }, + "7023": { + "op": "POP" + }, + "7024": { + "fn": "Mech.supportsInterface", + "jump": "o", + "offset": [ + 7049, + 7459 + ], + "op": "JUMP", + "path": "111" + }, + "7025": { + "op": "JUMPDEST" + }, + "7026": { + "op": "PUSH0" + }, + "7027": { + "op": "PUSH0" + }, + "7028": { + "op": "PUSH0" + }, + "7029": { + "op": "DUP4" + }, + "7030": { + "op": "MLOAD" + }, + "7031": { + "op": "PUSH1", + "value": "0x41" + }, + "7033": { + "op": "SUB" + }, + "7034": { + "op": "PUSH2", + "value": "0x1BA8" + }, + "7037": { + "op": "JUMPI" + }, + "7038": { + "op": "PUSH1", + "value": "0x20" + }, + "7040": { + "op": "DUP5" + }, + "7041": { + "op": "ADD" + }, + "7042": { + "op": "MLOAD" + }, + "7043": { + "op": "PUSH1", + "value": "0x40" + }, + "7045": { + "op": "DUP6" + }, + "7046": { + "op": "ADD" + }, + "7047": { + "op": "MLOAD" + }, + "7048": { + "op": "PUSH1", + "value": "0x60" + }, + "7050": { + "op": "DUP7" + }, + "7051": { + "op": "ADD" + }, + "7052": { + "op": "MLOAD" + }, + "7053": { + "op": "PUSH0" + }, + "7054": { + "op": "BYTE" + }, + "7055": { + "op": "PUSH2", + "value": "0x1B9A" + }, + "7058": { + "op": "DUP9" + }, + "7059": { + "op": "DUP3" + }, + "7060": { + "op": "DUP6" + }, + "7061": { + "op": "DUP6" + }, + "7062": { + "op": "PUSH2", + "value": "0x157C" + }, + "7065": { + "jump": "i", + "op": "JUMP" + }, + "7066": { + "op": "JUMPDEST" + }, + "7067": { + "op": "SWAP6" + }, + "7068": { + "op": "POP" + }, + "7069": { + "op": "SWAP6" + }, + "7070": { + "op": "POP" + }, + "7071": { + "op": "SWAP6" + }, + "7072": { + "op": "POP" + }, + "7073": { + "op": "POP" + }, + "7074": { + "op": "POP" + }, + "7075": { + "op": "POP" + }, + "7076": { + "op": "PUSH2", + "value": "0x1BB3" + }, + "7079": { + "op": "JUMP" + }, + "7080": { + "op": "JUMPDEST" + }, + "7081": { + "op": "POP" + }, + "7082": { + "op": "POP" + }, + "7083": { + "op": "DUP2" + }, + "7084": { + "op": "MLOAD" + }, + "7085": { + "op": "PUSH0" + }, + "7086": { + "op": "SWAP2" + }, + "7087": { + "op": "POP" + }, + "7088": { + "op": "PUSH1", + "value": "0x2" + }, + "7090": { + "op": "SWAP1" + }, + "7091": { + "op": "JUMPDEST" + }, + "7092": { + "op": "SWAP3" + }, + "7093": { + "op": "POP" + }, + "7094": { + "op": "SWAP3" + }, + "7095": { + "op": "POP" + }, + "7096": { + "op": "SWAP3" + }, + "7097": { + "jump": "o", + "op": "JUMP" + }, + "7098": { + "op": "JUMPDEST" + }, + "7099": { + "op": "DUP1" + }, + "7100": { + "op": "PUSH1", + "value": "0x1" + }, + "7102": { + "op": "PUSH1", + "value": "0x1" + }, + "7104": { + "op": "PUSH1", + "value": "0xA0" + }, + "7106": { + "op": "SHL" + }, + "7107": { + "op": "SUB" + }, + "7108": { + "op": "AND" + }, + "7109": { + "op": "EXTCODESIZE" + }, + "7110": { + "op": "PUSH0" + }, + "7111": { + "op": "SUB" + }, + "7112": { + "op": "PUSH2", + "value": "0x1BEF" + }, + "7115": { + "op": "JUMPI" + }, + "7116": { + "op": "PUSH1", + "value": "0x40" + }, + "7118": { + "op": "MLOAD" + }, + "7119": { + "op": "PUSH4", + "value": "0x4C9C8CE3" + }, + "7124": { + "op": "PUSH1", + "value": "0xE0" + }, + "7126": { + "op": "SHL" + }, + "7127": { + "op": "DUP2" + }, + "7128": { + "op": "MSTORE" + }, + "7129": { + "op": "PUSH1", + "value": "0x1" + }, + "7131": { + "op": "PUSH1", + "value": "0x1" + }, + "7133": { + "op": "PUSH1", + "value": "0xA0" + }, + "7135": { + "op": "SHL" + }, + "7136": { + "op": "SUB" + }, + "7137": { + "op": "DUP3" + }, + "7138": { + "op": "AND" + }, + "7139": { + "op": "PUSH1", + "value": "0x4" + }, + "7141": { + "op": "DUP3" + }, + "7142": { + "op": "ADD" + }, + "7143": { + "op": "MSTORE" + }, + "7144": { + "op": "PUSH1", + "value": "0x24" + }, + "7146": { + "op": "ADD" + }, + "7147": { + "op": "PUSH2", + "value": "0x901" + }, + "7150": { + "op": "JUMP" + }, + "7151": { + "op": "JUMPDEST" + }, + "7152": { + "op": "PUSH0" + }, + "7153": { + "op": "MLOAD" + }, + "7154": { + "op": "PUSH1", + "value": "0x20" + }, + "7156": { + "op": "PUSH2", + "value": "0x2871" + }, + "7159": { + "op": "PUSH0" + }, + "7160": { + "op": "CODECOPY" + }, + "7161": { + "op": "PUSH0" + }, + "7162": { + "op": "MLOAD" + }, + "7163": { + "op": "SWAP1" + }, + "7164": { + "op": "PUSH0" + }, + "7165": { + "op": "MSTORE" + }, + "7166": { + "op": "DUP1" + }, + "7167": { + "op": "SLOAD" + }, + "7168": { + "op": "PUSH1", + "value": "0x1" + }, + "7170": { + "op": "PUSH1", + "value": "0x1" + }, + "7172": { + "op": "PUSH1", + "value": "0xA0" + }, + "7174": { + "op": "SHL" + }, + "7175": { + "op": "SUB" + }, + "7176": { + "op": "NOT" + }, + "7177": { + "op": "AND" + }, + "7178": { + "op": "PUSH1", + "value": "0x1" + }, + "7180": { + "op": "PUSH1", + "value": "0x1" + }, + "7182": { + "op": "PUSH1", + "value": "0xA0" + }, + "7184": { + "op": "SHL" + }, + "7185": { + "op": "SUB" + }, + "7186": { + "op": "SWAP3" + }, + "7187": { + "op": "SWAP1" + }, + "7188": { + "op": "SWAP3" + }, + "7189": { + "op": "AND" + }, + "7190": { + "op": "SWAP2" + }, + "7191": { + "op": "SWAP1" + }, + "7192": { + "op": "SWAP2" + }, + "7193": { + "op": "OR" + }, + "7194": { + "op": "SWAP1" + }, + "7195": { + "op": "SSTORE" + }, + "7196": { + "jump": "o", + "op": "JUMP" + }, + "7197": { + "op": "JUMPDEST" + }, + "7198": { + "op": "PUSH1", + "value": "0x60" + }, + "7200": { + "op": "PUSH0" + }, + "7201": { + "op": "PUSH0" + }, + "7202": { + "op": "DUP5" + }, + "7203": { + "op": "PUSH1", + "value": "0x1" + }, + "7205": { + "op": "PUSH1", + "value": "0x1" + }, + "7207": { + "op": "PUSH1", + "value": "0xA0" + }, + "7209": { + "op": "SHL" + }, + "7210": { + "op": "SUB" + }, + "7211": { + "op": "AND" + }, + "7212": { + "op": "DUP5" + }, + "7213": { + "op": "PUSH1", + "value": "0x40" + }, + "7215": { + "op": "MLOAD" + }, + "7216": { + "op": "PUSH2", + "value": "0x1C39" + }, + "7219": { + "op": "SWAP2" + }, + "7220": { + "op": "SWAP1" + }, + "7221": { + "op": "PUSH2", + "value": "0x283A" + }, + "7224": { + "jump": "i", + "op": "JUMP" + }, + "7225": { + "op": "JUMPDEST" + }, + "7226": { + "op": "PUSH0" + }, + "7227": { + "op": "PUSH1", + "value": "0x40" + }, + "7229": { + "op": "MLOAD" + }, + "7230": { + "op": "DUP1" + }, + "7231": { + "op": "DUP4" + }, + "7232": { + "op": "SUB" + }, + "7233": { + "op": "DUP2" + }, + "7234": { + "op": "DUP6" + }, + "7235": { + "op": "GAS" + }, + "7236": { + "op": "DELEGATECALL" + }, + "7237": { + "op": "SWAP2" + }, + "7238": { + "op": "POP" + }, + "7239": { + "op": "POP" + }, + "7240": { + "op": "RETURNDATASIZE" + }, + "7241": { + "op": "DUP1" + }, + "7242": { + "op": "PUSH0" + }, + "7243": { + "op": "DUP2" + }, + "7244": { + "op": "EQ" + }, + "7245": { + "op": "PUSH2", + "value": "0x1C71" + }, + "7248": { + "op": "JUMPI" + }, + "7249": { + "op": "PUSH1", + "value": "0x40" + }, + "7251": { + "op": "MLOAD" + }, + "7252": { + "op": "SWAP2" + }, + "7253": { + "op": "POP" + }, + "7254": { + "op": "PUSH1", + "value": "0x1F" + }, + "7256": { + "op": "NOT" + }, + "7257": { + "op": "PUSH1", + "value": "0x3F" + }, + "7259": { + "op": "RETURNDATASIZE" + }, + "7260": { + "op": "ADD" + }, + "7261": { + "op": "AND" + }, + "7262": { + "op": "DUP3" + }, + "7263": { + "op": "ADD" + }, + "7264": { + "op": "PUSH1", + "value": "0x40" + }, + "7266": { + "op": "MSTORE" + }, + "7267": { + "op": "RETURNDATASIZE" + }, + "7268": { + "op": "DUP3" + }, + "7269": { + "op": "MSTORE" + }, + "7270": { + "op": "RETURNDATASIZE" + }, + "7271": { + "op": "PUSH0" + }, + "7272": { + "op": "PUSH1", + "value": "0x20" + }, + "7274": { + "op": "DUP5" + }, + "7275": { + "op": "ADD" + }, + "7276": { + "op": "RETURNDATACOPY" + }, + "7277": { + "op": "PUSH2", + "value": "0x1C76" + }, + "7280": { + "op": "JUMP" + }, + "7281": { + "op": "JUMPDEST" + }, + "7282": { + "op": "PUSH1", + "value": "0x60" + }, + "7284": { + "op": "SWAP2" + }, + "7285": { + "op": "POP" + }, + "7286": { + "op": "JUMPDEST" + }, + "7287": { + "op": "POP" + }, + "7288": { + "op": "SWAP2" + }, + "7289": { + "op": "POP" + }, + "7290": { + "op": "SWAP2" + }, + "7291": { + "op": "POP" + }, + "7292": { + "op": "PUSH2", + "value": "0x1C86" + }, + "7295": { + "op": "DUP6" + }, + "7296": { + "op": "DUP4" + }, + "7297": { + "op": "DUP4" + }, + "7298": { + "op": "PUSH2", + "value": "0x1CAE" + }, + "7301": { + "jump": "i", + "op": "JUMP" + }, + "7302": { + "op": "JUMPDEST" + }, + "7303": { + "op": "SWAP6" + }, + "7304": { + "op": "SWAP5" + }, + "7305": { + "op": "POP" + }, + "7306": { + "op": "POP" + }, + "7307": { + "op": "POP" + }, + "7308": { + "op": "POP" + }, + "7309": { + "op": "POP" + }, + "7310": { + "jump": "o", + "op": "JUMP" + }, + "7311": { + "op": "JUMPDEST" + }, + "7312": { + "op": "CALLVALUE" + }, + "7313": { + "op": "ISZERO" + }, + "7314": { + "op": "PUSH2", + "value": "0x1094" + }, + "7317": { + "op": "JUMPI" + }, + "7318": { + "op": "PUSH1", + "value": "0x40" + }, + "7320": { + "op": "MLOAD" + }, + "7321": { + "op": "PUSH4", + "value": "0xB398979F" + }, + "7326": { + "op": "PUSH1", + "value": "0xE0" + }, + "7328": { + "op": "SHL" + }, + "7329": { + "op": "DUP2" + }, + "7330": { + "op": "MSTORE" + }, + "7331": { + "op": "PUSH1", + "value": "0x4" + }, + "7333": { + "op": "ADD" + }, + "7334": { + "op": "PUSH1", + "value": "0x40" + }, + "7336": { + "op": "MLOAD" + }, + "7337": { + "op": "DUP1" + }, + "7338": { + "op": "SWAP2" + }, + "7339": { + "op": "SUB" + }, + "7340": { + "op": "SWAP1" + }, + "7341": { + "op": "REVERT" + }, + "7342": { + "op": "JUMPDEST" + }, + "7343": { + "op": "PUSH1", + "value": "0x60" + }, + "7345": { + "op": "DUP3" + }, + "7346": { + "op": "PUSH2", + "value": "0x1CC3" + }, + "7349": { + "op": "JUMPI" + }, + "7350": { + "op": "PUSH2", + "value": "0x1CBE" + }, + "7353": { + "op": "DUP3" + }, + "7354": { + "op": "PUSH2", + "value": "0x1D0A" + }, + "7357": { + "jump": "i", + "op": "JUMP" + }, + "7358": { + "op": "JUMPDEST" + }, + "7359": { + "op": "PUSH2", + "value": "0x823" + }, + "7362": { + "op": "JUMP" + }, + "7363": { + "op": "JUMPDEST" + }, + "7364": { + "op": "DUP2" + }, + "7365": { + "op": "MLOAD" + }, + "7366": { + "op": "ISZERO" + }, + "7367": { + "op": "DUP1" + }, + "7368": { + "op": "ISZERO" + }, + "7369": { + "op": "PUSH2", + "value": "0x1CDA" + }, + "7372": { + "op": "JUMPI" + }, + "7373": { + "op": "POP" + }, + "7374": { + "op": "PUSH1", + "value": "0x1" + }, + "7376": { + "op": "PUSH1", + "value": "0x1" + }, + "7378": { + "op": "PUSH1", + "value": "0xA0" + }, + "7380": { + "op": "SHL" + }, + "7381": { + "op": "SUB" + }, + "7382": { + "op": "DUP5" + }, + "7383": { + "op": "AND" + }, + "7384": { + "op": "EXTCODESIZE" + }, + "7385": { + "op": "ISZERO" + }, + "7386": { + "op": "JUMPDEST" + }, + "7387": { + "op": "ISZERO" + }, + "7388": { + "op": "PUSH2", + "value": "0x1D03" + }, + "7391": { + "op": "JUMPI" + }, + "7392": { + "op": "PUSH1", + "value": "0x40" + }, + "7394": { + "op": "MLOAD" + }, + "7395": { + "op": "PUSH4", + "value": "0x9996B315" + }, + "7400": { + "op": "PUSH1", + "value": "0xE0" + }, + "7402": { + "op": "SHL" + }, + "7403": { + "op": "DUP2" + }, + "7404": { + "op": "MSTORE" + }, + "7405": { + "op": "PUSH1", + "value": "0x1" + }, + "7407": { + "op": "PUSH1", + "value": "0x1" + }, + "7409": { + "op": "PUSH1", + "value": "0xA0" + }, + "7411": { + "op": "SHL" + }, + "7412": { + "op": "SUB" + }, + "7413": { + "op": "DUP6" + }, + "7414": { + "op": "AND" + }, + "7415": { + "op": "PUSH1", + "value": "0x4" + }, + "7417": { + "op": "DUP3" + }, + "7418": { + "op": "ADD" + }, + "7419": { + "op": "MSTORE" + }, + "7420": { + "op": "PUSH1", + "value": "0x24" + }, + "7422": { + "op": "ADD" + }, + "7423": { + "op": "PUSH2", + "value": "0x901" + }, + "7426": { + "op": "JUMP" + }, + "7427": { + "op": "JUMPDEST" + }, + "7428": { + "op": "POP" + }, + "7429": { + "op": "DUP1" + }, + "7430": { + "op": "PUSH2", + "value": "0x823" + }, + "7433": { + "op": "JUMP" + }, + "7434": { + "op": "JUMPDEST" + }, + "7435": { + "op": "DUP1" + }, + "7436": { + "op": "MLOAD" + }, + "7437": { + "op": "ISZERO" + }, + "7438": { + "op": "PUSH2", + "value": "0x1D1A" + }, + "7441": { + "op": "JUMPI" + }, + "7442": { + "op": "DUP1" + }, + "7443": { + "op": "MLOAD" + }, + "7444": { + "op": "DUP1" + }, + "7445": { + "op": "DUP3" + }, + "7446": { + "op": "PUSH1", + "value": "0x20" + }, + "7448": { + "op": "ADD" + }, + "7449": { + "op": "REVERT" + }, + "7450": { + "op": "JUMPDEST" + }, + "7451": { + "op": "PUSH1", + "value": "0x40" + }, + "7453": { + "op": "MLOAD" + }, + "7454": { + "op": "PUSH4", + "value": "0xD6BDA275" + }, + "7459": { + "op": "PUSH1", + "value": "0xE0" + }, + "7461": { + "op": "SHL" + }, + "7462": { + "op": "DUP2" + }, + "7463": { + "op": "MSTORE" + }, + "7464": { + "op": "PUSH1", + "value": "0x4" + }, + "7466": { + "op": "ADD" + }, + "7467": { + "op": "PUSH1", + "value": "0x40" + }, + "7469": { + "op": "MLOAD" + }, + "7470": { + "op": "DUP1" + }, + "7471": { + "op": "SWAP2" + }, + "7472": { + "op": "SUB" + }, + "7473": { + "op": "SWAP1" + }, + "7474": { + "op": "REVERT" + }, + "7475": { + "op": "JUMPDEST" + }, + "7476": { + "op": "PUSH1", + "value": "0x1" + }, + "7478": { + "op": "PUSH1", + "value": "0x1" + }, + "7480": { + "op": "PUSH1", + "value": "0xA0" + }, + "7482": { + "op": "SHL" + }, + "7483": { + "op": "SUB" + }, + "7484": { + "op": "DUP2" + }, + "7485": { + "op": "AND" + }, + "7486": { + "op": "DUP2" + }, + "7487": { + "op": "EQ" + }, + "7488": { + "op": "PUSH2", + "value": "0x1139" + }, + "7491": { + "op": "JUMPI" + }, + "7492": { + "op": "PUSH0" + }, + "7493": { + "op": "PUSH0" + }, + "7494": { + "op": "REVERT" + }, + "7495": { + "op": "JUMPDEST" + }, + "7496": { + "op": "PUSH0" + }, + "7497": { + "op": "PUSH0" + }, + "7498": { + "op": "DUP4" + }, + "7499": { + "op": "PUSH1", + "value": "0x1F" + }, + "7501": { + "op": "DUP5" + }, + "7502": { + "op": "ADD" + }, + "7503": { + "op": "SLT" + }, + "7504": { + "op": "PUSH2", + "value": "0x1D57" + }, + "7507": { + "op": "JUMPI" + }, + "7508": { + "op": "PUSH0" + }, + "7509": { + "op": "PUSH0" + }, + "7510": { + "op": "REVERT" + }, + "7511": { + "op": "JUMPDEST" + }, + "7512": { + "op": "POP" + }, + "7513": { + "op": "DUP2" + }, + "7514": { + "op": "CALLDATALOAD" + }, + "7515": { + "op": "PUSH1", + "value": "0x1" + }, + "7517": { + "op": "PUSH1", + "value": "0x1" + }, + "7519": { + "op": "PUSH1", + "value": "0x40" + }, + "7521": { + "op": "SHL" + }, + "7522": { + "op": "SUB" + }, + "7523": { + "op": "DUP2" + }, + "7524": { + "op": "GT" + }, + "7525": { + "op": "ISZERO" + }, + "7526": { + "op": "PUSH2", + "value": "0x1D6D" + }, + "7529": { + "op": "JUMPI" + }, + "7530": { + "op": "PUSH0" + }, + "7531": { + "op": "PUSH0" + }, + "7532": { + "op": "REVERT" + }, + "7533": { + "op": "JUMPDEST" + }, + "7534": { + "op": "PUSH1", + "value": "0x20" + }, + "7536": { + "op": "DUP4" + }, + "7537": { + "op": "ADD" + }, + "7538": { + "op": "SWAP2" + }, + "7539": { + "op": "POP" + }, + "7540": { + "op": "DUP4" + }, + "7541": { + "op": "PUSH1", + "value": "0x20" + }, + "7543": { + "op": "DUP3" + }, + "7544": { + "op": "DUP6" + }, + "7545": { + "op": "ADD" + }, + "7546": { + "op": "ADD" + }, + "7547": { + "op": "GT" + }, + "7548": { + "op": "ISZERO" + }, + "7549": { + "op": "PUSH2", + "value": "0x1D84" + }, + "7552": { + "op": "JUMPI" + }, + "7553": { + "op": "PUSH0" + }, + "7554": { + "op": "PUSH0" + }, + "7555": { + "op": "REVERT" + }, + "7556": { + "op": "JUMPDEST" + }, + "7557": { + "op": "SWAP3" + }, + "7558": { + "op": "POP" + }, + "7559": { + "op": "SWAP3" + }, + "7560": { + "op": "SWAP1" + }, + "7561": { + "op": "POP" + }, + "7562": { + "jump": "o", + "op": "JUMP" + }, + "7563": { + "op": "JUMPDEST" + }, + "7564": { + "op": "PUSH0" + }, + "7565": { + "op": "PUSH0" + }, + "7566": { + "op": "PUSH0" + }, + "7567": { + "op": "PUSH0" + }, + "7568": { + "op": "PUSH0" + }, + "7569": { + "op": "PUSH0" + }, + "7570": { + "op": "PUSH0" + }, + "7571": { + "op": "PUSH0" + }, + "7572": { + "op": "PUSH1", + "value": "0xC0" + }, + "7574": { + "op": "DUP10" + }, + "7575": { + "op": "DUP12" + }, + "7576": { + "op": "SUB" + }, + "7577": { + "op": "SLT" + }, + "7578": { + "op": "ISZERO" + }, + "7579": { + "op": "PUSH2", + "value": "0x1DA2" + }, + "7582": { + "op": "JUMPI" + }, + "7583": { + "op": "PUSH0" + }, + "7584": { + "op": "PUSH0" + }, + "7585": { + "op": "REVERT" + }, + "7586": { + "op": "JUMPDEST" + }, + "7587": { + "op": "DUP9" + }, + "7588": { + "op": "CALLDATALOAD" + }, + "7589": { + "op": "PUSH2", + "value": "0x1DAD" + }, + "7592": { + "op": "DUP2" + }, + "7593": { + "op": "PUSH2", + "value": "0x1D33" + }, + "7596": { + "jump": "i", + "op": "JUMP" + }, + "7597": { + "op": "JUMPDEST" + }, + "7598": { + "op": "SWAP8" + }, + "7599": { + "op": "POP" + }, + "7600": { + "op": "PUSH1", + "value": "0x20" + }, + "7602": { + "op": "DUP10" + }, + "7603": { + "op": "ADD" + }, + "7604": { + "op": "CALLDATALOAD" + }, + "7605": { + "op": "PUSH2", + "value": "0x1DBD" + }, + "7608": { + "op": "DUP2" + }, + "7609": { + "op": "PUSH2", + "value": "0x1D33" + }, + "7612": { + "jump": "i", + "op": "JUMP" + }, + "7613": { + "op": "JUMPDEST" + }, + "7614": { + "op": "SWAP7" + }, + "7615": { + "op": "POP" + }, + "7616": { + "op": "PUSH1", + "value": "0x40" + }, + "7618": { + "op": "DUP10" + }, + "7619": { + "op": "ADD" + }, + "7620": { + "op": "CALLDATALOAD" + }, + "7621": { + "op": "PUSH2", + "value": "0x1DCD" + }, + "7624": { + "op": "DUP2" + }, + "7625": { + "op": "PUSH2", + "value": "0x1D33" + }, + "7628": { + "jump": "i", + "op": "JUMP" + }, + "7629": { + "op": "JUMPDEST" + }, + "7630": { + "op": "SWAP6" + }, + "7631": { + "op": "POP" + }, + "7632": { + "op": "PUSH1", + "value": "0x60" + }, + "7634": { + "op": "DUP10" + }, + "7635": { + "op": "ADD" + }, + "7636": { + "op": "CALLDATALOAD" + }, + "7637": { + "op": "SWAP5" + }, + "7638": { + "op": "POP" + }, + "7639": { + "op": "PUSH1", + "value": "0x80" + }, + "7641": { + "op": "DUP10" + }, + "7642": { + "op": "ADD" + }, + "7643": { + "op": "CALLDATALOAD" + }, + "7644": { + "op": "PUSH1", + "value": "0x1" + }, + "7646": { + "op": "PUSH1", + "value": "0x1" + }, + "7648": { + "op": "PUSH1", + "value": "0x40" + }, + "7650": { + "op": "SHL" + }, + "7651": { + "op": "SUB" + }, + "7652": { + "op": "DUP2" + }, + "7653": { + "op": "GT" + }, + "7654": { + "op": "ISZERO" + }, + "7655": { + "op": "PUSH2", + "value": "0x1DEE" + }, + "7658": { + "op": "JUMPI" + }, + "7659": { + "op": "PUSH0" + }, + "7660": { + "op": "PUSH0" + }, + "7661": { + "op": "REVERT" + }, + "7662": { + "op": "JUMPDEST" + }, + "7663": { + "op": "PUSH2", + "value": "0x1DFA" + }, + "7666": { + "op": "DUP12" + }, + "7667": { + "op": "DUP3" + }, + "7668": { + "op": "DUP13" + }, + "7669": { + "op": "ADD" + }, + "7670": { + "op": "PUSH2", + "value": "0x1D47" + }, + "7673": { + "jump": "i", + "op": "JUMP" + }, + "7674": { + "op": "JUMPDEST" + }, + "7675": { + "op": "SWAP1" + }, + "7676": { + "op": "SWAP6" + }, + "7677": { + "op": "POP" + }, + "7678": { + "op": "SWAP4" + }, + "7679": { + "op": "POP" + }, + "7680": { + "op": "POP" + }, + "7681": { + "op": "PUSH1", + "value": "0xA0" + }, + "7683": { + "op": "DUP10" + }, + "7684": { + "op": "ADD" + }, + "7685": { + "op": "CALLDATALOAD" + }, + "7686": { + "op": "PUSH1", + "value": "0x1" + }, + "7688": { + "op": "PUSH1", + "value": "0x1" + }, + "7690": { + "op": "PUSH1", + "value": "0x40" + }, + "7692": { + "op": "SHL" + }, + "7693": { + "op": "SUB" + }, + "7694": { + "op": "DUP2" + }, + "7695": { + "op": "GT" + }, + "7696": { + "op": "ISZERO" + }, + "7697": { + "op": "PUSH2", + "value": "0x1E18" + }, + "7700": { + "op": "JUMPI" + }, + "7701": { + "op": "PUSH0" + }, + "7702": { + "op": "PUSH0" + }, + "7703": { + "op": "REVERT" + }, + "7704": { + "op": "JUMPDEST" + }, + "7705": { + "op": "PUSH2", + "value": "0x1E24" + }, + "7708": { + "op": "DUP12" + }, + "7709": { + "op": "DUP3" + }, + "7710": { + "op": "DUP13" + }, + "7711": { + "op": "ADD" + }, + "7712": { + "op": "PUSH2", + "value": "0x1D47" + }, + "7715": { + "jump": "i", + "op": "JUMP" + }, + "7716": { + "op": "JUMPDEST" + }, + "7717": { + "op": "SWAP10" + }, + "7718": { + "op": "SWAP13" + }, + "7719": { + "op": "SWAP9" + }, + "7720": { + "op": "SWAP12" + }, + "7721": { + "op": "POP" + }, + "7722": { + "op": "SWAP7" + }, + "7723": { + "op": "SWAP10" + }, + "7724": { + "op": "POP" + }, + "7725": { + "op": "SWAP5" + }, + "7726": { + "op": "SWAP8" + }, + "7727": { + "op": "SWAP4" + }, + "7728": { + "op": "SWAP7" + }, + "7729": { + "op": "SWAP3" + }, + "7730": { + "op": "SWAP6" + }, + "7731": { + "op": "SWAP5" + }, + "7732": { + "op": "POP" + }, + "7733": { + "op": "POP" + }, + "7734": { + "op": "POP" + }, + "7735": { + "jump": "o", + "op": "JUMP" + }, + "7736": { + "op": "JUMPDEST" + }, + "7737": { + "op": "PUSH1", + "value": "0x1" + }, + "7739": { + "op": "PUSH1", + "value": "0x1" + }, + "7741": { + "op": "PUSH1", + "value": "0xE0" + }, + "7743": { + "op": "SHL" + }, + "7744": { + "op": "SUB" + }, + "7745": { + "op": "NOT" + }, + "7746": { + "op": "DUP2" + }, + "7747": { + "op": "AND" + }, + "7748": { + "op": "DUP2" + }, + "7749": { + "op": "EQ" + }, + "7750": { + "op": "PUSH2", + "value": "0x1139" + }, + "7753": { + "op": "JUMPI" + }, + "7754": { + "op": "PUSH0" + }, + "7755": { + "op": "PUSH0" + }, + "7756": { + "op": "REVERT" + }, + "7757": { + "op": "JUMPDEST" + }, + "7758": { + "op": "PUSH0" + }, + "7759": { + "op": "PUSH1", + "value": "0x20" + }, + "7761": { + "op": "DUP3" + }, + "7762": { + "op": "DUP5" + }, + "7763": { + "op": "SUB" + }, + "7764": { + "op": "SLT" + }, + "7765": { + "op": "ISZERO" + }, + "7766": { + "op": "PUSH2", + "value": "0x1E5D" + }, + "7769": { + "op": "JUMPI" + }, + "7770": { + "op": "PUSH0" + }, + "7771": { + "op": "PUSH0" + }, + "7772": { + "op": "REVERT" + }, + "7773": { + "op": "JUMPDEST" + }, + "7774": { + "op": "DUP2" + }, + "7775": { + "op": "CALLDATALOAD" + }, + "7776": { + "op": "PUSH2", + "value": "0x823" + }, + "7779": { + "op": "DUP2" + }, + "7780": { + "op": "PUSH2", + "value": "0x1E38" + }, + "7783": { + "jump": "i", + "op": "JUMP" + }, + "7784": { + "op": "JUMPDEST" + }, + "7785": { + "op": "PUSH0" + }, + "7786": { + "op": "PUSH0" + }, + "7787": { + "op": "PUSH0" + }, + "7788": { + "op": "PUSH0" + }, + "7789": { + "op": "PUSH0" + }, + "7790": { + "op": "PUSH0" + }, + "7791": { + "op": "PUSH1", + "value": "0x80" + }, + "7793": { + "op": "DUP8" + }, + "7794": { + "op": "DUP10" + }, + "7795": { + "op": "SUB" + }, + "7796": { + "op": "SLT" + }, + "7797": { + "op": "ISZERO" + }, + "7798": { + "op": "PUSH2", + "value": "0x1E7D" + }, + "7801": { + "op": "JUMPI" + }, + "7802": { + "op": "PUSH0" + }, + "7803": { + "op": "PUSH0" + }, + "7804": { + "op": "REVERT" + }, + "7805": { + "op": "JUMPDEST" + }, + "7806": { + "op": "DUP7" + }, + "7807": { + "op": "CALLDATALOAD" + }, + "7808": { + "op": "PUSH2", + "value": "0x1E88" + }, + "7811": { + "op": "DUP2" + }, + "7812": { + "op": "PUSH2", + "value": "0x1D33" + }, + "7815": { + "jump": "i", + "op": "JUMP" + }, + "7816": { + "op": "JUMPDEST" + }, + "7817": { + "op": "SWAP6" + }, + "7818": { + "op": "POP" + }, + "7819": { + "op": "PUSH1", + "value": "0x20" + }, + "7821": { + "op": "DUP8" + }, + "7822": { + "op": "ADD" + }, + "7823": { + "op": "CALLDATALOAD" + }, + "7824": { + "op": "PUSH1", + "value": "0x1" + }, + "7826": { + "op": "PUSH1", + "value": "0x1" + }, + "7828": { + "op": "PUSH1", + "value": "0x40" + }, + "7830": { + "op": "SHL" + }, + "7831": { + "op": "SUB" + }, + "7832": { + "op": "DUP2" + }, + "7833": { + "op": "GT" + }, + "7834": { + "op": "ISZERO" + }, + "7835": { + "op": "PUSH2", + "value": "0x1EA2" + }, + "7838": { + "op": "JUMPI" + }, + "7839": { + "op": "PUSH0" + }, + "7840": { + "op": "PUSH0" + }, + "7841": { + "op": "REVERT" + }, + "7842": { + "op": "JUMPDEST" + }, + "7843": { + "op": "PUSH2", + "value": "0x1EAE" + }, + "7846": { + "op": "DUP10" + }, + "7847": { + "op": "DUP3" + }, + "7848": { + "op": "DUP11" + }, + "7849": { + "op": "ADD" + }, + "7850": { + "op": "PUSH2", + "value": "0x1D47" + }, + "7853": { + "jump": "i", + "op": "JUMP" + }, + "7854": { + "op": "JUMPDEST" + }, + "7855": { + "op": "SWAP1" + }, + "7856": { + "op": "SWAP7" + }, + "7857": { + "op": "POP" + }, + "7858": { + "op": "SWAP5" + }, + "7859": { + "op": "POP" + }, + "7860": { + "op": "POP" + }, + "7861": { + "op": "PUSH1", + "value": "0x40" + }, + "7863": { + "op": "DUP8" + }, + "7864": { + "op": "ADD" + }, + "7865": { + "op": "CALLDATALOAD" + }, + "7866": { + "op": "PUSH1", + "value": "0x1" + }, + "7868": { + "op": "PUSH1", + "value": "0x1" + }, + "7870": { + "op": "PUSH1", + "value": "0x40" + }, + "7872": { + "op": "SHL" + }, + "7873": { + "op": "SUB" + }, + "7874": { + "op": "DUP2" + }, + "7875": { + "op": "GT" + }, + "7876": { + "op": "ISZERO" + }, + "7877": { + "op": "PUSH2", + "value": "0x1ECC" + }, + "7880": { + "op": "JUMPI" + }, + "7881": { + "op": "PUSH0" + }, + "7882": { + "op": "PUSH0" + }, + "7883": { + "op": "REVERT" + }, + "7884": { + "op": "JUMPDEST" + }, + "7885": { + "op": "PUSH2", + "value": "0x1ED8" + }, + "7888": { + "op": "DUP10" + }, + "7889": { + "op": "DUP3" + }, + "7890": { + "op": "DUP11" + }, + "7891": { + "op": "ADD" + }, + "7892": { + "op": "PUSH2", + "value": "0x1D47" + }, + "7895": { + "jump": "i", + "op": "JUMP" + }, + "7896": { + "op": "JUMPDEST" + }, + "7897": { + "op": "SWAP1" + }, + "7898": { + "op": "SWAP5" + }, + "7899": { + "op": "POP" + }, + "7900": { + "op": "SWAP3" + }, + "7901": { + "op": "POP" + }, + "7902": { + "op": "POP" + }, + "7903": { + "op": "PUSH1", + "value": "0x60" + }, + "7905": { + "op": "DUP8" + }, + "7906": { + "op": "ADD" + }, + "7907": { + "op": "CALLDATALOAD" + }, + "7908": { + "op": "PUSH2", + "value": "0x1EEC" + }, + "7911": { + "op": "DUP2" + }, + "7912": { + "op": "PUSH2", + "value": "0x1D33" + }, + "7915": { + "jump": "i", + "op": "JUMP" + }, + "7916": { + "op": "JUMPDEST" + }, + "7917": { + "op": "DUP1" + }, + "7918": { + "op": "SWAP2" + }, + "7919": { + "op": "POP" + }, + "7920": { + "op": "POP" + }, + "7921": { + "op": "SWAP3" + }, + "7922": { + "op": "SWAP6" + }, + "7923": { + "op": "POP" + }, + "7924": { + "op": "SWAP3" + }, + "7925": { + "op": "SWAP6" + }, + "7926": { + "op": "POP" + }, + "7927": { + "op": "SWAP3" + }, + "7928": { + "op": "SWAP6" + }, + "7929": { + "jump": "o", + "op": "JUMP" + }, + "7930": { + "op": "JUMPDEST" + }, + "7931": { + "op": "PUSH0" + }, + "7932": { + "op": "PUSH1", + "value": "0x20" + }, + "7934": { + "op": "DUP3" + }, + "7935": { + "op": "DUP5" + }, + "7936": { + "op": "SUB" + }, + "7937": { + "op": "SLT" + }, + "7938": { + "op": "ISZERO" + }, + "7939": { + "op": "PUSH2", + "value": "0x1F0A" + }, + "7942": { + "op": "JUMPI" + }, + "7943": { + "op": "PUSH0" + }, + "7944": { + "op": "PUSH0" + }, + "7945": { + "op": "REVERT" + }, + "7946": { + "op": "JUMPDEST" + }, + "7947": { + "op": "DUP2" + }, + "7948": { + "op": "CALLDATALOAD" + }, + "7949": { + "op": "PUSH2", + "value": "0x823" + }, + "7952": { + "op": "DUP2" + }, + "7953": { + "op": "PUSH2", + "value": "0x1D33" + }, + "7956": { + "jump": "i", + "op": "JUMP" + }, + "7957": { + "op": "JUMPDEST" + }, + "7958": { + "op": "PUSH0" + }, + "7959": { + "op": "PUSH0" + }, + "7960": { + "op": "PUSH0" + }, + "7961": { + "op": "PUSH0" + }, + "7962": { + "op": "PUSH0" + }, + "7963": { + "op": "PUSH1", + "value": "0x80" + }, + "7965": { + "op": "DUP7" + }, + "7966": { + "op": "DUP9" + }, + "7967": { + "op": "SUB" + }, + "7968": { + "op": "SLT" + }, + "7969": { + "op": "ISZERO" + }, + "7970": { + "op": "PUSH2", + "value": "0x1F29" + }, + "7973": { + "op": "JUMPI" + }, + "7974": { + "op": "PUSH0" + }, + "7975": { + "op": "PUSH0" + }, + "7976": { + "op": "REVERT" + }, + "7977": { + "op": "JUMPDEST" + }, + "7978": { + "op": "DUP6" + }, + "7979": { + "op": "CALLDATALOAD" + }, + "7980": { + "op": "PUSH2", + "value": "0x1F34" + }, + "7983": { + "op": "DUP2" + }, + "7984": { + "op": "PUSH2", + "value": "0x1D33" + }, + "7987": { + "jump": "i", + "op": "JUMP" + }, + "7988": { + "op": "JUMPDEST" + }, + "7989": { + "op": "SWAP5" + }, + "7990": { + "op": "POP" + }, + "7991": { + "op": "PUSH1", + "value": "0x20" + }, + "7993": { + "op": "DUP7" + }, + "7994": { + "op": "ADD" + }, + "7995": { + "op": "CALLDATALOAD" + }, + "7996": { + "op": "PUSH2", + "value": "0x1F44" + }, + "7999": { + "op": "DUP2" + }, + "8000": { + "op": "PUSH2", + "value": "0x1D33" + }, + "8003": { + "jump": "i", + "op": "JUMP" + }, + "8004": { + "op": "JUMPDEST" + }, + "8005": { + "op": "SWAP4" + }, + "8006": { + "op": "POP" + }, + "8007": { + "op": "PUSH1", + "value": "0x40" + }, + "8009": { + "op": "DUP7" + }, + "8010": { + "op": "ADD" + }, + "8011": { + "op": "CALLDATALOAD" + }, + "8012": { + "op": "SWAP3" + }, + "8013": { + "op": "POP" + }, + "8014": { + "op": "PUSH1", + "value": "0x60" + }, + "8016": { + "op": "DUP7" + }, + "8017": { + "op": "ADD" + }, + "8018": { + "op": "CALLDATALOAD" + }, + "8019": { + "op": "PUSH1", + "value": "0x1" + }, + "8021": { + "op": "PUSH1", + "value": "0x1" + }, + "8023": { + "op": "PUSH1", + "value": "0x40" + }, + "8025": { + "op": "SHL" + }, + "8026": { + "op": "SUB" + }, + "8027": { + "op": "DUP2" + }, + "8028": { + "op": "GT" + }, + "8029": { + "op": "ISZERO" + }, + "8030": { + "op": "PUSH2", + "value": "0x1F65" + }, + "8033": { + "op": "JUMPI" + }, + "8034": { + "op": "PUSH0" + }, + "8035": { + "op": "PUSH0" + }, + "8036": { + "op": "REVERT" + }, + "8037": { + "op": "JUMPDEST" + }, + "8038": { + "op": "PUSH2", + "value": "0x1F71" + }, + "8041": { + "op": "DUP9" + }, + "8042": { + "op": "DUP3" + }, + "8043": { + "op": "DUP10" + }, + "8044": { + "op": "ADD" + }, + "8045": { + "op": "PUSH2", + "value": "0x1D47" + }, + "8048": { + "jump": "i", + "op": "JUMP" + }, + "8049": { + "op": "JUMPDEST" + }, + "8050": { + "op": "SWAP7" + }, + "8051": { + "op": "SWAP10" + }, + "8052": { + "op": "SWAP6" + }, + "8053": { + "op": "SWAP9" + }, + "8054": { + "op": "POP" + }, + "8055": { + "op": "SWAP4" + }, + "8056": { + "op": "SWAP7" + }, + "8057": { + "op": "POP" + }, + "8058": { + "op": "SWAP3" + }, + "8059": { + "op": "SWAP5" + }, + "8060": { + "op": "SWAP4" + }, + "8061": { + "op": "SWAP3" + }, + "8062": { + "op": "POP" + }, + "8063": { + "op": "POP" + }, + "8064": { + "op": "POP" + }, + "8065": { + "jump": "o", + "op": "JUMP" + }, + "8066": { + "op": "JUMPDEST" + }, + "8067": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "8072": { + "op": "PUSH1", + "value": "0xE0" + }, + "8074": { + "op": "SHL" + }, + "8075": { + "op": "PUSH0" + }, + "8076": { + "op": "MSTORE" + }, + "8077": { + "op": "PUSH1", + "value": "0x41" + }, + "8079": { + "op": "PUSH1", + "value": "0x4" + }, + "8081": { + "op": "MSTORE" + }, + "8082": { + "op": "PUSH1", + "value": "0x24" + }, + "8084": { + "op": "PUSH0" + }, + "8085": { + "op": "REVERT" + }, + "8086": { + "op": "JUMPDEST" + }, + "8087": { + "op": "PUSH0" + }, + "8088": { + "op": "DUP3" + }, + "8089": { + "op": "PUSH1", + "value": "0x1F" + }, + "8091": { + "op": "DUP4" + }, + "8092": { + "op": "ADD" + }, + "8093": { + "op": "SLT" + }, + "8094": { + "op": "PUSH2", + "value": "0x1FA5" + }, + "8097": { + "op": "JUMPI" + }, + "8098": { + "op": "PUSH0" + }, + "8099": { + "op": "PUSH0" + }, + "8100": { + "op": "REVERT" + }, + "8101": { + "op": "JUMPDEST" + }, + "8102": { + "op": "DUP2" + }, + "8103": { + "op": "CALLDATALOAD" + }, + "8104": { + "op": "PUSH1", + "value": "0x1" + }, + "8106": { + "op": "PUSH1", + "value": "0x1" + }, + "8108": { + "op": "PUSH1", + "value": "0x40" + }, + "8110": { + "op": "SHL" + }, + "8111": { + "op": "SUB" + }, + "8112": { + "op": "DUP2" + }, + "8113": { + "op": "GT" + }, + "8114": { + "op": "ISZERO" + }, + "8115": { + "op": "PUSH2", + "value": "0x1FBE" + }, + "8118": { + "op": "JUMPI" + }, + "8119": { + "op": "PUSH2", + "value": "0x1FBE" + }, + "8122": { + "op": "PUSH2", + "value": "0x1F82" + }, + "8125": { + "jump": "i", + "op": "JUMP" + }, + "8126": { + "op": "JUMPDEST" + }, + "8127": { + "op": "PUSH1", + "value": "0x40" + }, + "8129": { + "op": "MLOAD" + }, + "8130": { + "op": "PUSH1", + "value": "0x1F" + }, + "8132": { + "op": "DUP3" + }, + "8133": { + "op": "ADD" + }, + "8134": { + "op": "PUSH1", + "value": "0x1F" + }, + "8136": { + "op": "NOT" + }, + "8137": { + "op": "SWAP1" + }, + "8138": { + "op": "DUP2" + }, + "8139": { + "op": "AND" + }, + "8140": { + "op": "PUSH1", + "value": "0x3F" + }, + "8142": { + "op": "ADD" + }, + "8143": { + "op": "AND" + }, + "8144": { + "op": "DUP2" + }, + "8145": { + "op": "ADD" + }, + "8146": { + "op": "PUSH1", + "value": "0x1" + }, + "8148": { + "op": "PUSH1", + "value": "0x1" + }, + "8150": { + "op": "PUSH1", + "value": "0x40" + }, + "8152": { + "op": "SHL" + }, + "8153": { + "op": "SUB" + }, + "8154": { + "op": "DUP2" + }, + "8155": { + "op": "GT" + }, + "8156": { + "op": "DUP3" + }, + "8157": { + "op": "DUP3" + }, + "8158": { + "op": "LT" + }, + "8159": { + "op": "OR" + }, + "8160": { + "op": "ISZERO" + }, + "8161": { + "op": "PUSH2", + "value": "0x1FEC" + }, + "8164": { + "op": "JUMPI" + }, + "8165": { + "op": "PUSH2", + "value": "0x1FEC" + }, + "8168": { + "op": "PUSH2", + "value": "0x1F82" + }, + "8171": { + "jump": "i", + "op": "JUMP" + }, + "8172": { + "op": "JUMPDEST" + }, + "8173": { + "op": "PUSH1", + "value": "0x40" + }, + "8175": { + "op": "MSTORE" + }, + "8176": { + "op": "DUP2" + }, + "8177": { + "op": "DUP2" + }, + "8178": { + "op": "MSTORE" + }, + "8179": { + "op": "DUP4" + }, + "8180": { + "op": "DUP3" + }, + "8181": { + "op": "ADD" + }, + "8182": { + "op": "PUSH1", + "value": "0x20" + }, + "8184": { + "op": "ADD" + }, + "8185": { + "op": "DUP6" + }, + "8186": { + "op": "LT" + }, + "8187": { + "op": "ISZERO" + }, + "8188": { + "op": "PUSH2", + "value": "0x2003" + }, + "8191": { + "op": "JUMPI" + }, + "8192": { + "op": "PUSH0" + }, + "8193": { + "op": "PUSH0" + }, + "8194": { + "op": "REVERT" + }, + "8195": { + "op": "JUMPDEST" + }, + "8196": { + "op": "DUP2" + }, + "8197": { + "op": "PUSH1", + "value": "0x20" + }, + "8199": { + "op": "DUP6" + }, + "8200": { + "op": "ADD" + }, + "8201": { + "op": "PUSH1", + "value": "0x20" + }, + "8203": { + "op": "DUP4" + }, + "8204": { + "op": "ADD" + }, + "8205": { + "op": "CALLDATACOPY" + }, + "8206": { + "op": "PUSH0" + }, + "8207": { + "op": "SWAP2" + }, + "8208": { + "op": "DUP2" + }, + "8209": { + "op": "ADD" + }, + "8210": { + "op": "PUSH1", + "value": "0x20" + }, + "8212": { + "op": "ADD" + }, + "8213": { + "op": "SWAP2" + }, + "8214": { + "op": "SWAP1" + }, + "8215": { + "op": "SWAP2" + }, + "8216": { + "op": "MSTORE" + }, + "8217": { + "op": "SWAP4" + }, + "8218": { + "op": "SWAP3" + }, + "8219": { + "op": "POP" + }, + "8220": { + "op": "POP" + }, + "8221": { + "op": "POP" + }, + "8222": { + "jump": "o", + "op": "JUMP" + }, + "8223": { + "op": "JUMPDEST" + }, + "8224": { + "op": "PUSH0" + }, + "8225": { + "op": "PUSH0" + }, + "8226": { + "op": "PUSH1", + "value": "0x40" + }, + "8228": { + "op": "DUP4" + }, + "8229": { + "op": "DUP6" + }, + "8230": { + "op": "SUB" + }, + "8231": { + "op": "SLT" + }, + "8232": { + "op": "ISZERO" + }, + "8233": { + "op": "PUSH2", + "value": "0x2030" + }, + "8236": { + "op": "JUMPI" + }, + "8237": { + "op": "PUSH0" + }, + "8238": { + "op": "PUSH0" + }, + "8239": { + "op": "REVERT" + }, + "8240": { + "op": "JUMPDEST" + }, + "8241": { + "op": "DUP3" + }, + "8242": { + "op": "CALLDATALOAD" + }, + "8243": { + "op": "SWAP2" + }, + "8244": { + "op": "POP" + }, + "8245": { + "op": "PUSH1", + "value": "0x20" + }, + "8247": { + "op": "DUP4" + }, + "8248": { + "op": "ADD" + }, + "8249": { + "op": "CALLDATALOAD" + }, + "8250": { + "op": "PUSH1", + "value": "0x1" + }, + "8252": { + "op": "PUSH1", + "value": "0x1" + }, + "8254": { + "op": "PUSH1", + "value": "0x40" + }, + "8256": { + "op": "SHL" + }, + "8257": { + "op": "SUB" + }, + "8258": { + "op": "DUP2" + }, + "8259": { + "op": "GT" + }, + "8260": { + "op": "ISZERO" + }, + "8261": { + "op": "PUSH2", + "value": "0x204C" + }, + "8264": { + "op": "JUMPI" + }, + "8265": { + "op": "PUSH0" + }, + "8266": { + "op": "PUSH0" + }, + "8267": { + "op": "REVERT" + }, + "8268": { + "op": "JUMPDEST" + }, + "8269": { + "op": "PUSH2", + "value": "0x2058" + }, + "8272": { + "op": "DUP6" + }, + "8273": { + "op": "DUP3" + }, + "8274": { + "op": "DUP7" + }, + "8275": { + "op": "ADD" + }, + "8276": { + "op": "PUSH2", + "value": "0x1F96" + }, + "8279": { + "jump": "i", + "op": "JUMP" + }, + "8280": { + "op": "JUMPDEST" + }, + "8281": { + "op": "SWAP2" + }, + "8282": { + "op": "POP" + }, + "8283": { + "op": "POP" + }, + "8284": { + "op": "SWAP3" + }, + "8285": { + "op": "POP" + }, + "8286": { + "op": "SWAP3" + }, + "8287": { + "op": "SWAP1" + }, + "8288": { + "op": "POP" + }, + "8289": { + "jump": "o", + "op": "JUMP" + }, + "8290": { + "op": "JUMPDEST" + }, + "8291": { + "op": "PUSH0" + }, + "8292": { + "op": "PUSH0" + }, + "8293": { + "op": "PUSH0" + }, + "8294": { + "op": "PUSH1", + "value": "0x60" + }, + "8296": { + "op": "DUP5" + }, + "8297": { + "op": "DUP7" + }, + "8298": { + "op": "SUB" + }, + "8299": { + "op": "SLT" + }, + "8300": { + "op": "ISZERO" + }, + "8301": { + "op": "PUSH2", + "value": "0x2074" + }, + "8304": { + "op": "JUMPI" + }, + "8305": { + "op": "PUSH0" + }, + "8306": { + "op": "PUSH0" + }, + "8307": { + "op": "REVERT" + }, + "8308": { + "op": "JUMPDEST" + }, + "8309": { + "op": "DUP4" + }, + "8310": { + "op": "CALLDATALOAD" + }, + "8311": { + "op": "PUSH1", + "value": "0x1" + }, + "8313": { + "op": "PUSH1", + "value": "0x1" + }, + "8315": { + "op": "PUSH1", + "value": "0x40" + }, + "8317": { + "op": "SHL" + }, + "8318": { + "op": "SUB" + }, + "8319": { + "op": "DUP2" + }, + "8320": { + "op": "GT" + }, + "8321": { + "op": "ISZERO" + }, + "8322": { + "op": "PUSH2", + "value": "0x2089" + }, + "8325": { + "op": "JUMPI" + }, + "8326": { + "op": "PUSH0" + }, + "8327": { + "op": "PUSH0" + }, + "8328": { + "op": "REVERT" + }, + "8329": { + "op": "JUMPDEST" + }, + "8330": { + "op": "DUP5" + }, + "8331": { + "op": "ADD" + }, + "8332": { + "op": "PUSH2", + "value": "0x120" + }, + "8335": { + "op": "DUP2" + }, + "8336": { + "op": "DUP8" + }, + "8337": { + "op": "SUB" + }, + "8338": { + "op": "SLT" + }, + "8339": { + "op": "ISZERO" + }, + "8340": { + "op": "PUSH2", + "value": "0x209B" + }, + "8343": { + "op": "JUMPI" + }, + "8344": { + "op": "PUSH0" + }, + "8345": { + "op": "PUSH0" + }, + "8346": { + "op": "REVERT" + }, + "8347": { + "op": "JUMPDEST" + }, + "8348": { + "op": "SWAP6" + }, + "8349": { + "op": "PUSH1", + "value": "0x20" + }, + "8351": { + "op": "DUP6" + }, + "8352": { + "op": "ADD" + }, + "8353": { + "op": "CALLDATALOAD" + }, + "8354": { + "op": "SWAP6" + }, + "8355": { + "op": "POP" + }, + "8356": { + "op": "PUSH1", + "value": "0x40" + }, + "8358": { + "op": "SWAP1" + }, + "8359": { + "op": "SWAP5" + }, + "8360": { + "op": "ADD" + }, + "8361": { + "op": "CALLDATALOAD" + }, + "8362": { + "op": "SWAP4" + }, + "8363": { + "op": "SWAP3" + }, + "8364": { + "op": "POP" + }, + "8365": { + "op": "POP" + }, + "8366": { + "op": "POP" + }, + "8367": { + "jump": "o", + "op": "JUMP" + }, + "8368": { + "op": "JUMPDEST" + }, + "8369": { + "op": "PUSH0" + }, + "8370": { + "op": "PUSH0" + }, + "8371": { + "op": "DUP4" + }, + "8372": { + "op": "PUSH1", + "value": "0x1F" + }, + "8374": { + "op": "DUP5" + }, + "8375": { + "op": "ADD" + }, + "8376": { + "op": "SLT" + }, + "8377": { + "op": "PUSH2", + "value": "0x20C0" + }, + "8380": { + "op": "JUMPI" + }, + "8381": { + "op": "PUSH0" + }, + "8382": { + "op": "PUSH0" + }, + "8383": { + "op": "REVERT" + }, + "8384": { + "op": "JUMPDEST" + }, + "8385": { + "op": "POP" + }, + "8386": { + "op": "DUP2" + }, + "8387": { + "op": "CALLDATALOAD" + }, + "8388": { + "op": "PUSH1", + "value": "0x1" + }, + "8390": { + "op": "PUSH1", + "value": "0x1" + }, + "8392": { + "op": "PUSH1", + "value": "0x40" + }, + "8394": { + "op": "SHL" + }, + "8395": { + "op": "SUB" + }, + "8396": { + "op": "DUP2" + }, + "8397": { + "op": "GT" + }, + "8398": { + "op": "ISZERO" + }, + "8399": { + "op": "PUSH2", + "value": "0x20D6" + }, + "8402": { + "op": "JUMPI" + }, + "8403": { + "op": "PUSH0" + }, + "8404": { + "op": "PUSH0" + }, + "8405": { + "op": "REVERT" + }, + "8406": { + "op": "JUMPDEST" + }, + "8407": { + "op": "PUSH1", + "value": "0x20" + }, + "8409": { + "op": "DUP4" + }, + "8410": { + "op": "ADD" + }, + "8411": { + "op": "SWAP2" + }, + "8412": { + "op": "POP" + }, + "8413": { + "op": "DUP4" + }, + "8414": { + "op": "PUSH1", + "value": "0x20" + }, + "8416": { + "op": "DUP3" + }, + "8417": { + "op": "PUSH1", + "value": "0x5" + }, + "8419": { + "op": "SHL" + }, + "8420": { + "op": "DUP6" + }, + "8421": { + "op": "ADD" + }, + "8422": { + "op": "ADD" + }, + "8423": { + "op": "GT" + }, + "8424": { + "op": "ISZERO" + }, + "8425": { + "op": "PUSH2", + "value": "0x1D84" + }, + "8428": { + "op": "JUMPI" + }, + "8429": { + "op": "PUSH0" + }, + "8430": { + "op": "PUSH0" + }, + "8431": { + "op": "REVERT" + }, + "8432": { + "op": "JUMPDEST" + }, + "8433": { + "op": "PUSH0" + }, + "8434": { + "op": "PUSH0" + }, + "8435": { + "op": "PUSH1", + "value": "0x20" + }, + "8437": { + "op": "DUP4" + }, + "8438": { + "op": "DUP6" + }, + "8439": { + "op": "SUB" + }, + "8440": { + "op": "SLT" + }, + "8441": { + "op": "ISZERO" + }, + "8442": { + "op": "PUSH2", + "value": "0x2101" + }, + "8445": { + "op": "JUMPI" + }, + "8446": { + "op": "PUSH0" + }, + "8447": { + "op": "PUSH0" + }, + "8448": { + "op": "REVERT" + }, + "8449": { + "op": "JUMPDEST" + }, + "8450": { + "op": "DUP3" + }, + "8451": { + "op": "CALLDATALOAD" + }, + "8452": { + "op": "PUSH1", + "value": "0x1" + }, + "8454": { + "op": "PUSH1", + "value": "0x1" + }, + "8456": { + "op": "PUSH1", + "value": "0x40" + }, + "8458": { + "op": "SHL" + }, + "8459": { + "op": "SUB" + }, + "8460": { + "op": "DUP2" + }, + "8461": { + "op": "GT" + }, + "8462": { + "op": "ISZERO" + }, + "8463": { + "op": "PUSH2", + "value": "0x2116" + }, + "8466": { + "op": "JUMPI" + }, + "8467": { + "op": "PUSH0" + }, + "8468": { + "op": "PUSH0" + }, + "8469": { + "op": "REVERT" + }, + "8470": { + "op": "JUMPDEST" + }, + "8471": { + "op": "PUSH2", + "value": "0x2122" + }, + "8474": { + "op": "DUP6" + }, + "8475": { + "op": "DUP3" + }, + "8476": { + "op": "DUP7" + }, + "8477": { + "op": "ADD" + }, + "8478": { + "op": "PUSH2", + "value": "0x20B0" + }, + "8481": { + "jump": "i", + "op": "JUMP" + }, + "8482": { + "op": "JUMPDEST" + }, + "8483": { + "op": "SWAP1" + }, + "8484": { + "op": "SWAP7" + }, + "8485": { + "op": "SWAP1" + }, + "8486": { + "op": "SWAP6" + }, + "8487": { + "op": "POP" + }, + "8488": { + "op": "SWAP4" + }, + "8489": { + "op": "POP" + }, + "8490": { + "op": "POP" + }, + "8491": { + "op": "POP" + }, + "8492": { + "op": "POP" + }, + "8493": { + "jump": "o", + "op": "JUMP" + }, + "8494": { + "op": "JUMPDEST" + }, + "8495": { + "op": "PUSH0" + }, + "8496": { + "op": "PUSH0" + }, + "8497": { + "op": "PUSH1", + "value": "0x40" + }, + "8499": { + "op": "DUP4" + }, + "8500": { + "op": "DUP6" + }, + "8501": { + "op": "SUB" + }, + "8502": { + "op": "SLT" + }, + "8503": { + "op": "ISZERO" + }, + "8504": { + "op": "PUSH2", + "value": "0x213F" + }, + "8507": { + "op": "JUMPI" + }, + "8508": { + "op": "PUSH0" + }, + "8509": { + "op": "PUSH0" + }, + "8510": { + "op": "REVERT" + }, + "8511": { + "op": "JUMPDEST" + }, + "8512": { + "op": "DUP3" + }, + "8513": { + "op": "CALLDATALOAD" + }, + "8514": { + "op": "PUSH2", + "value": "0x214A" + }, + "8517": { + "op": "DUP2" + }, + "8518": { + "op": "PUSH2", + "value": "0x1D33" + }, + "8521": { + "jump": "i", + "op": "JUMP" + }, + "8522": { + "op": "JUMPDEST" + }, + "8523": { + "op": "SWAP2" + }, + "8524": { + "op": "POP" + }, + "8525": { + "op": "PUSH1", + "value": "0x20" + }, + "8527": { + "op": "DUP4" + }, + "8528": { + "op": "ADD" + }, + "8529": { + "op": "CALLDATALOAD" + }, + "8530": { + "op": "PUSH1", + "value": "0x1" + }, + "8532": { + "op": "PUSH1", + "value": "0x1" + }, + "8534": { + "op": "PUSH1", + "value": "0x40" + }, + "8536": { + "op": "SHL" + }, + "8537": { + "op": "SUB" + }, + "8538": { + "op": "DUP2" + }, + "8539": { + "op": "GT" + }, + "8540": { + "op": "ISZERO" + }, + "8541": { + "op": "PUSH2", + "value": "0x204C" + }, + "8544": { + "op": "JUMPI" + }, + "8545": { + "op": "PUSH0" + }, + "8546": { + "op": "PUSH0" + }, + "8547": { + "op": "REVERT" + }, + "8548": { + "op": "JUMPDEST" + }, + "8549": { + "op": "DUP1" + }, + "8550": { + "op": "CALLDATALOAD" + }, + "8551": { + "op": "PUSH1", + "value": "0xFF" + }, + "8553": { + "op": "DUP2" + }, + "8554": { + "op": "AND" + }, + "8555": { + "op": "DUP2" + }, + "8556": { + "op": "EQ" + }, + "8557": { + "op": "PUSH2", + "value": "0x2174" + }, + "8560": { + "op": "JUMPI" + }, + "8561": { + "op": "PUSH0" + }, + "8562": { + "op": "PUSH0" + }, + "8563": { + "op": "REVERT" + }, + "8564": { + "op": "JUMPDEST" + }, + "8565": { + "op": "SWAP2" + }, + "8566": { + "op": "SWAP1" + }, + "8567": { + "op": "POP" + }, + "8568": { + "jump": "o", + "op": "JUMP" + }, + "8569": { + "op": "JUMPDEST" + }, + "8570": { + "op": "PUSH0" + }, + "8571": { + "op": "PUSH0" + }, + "8572": { + "op": "PUSH0" + }, + "8573": { + "op": "PUSH0" + }, + "8574": { + "op": "PUSH0" + }, + "8575": { + "op": "PUSH1", + "value": "0x80" + }, + "8577": { + "op": "DUP7" + }, + "8578": { + "op": "DUP9" + }, + "8579": { + "op": "SUB" + }, + "8580": { + "op": "SLT" + }, + "8581": { + "op": "ISZERO" + }, + "8582": { + "op": "PUSH2", + "value": "0x218D" + }, + "8585": { + "op": "JUMPI" + }, + "8586": { + "op": "PUSH0" + }, + "8587": { + "op": "PUSH0" + }, + "8588": { + "op": "REVERT" + }, + "8589": { + "op": "JUMPDEST" + }, + "8590": { + "op": "DUP6" + }, + "8591": { + "op": "CALLDATALOAD" + }, + "8592": { + "op": "PUSH2", + "value": "0x2198" + }, + "8595": { + "op": "DUP2" + }, + "8596": { + "op": "PUSH2", + "value": "0x1D33" + }, + "8599": { + "jump": "i", + "op": "JUMP" + }, + "8600": { + "op": "JUMPDEST" + }, + "8601": { + "op": "SWAP5" + }, + "8602": { + "op": "POP" + }, + "8603": { + "op": "PUSH1", + "value": "0x20" + }, + "8605": { + "op": "DUP7" + }, + "8606": { + "op": "ADD" + }, + "8607": { + "op": "CALLDATALOAD" + }, + "8608": { + "op": "SWAP4" + }, + "8609": { + "op": "POP" + }, + "8610": { + "op": "PUSH1", + "value": "0x40" + }, + "8612": { + "op": "DUP7" + }, + "8613": { + "op": "ADD" + }, + "8614": { + "op": "CALLDATALOAD" + }, + "8615": { + "op": "PUSH1", + "value": "0x1" + }, + "8617": { + "op": "PUSH1", + "value": "0x1" + }, + "8619": { + "op": "PUSH1", + "value": "0x40" + }, + "8621": { + "op": "SHL" + }, + "8622": { + "op": "SUB" + }, + "8623": { + "op": "DUP2" + }, + "8624": { + "op": "GT" + }, + "8625": { + "op": "ISZERO" + }, + "8626": { + "op": "PUSH2", + "value": "0x21B9" + }, + "8629": { + "op": "JUMPI" + }, + "8630": { + "op": "PUSH0" + }, + "8631": { + "op": "PUSH0" + }, + "8632": { + "op": "REVERT" + }, + "8633": { + "op": "JUMPDEST" + }, + "8634": { + "op": "PUSH2", + "value": "0x21C5" + }, + "8637": { + "op": "DUP9" + }, + "8638": { + "op": "DUP3" + }, + "8639": { + "op": "DUP10" + }, + "8640": { + "op": "ADD" + }, + "8641": { + "op": "PUSH2", + "value": "0x1D47" + }, + "8644": { + "jump": "i", + "op": "JUMP" + }, + "8645": { + "op": "JUMPDEST" + }, + "8646": { + "op": "SWAP1" + }, + "8647": { + "op": "SWAP5" + }, + "8648": { + "op": "POP" + }, + "8649": { + "op": "SWAP3" + }, + "8650": { + "op": "POP" + }, + "8651": { + "op": "PUSH2", + "value": "0x21D8" + }, + "8654": { + "op": "SWAP1" + }, + "8655": { + "op": "POP" + }, + "8656": { + "op": "PUSH1", + "value": "0x60" + }, + "8658": { + "op": "DUP8" + }, + "8659": { + "op": "ADD" + }, + "8660": { + "op": "PUSH2", + "value": "0x2164" + }, + "8663": { + "jump": "i", + "op": "JUMP" + }, + "8664": { + "op": "JUMPDEST" + }, + "8665": { + "op": "SWAP1" + }, + "8666": { + "op": "POP" + }, + "8667": { + "op": "SWAP3" + }, + "8668": { + "op": "SWAP6" + }, + "8669": { + "op": "POP" + }, + "8670": { + "op": "SWAP3" + }, + "8671": { + "op": "SWAP6" + }, + "8672": { + "op": "SWAP1" + }, + "8673": { + "op": "SWAP4" + }, + "8674": { + "op": "POP" + }, + "8675": { + "jump": "o", + "op": "JUMP" + }, + "8676": { + "op": "JUMPDEST" + }, + "8677": { + "op": "PUSH0" + }, + "8678": { + "op": "DUP2" + }, + "8679": { + "op": "MLOAD" + }, + "8680": { + "op": "DUP1" + }, + "8681": { + "op": "DUP5" + }, + "8682": { + "op": "MSTORE" + }, + "8683": { + "op": "DUP1" + }, + "8684": { + "op": "PUSH1", + "value": "0x20" + }, + "8686": { + "op": "DUP5" + }, + "8687": { + "op": "ADD" + }, + "8688": { + "op": "PUSH1", + "value": "0x20" + }, + "8690": { + "op": "DUP7" + }, + "8691": { + "op": "ADD" + }, + "8692": { + "op": "MCOPY" + }, + "8693": { + "op": "PUSH0" + }, + "8694": { + "op": "PUSH1", + "value": "0x20" + }, + "8696": { + "op": "DUP3" + }, + "8697": { + "op": "DUP7" + }, + "8698": { + "op": "ADD" + }, + "8699": { + "op": "ADD" + }, + "8700": { + "op": "MSTORE" + }, + "8701": { + "op": "PUSH1", + "value": "0x20" + }, + "8703": { + "op": "PUSH1", + "value": "0x1F" + }, + "8705": { + "op": "NOT" + }, + "8706": { + "op": "PUSH1", + "value": "0x1F" + }, + "8708": { + "op": "DUP4" + }, + "8709": { + "op": "ADD" + }, + "8710": { + "op": "AND" + }, + "8711": { + "op": "DUP6" + }, + "8712": { + "op": "ADD" + }, + "8713": { + "op": "ADD" + }, + "8714": { + "op": "SWAP2" + }, + "8715": { + "op": "POP" + }, + "8716": { + "op": "POP" + }, + "8717": { + "op": "SWAP3" + }, + "8718": { + "op": "SWAP2" + }, + "8719": { + "op": "POP" + }, + "8720": { + "op": "POP" + }, + "8721": { + "jump": "o", + "op": "JUMP" + }, + "8722": { + "op": "JUMPDEST" + }, + "8723": { + "op": "PUSH1", + "value": "0x20" + }, + "8725": { + "op": "DUP2" + }, + "8726": { + "op": "MSTORE" + }, + "8727": { + "op": "PUSH0" + }, + "8728": { + "op": "PUSH2", + "value": "0x823" + }, + "8731": { + "op": "PUSH1", + "value": "0x20" + }, + "8733": { + "op": "DUP4" + }, + "8734": { + "op": "ADD" + }, + "8735": { + "op": "DUP5" + }, + "8736": { + "op": "PUSH2", + "value": "0x21E4" + }, + "8739": { + "jump": "i", + "op": "JUMP" + }, + "8740": { + "op": "JUMPDEST" + }, + "8741": { + "op": "PUSH0" + }, + "8742": { + "op": "PUSH0" + }, + "8743": { + "op": "PUSH0" + }, + "8744": { + "op": "PUSH1", + "value": "0x40" + }, + "8746": { + "op": "DUP5" + }, + "8747": { + "op": "DUP7" + }, + "8748": { + "op": "SUB" + }, + "8749": { + "op": "SLT" + }, + "8750": { + "op": "ISZERO" + }, + "8751": { + "op": "PUSH2", + "value": "0x2236" + }, + "8754": { + "op": "JUMPI" + }, + "8755": { + "op": "PUSH0" + }, + "8756": { + "op": "PUSH0" + }, + "8757": { + "op": "REVERT" + }, + "8758": { + "op": "JUMPDEST" + }, + "8759": { + "op": "DUP4" + }, + "8760": { + "op": "CALLDATALOAD" + }, + "8761": { + "op": "PUSH2", + "value": "0x2241" + }, + "8764": { + "op": "DUP2" + }, + "8765": { + "op": "PUSH2", + "value": "0x1D33" + }, + "8768": { + "jump": "i", + "op": "JUMP" + }, + "8769": { + "op": "JUMPDEST" + }, + "8770": { + "op": "SWAP3" + }, + "8771": { + "op": "POP" + }, + "8772": { + "op": "PUSH1", + "value": "0x20" + }, + "8774": { + "op": "DUP5" + }, + "8775": { + "op": "ADD" + }, + "8776": { + "op": "CALLDATALOAD" + }, + "8777": { + "op": "PUSH1", + "value": "0x1" + }, + "8779": { + "op": "PUSH1", + "value": "0x1" + }, + "8781": { + "op": "PUSH1", + "value": "0x40" + }, + "8783": { + "op": "SHL" + }, + "8784": { + "op": "SUB" + }, + "8785": { + "op": "DUP2" + }, + "8786": { + "op": "GT" + }, + "8787": { + "op": "ISZERO" + }, + "8788": { + "op": "PUSH2", + "value": "0x225B" + }, + "8791": { + "op": "JUMPI" + }, + "8792": { + "op": "PUSH0" + }, + "8793": { + "op": "PUSH0" + }, + "8794": { + "op": "REVERT" + }, + "8795": { + "op": "JUMPDEST" + }, + "8796": { + "op": "PUSH2", + "value": "0x2267" + }, + "8799": { + "op": "DUP7" + }, + "8800": { + "op": "DUP3" + }, + "8801": { + "op": "DUP8" + }, + "8802": { + "op": "ADD" + }, + "8803": { + "op": "PUSH2", + "value": "0x1D47" + }, + "8806": { + "jump": "i", + "op": "JUMP" + }, + "8807": { + "op": "JUMPDEST" + }, + "8808": { + "op": "SWAP5" + }, + "8809": { + "op": "SWAP8" + }, + "8810": { + "op": "SWAP1" + }, + "8811": { + "op": "SWAP7" + }, + "8812": { + "op": "POP" + }, + "8813": { + "op": "SWAP4" + }, + "8814": { + "op": "SWAP5" + }, + "8815": { + "op": "POP" + }, + "8816": { + "op": "POP" + }, + "8817": { + "op": "POP" + }, + "8818": { + "op": "POP" + }, + "8819": { + "jump": "o", + "op": "JUMP" + }, + "8820": { + "op": "JUMPDEST" + }, + "8821": { + "op": "PUSH1", + "value": "0xFF" + }, + "8823": { + "op": "PUSH1", + "value": "0xF8" + }, + "8825": { + "op": "SHL" + }, + "8826": { + "op": "DUP9" + }, + "8827": { + "op": "AND" + }, + "8828": { + "op": "DUP2" + }, + "8829": { + "op": "MSTORE" + }, + "8830": { + "op": "PUSH1", + "value": "0xE0" + }, + "8832": { + "op": "PUSH1", + "value": "0x20" + }, + "8834": { + "op": "DUP3" + }, + "8835": { + "op": "ADD" + }, + "8836": { + "op": "MSTORE" + }, + "8837": { + "op": "PUSH0" + }, + "8838": { + "op": "PUSH2", + "value": "0x2292" + }, + "8841": { + "op": "PUSH1", + "value": "0xE0" + }, + "8843": { + "op": "DUP4" + }, + "8844": { + "op": "ADD" + }, + "8845": { + "op": "DUP10" + }, + "8846": { + "op": "PUSH2", + "value": "0x21E4" + }, + "8849": { + "jump": "i", + "op": "JUMP" + }, + "8850": { + "op": "JUMPDEST" + }, + "8851": { + "op": "DUP3" + }, + "8852": { + "op": "DUP2" + }, + "8853": { + "op": "SUB" + }, + "8854": { + "op": "PUSH1", + "value": "0x40" + }, + "8856": { + "op": "DUP5" + }, + "8857": { + "op": "ADD" + }, + "8858": { + "op": "MSTORE" + }, + "8859": { + "op": "PUSH2", + "value": "0x22A4" + }, + "8862": { + "op": "DUP2" + }, + "8863": { + "op": "DUP10" + }, + "8864": { + "op": "PUSH2", + "value": "0x21E4" + }, + "8867": { + "jump": "i", + "op": "JUMP" + }, + "8868": { + "op": "JUMPDEST" + }, + "8869": { + "op": "PUSH1", + "value": "0x60" + }, + "8871": { + "op": "DUP5" + }, + "8872": { + "op": "ADD" + }, + "8873": { + "op": "DUP9" + }, + "8874": { + "op": "SWAP1" + }, + "8875": { + "op": "MSTORE" + }, + "8876": { + "op": "PUSH1", + "value": "0x1" + }, + "8878": { + "op": "PUSH1", + "value": "0x1" + }, + "8880": { + "op": "PUSH1", + "value": "0xA0" + }, + "8882": { + "op": "SHL" + }, + "8883": { + "op": "SUB" + }, + "8884": { + "op": "DUP8" + }, + "8885": { + "op": "AND" + }, + "8886": { + "op": "PUSH1", + "value": "0x80" + }, + "8888": { + "op": "DUP6" + }, + "8889": { + "op": "ADD" + }, + "8890": { + "op": "MSTORE" + }, + "8891": { + "op": "PUSH1", + "value": "0xA0" + }, + "8893": { + "op": "DUP5" + }, + "8894": { + "op": "ADD" + }, + "8895": { + "op": "DUP7" + }, + "8896": { + "op": "SWAP1" + }, + "8897": { + "op": "MSTORE" + }, + "8898": { + "op": "DUP4" + }, + "8899": { + "op": "DUP2" + }, + "8900": { + "op": "SUB" + }, + "8901": { + "op": "PUSH1", + "value": "0xC0" + }, + "8903": { + "op": "DUP6" + }, + "8904": { + "op": "ADD" + }, + "8905": { + "op": "MSTORE" + }, + "8906": { + "op": "DUP5" + }, + "8907": { + "op": "MLOAD" + }, + "8908": { + "op": "DUP1" + }, + "8909": { + "op": "DUP3" + }, + "8910": { + "op": "MSTORE" + }, + "8911": { + "op": "PUSH1", + "value": "0x20" + }, + "8913": { + "op": "DUP1" + }, + "8914": { + "op": "DUP8" + }, + "8915": { + "op": "ADD" + }, + "8916": { + "op": "SWAP4" + }, + "8917": { + "op": "POP" + }, + "8918": { + "op": "SWAP1" + }, + "8919": { + "op": "SWAP2" + }, + "8920": { + "op": "ADD" + }, + "8921": { + "op": "SWAP1" + }, + "8922": { + "op": "PUSH0" + }, + "8923": { + "op": "JUMPDEST" + }, + "8924": { + "op": "DUP2" + }, + "8925": { + "op": "DUP2" + }, + "8926": { + "op": "LT" + }, + "8927": { + "op": "ISZERO" + }, + "8928": { + "op": "PUSH2", + "value": "0x22F9" + }, + "8931": { + "op": "JUMPI" + }, + "8932": { + "op": "DUP4" + }, + "8933": { + "op": "MLOAD" + }, + "8934": { + "op": "DUP4" + }, + "8935": { + "op": "MSTORE" + }, + "8936": { + "op": "PUSH1", + "value": "0x20" + }, + "8938": { + "op": "SWAP4" + }, + "8939": { + "op": "DUP5" + }, + "8940": { + "op": "ADD" + }, + "8941": { + "op": "SWAP4" + }, + "8942": { + "op": "SWAP1" + }, + "8943": { + "op": "SWAP3" + }, + "8944": { + "op": "ADD" + }, + "8945": { + "op": "SWAP2" + }, + "8946": { + "op": "PUSH1", + "value": "0x1" + }, + "8948": { + "op": "ADD" + }, + "8949": { + "op": "PUSH2", + "value": "0x22DB" + }, + "8952": { + "op": "JUMP" + }, + "8953": { + "op": "JUMPDEST" + }, + "8954": { + "op": "POP" + }, + "8955": { + "op": "SWAP1" + }, + "8956": { + "op": "SWAP12" + }, + "8957": { + "op": "SWAP11" + }, + "8958": { + "op": "POP" + }, + "8959": { + "op": "POP" + }, + "8960": { + "op": "POP" + }, + "8961": { + "op": "POP" + }, + "8962": { + "op": "POP" + }, + "8963": { + "op": "POP" + }, + "8964": { + "op": "POP" + }, + "8965": { + "op": "POP" + }, + "8966": { + "op": "POP" + }, + "8967": { + "op": "POP" + }, + "8968": { + "op": "POP" + }, + "8969": { + "jump": "o", + "op": "JUMP" + }, + "8970": { + "op": "JUMPDEST" + }, + "8971": { + "op": "PUSH0" + }, + "8972": { + "op": "PUSH0" + }, + "8973": { + "op": "PUSH0" + }, + "8974": { + "op": "PUSH0" + }, + "8975": { + "op": "PUSH1", + "value": "0x60" + }, + "8977": { + "op": "DUP6" + }, + "8978": { + "op": "DUP8" + }, + "8979": { + "op": "SUB" + }, + "8980": { + "op": "SLT" + }, + "8981": { + "op": "ISZERO" + }, + "8982": { + "op": "PUSH2", + "value": "0x231D" + }, + "8985": { + "op": "JUMPI" + }, + "8986": { + "op": "PUSH0" + }, + "8987": { + "op": "PUSH0" + }, + "8988": { + "op": "REVERT" + }, + "8989": { + "op": "JUMPDEST" + }, + "8990": { + "op": "DUP5" + }, + "8991": { + "op": "CALLDATALOAD" + }, + "8992": { + "op": "PUSH2", + "value": "0x2328" + }, + "8995": { + "op": "DUP2" + }, + "8996": { + "op": "PUSH2", + "value": "0x1D33" + }, + "8999": { + "jump": "i", + "op": "JUMP" + }, + "9000": { + "op": "JUMPDEST" + }, + "9001": { + "op": "SWAP4" + }, + "9002": { + "op": "POP" + }, + "9003": { + "op": "PUSH1", + "value": "0x20" + }, + "9005": { + "op": "DUP6" + }, + "9006": { + "op": "ADD" + }, + "9007": { + "op": "CALLDATALOAD" + }, + "9008": { + "op": "SWAP3" + }, + "9009": { + "op": "POP" + }, + "9010": { + "op": "PUSH1", + "value": "0x40" + }, + "9012": { + "op": "DUP6" + }, + "9013": { + "op": "ADD" + }, + "9014": { + "op": "CALLDATALOAD" + }, + "9015": { + "op": "PUSH1", + "value": "0x1" + }, + "9017": { + "op": "PUSH1", + "value": "0x1" + }, + "9019": { + "op": "PUSH1", + "value": "0x40" + }, + "9021": { + "op": "SHL" + }, + "9022": { + "op": "SUB" + }, + "9023": { + "op": "DUP2" + }, + "9024": { + "op": "GT" + }, + "9025": { + "op": "ISZERO" + }, + "9026": { + "op": "PUSH2", + "value": "0x2349" + }, + "9029": { + "op": "JUMPI" + }, + "9030": { + "op": "PUSH0" + }, + "9031": { + "op": "PUSH0" + }, + "9032": { + "op": "REVERT" + }, + "9033": { + "op": "JUMPDEST" + }, + "9034": { + "op": "PUSH2", + "value": "0x2355" + }, + "9037": { + "op": "DUP8" + }, + "9038": { + "op": "DUP3" + }, + "9039": { + "op": "DUP9" + }, + "9040": { + "op": "ADD" + }, + "9041": { + "op": "PUSH2", + "value": "0x1D47" + }, + "9044": { + "jump": "i", + "op": "JUMP" + }, + "9045": { + "op": "JUMPDEST" + }, + "9046": { + "op": "SWAP6" + }, + "9047": { + "op": "SWAP9" + }, + "9048": { + "op": "SWAP5" + }, + "9049": { + "op": "SWAP8" + }, + "9050": { + "op": "POP" + }, + "9051": { + "op": "SWAP6" + }, + "9052": { + "op": "POP" + }, + "9053": { + "op": "POP" + }, + "9054": { + "op": "POP" + }, + "9055": { + "op": "POP" + }, + "9056": { + "jump": "o", + "op": "JUMP" + }, + "9057": { + "op": "JUMPDEST" + }, + "9058": { + "op": "PUSH0" + }, + "9059": { + "op": "PUSH0" + }, + "9060": { + "op": "PUSH0" + }, + "9061": { + "op": "PUSH0" + }, + "9062": { + "op": "PUSH0" + }, + "9063": { + "op": "PUSH0" + }, + "9064": { + "op": "PUSH0" + }, + "9065": { + "op": "PUSH0" + }, + "9066": { + "op": "PUSH1", + "value": "0xA0" + }, + "9068": { + "op": "DUP10" + }, + "9069": { + "op": "DUP12" + }, + "9070": { + "op": "SUB" + }, + "9071": { + "op": "SLT" + }, + "9072": { + "op": "ISZERO" + }, + "9073": { + "op": "PUSH2", + "value": "0x2378" + }, + "9076": { + "op": "JUMPI" + }, + "9077": { + "op": "PUSH0" + }, + "9078": { + "op": "PUSH0" + }, + "9079": { + "op": "REVERT" + }, + "9080": { + "op": "JUMPDEST" + }, + "9081": { + "op": "DUP9" + }, + "9082": { + "op": "CALLDATALOAD" + }, + "9083": { + "op": "PUSH2", + "value": "0x2383" + }, + "9086": { + "op": "DUP2" + }, + "9087": { + "op": "PUSH2", + "value": "0x1D33" + }, + "9090": { + "jump": "i", + "op": "JUMP" + }, + "9091": { + "op": "JUMPDEST" + }, + "9092": { + "op": "SWAP8" + }, + "9093": { + "op": "POP" + }, + "9094": { + "op": "PUSH1", + "value": "0x20" + }, + "9096": { + "op": "DUP10" + }, + "9097": { + "op": "ADD" + }, + "9098": { + "op": "CALLDATALOAD" + }, + "9099": { + "op": "PUSH2", + "value": "0x2393" + }, + "9102": { + "op": "DUP2" + }, + "9103": { + "op": "PUSH2", + "value": "0x1D33" + }, + "9106": { + "jump": "i", + "op": "JUMP" + }, + "9107": { + "op": "JUMPDEST" + }, + "9108": { + "op": "SWAP7" + }, + "9109": { + "op": "POP" + }, + "9110": { + "op": "PUSH1", + "value": "0x40" + }, + "9112": { + "op": "DUP10" + }, + "9113": { + "op": "ADD" + }, + "9114": { + "op": "CALLDATALOAD" + }, + "9115": { + "op": "PUSH1", + "value": "0x1" + }, + "9117": { + "op": "PUSH1", + "value": "0x1" + }, + "9119": { + "op": "PUSH1", + "value": "0x40" + }, + "9121": { + "op": "SHL" + }, + "9122": { + "op": "SUB" + }, + "9123": { + "op": "DUP2" + }, + "9124": { + "op": "GT" + }, + "9125": { + "op": "ISZERO" + }, + "9126": { + "op": "PUSH2", + "value": "0x23AD" + }, + "9129": { + "op": "JUMPI" + }, + "9130": { + "op": "PUSH0" + }, + "9131": { + "op": "PUSH0" + }, + "9132": { + "op": "REVERT" + }, + "9133": { + "op": "JUMPDEST" + }, + "9134": { + "op": "PUSH2", + "value": "0x23B9" + }, + "9137": { + "op": "DUP12" + }, + "9138": { + "op": "DUP3" + }, + "9139": { + "op": "DUP13" + }, + "9140": { + "op": "ADD" + }, + "9141": { + "op": "PUSH2", + "value": "0x20B0" + }, + "9144": { + "jump": "i", + "op": "JUMP" + }, + "9145": { + "op": "JUMPDEST" + }, + "9146": { + "op": "SWAP1" + }, + "9147": { + "op": "SWAP8" + }, + "9148": { + "op": "POP" + }, + "9149": { + "op": "SWAP6" + }, + "9150": { + "op": "POP" + }, + "9151": { + "op": "POP" + }, + "9152": { + "op": "PUSH1", + "value": "0x60" + }, + "9154": { + "op": "DUP10" + }, + "9155": { + "op": "ADD" + }, + "9156": { + "op": "CALLDATALOAD" + }, + "9157": { + "op": "PUSH1", + "value": "0x1" + }, + "9159": { + "op": "PUSH1", + "value": "0x1" + }, + "9161": { + "op": "PUSH1", + "value": "0x40" + }, + "9163": { + "op": "SHL" + }, + "9164": { + "op": "SUB" + }, + "9165": { + "op": "DUP2" + }, + "9166": { + "op": "GT" + }, + "9167": { + "op": "ISZERO" + }, + "9168": { + "op": "PUSH2", + "value": "0x23D7" + }, + "9171": { + "op": "JUMPI" + }, + "9172": { + "op": "PUSH0" + }, + "9173": { + "op": "PUSH0" + }, + "9174": { + "op": "REVERT" + }, + "9175": { + "op": "JUMPDEST" + }, + "9176": { + "op": "PUSH2", + "value": "0x23E3" + }, + "9179": { + "op": "DUP12" + }, + "9180": { + "op": "DUP3" + }, + "9181": { + "op": "DUP13" + }, + "9182": { + "op": "ADD" + }, + "9183": { + "op": "PUSH2", + "value": "0x20B0" + }, + "9186": { + "jump": "i", + "op": "JUMP" + }, + "9187": { + "op": "JUMPDEST" + }, + "9188": { + "op": "SWAP1" + }, + "9189": { + "op": "SWAP6" + }, + "9190": { + "op": "POP" + }, + "9191": { + "op": "SWAP4" + }, + "9192": { + "op": "POP" + }, + "9193": { + "op": "POP" + }, + "9194": { + "op": "PUSH1", + "value": "0x80" + }, + "9196": { + "op": "DUP10" + }, + "9197": { + "op": "ADD" + }, + "9198": { + "op": "CALLDATALOAD" + }, + "9199": { + "op": "PUSH1", + "value": "0x1" + }, + "9201": { + "op": "PUSH1", + "value": "0x1" + }, + "9203": { + "op": "PUSH1", + "value": "0x40" + }, + "9205": { + "op": "SHL" + }, + "9206": { + "op": "SUB" + }, + "9207": { + "op": "DUP2" + }, + "9208": { + "op": "GT" + }, + "9209": { + "op": "ISZERO" + }, + "9210": { + "op": "PUSH2", + "value": "0x1E18" + }, + "9213": { + "op": "JUMPI" + }, + "9214": { + "op": "PUSH0" + }, + "9215": { + "op": "PUSH0" + }, + "9216": { + "op": "REVERT" + }, + "9217": { + "op": "JUMPDEST" + }, + "9218": { + "op": "PUSH0" + }, + "9219": { + "op": "PUSH0" + }, + "9220": { + "op": "PUSH0" + }, + "9221": { + "op": "PUSH0" + }, + "9222": { + "op": "PUSH0" + }, + "9223": { + "op": "PUSH0" + }, + "9224": { + "op": "PUSH1", + "value": "0xA0" + }, + "9226": { + "op": "DUP8" + }, + "9227": { + "op": "DUP10" + }, + "9228": { + "op": "SUB" + }, + "9229": { + "op": "SLT" + }, + "9230": { + "op": "ISZERO" + }, + "9231": { + "op": "PUSH2", + "value": "0x2416" + }, + "9234": { + "op": "JUMPI" + }, + "9235": { + "op": "PUSH0" + }, + "9236": { + "op": "PUSH0" + }, + "9237": { + "op": "REVERT" + }, + "9238": { + "op": "JUMPDEST" + }, + "9239": { + "op": "DUP7" + }, + "9240": { + "op": "CALLDATALOAD" + }, + "9241": { + "op": "PUSH2", + "value": "0x2421" + }, + "9244": { + "op": "DUP2" + }, + "9245": { + "op": "PUSH2", + "value": "0x1D33" + }, + "9248": { + "jump": "i", + "op": "JUMP" + }, + "9249": { + "op": "JUMPDEST" + }, + "9250": { + "op": "SWAP6" + }, + "9251": { + "op": "POP" + }, + "9252": { + "op": "PUSH1", + "value": "0x20" + }, + "9254": { + "op": "DUP8" + }, + "9255": { + "op": "ADD" + }, + "9256": { + "op": "CALLDATALOAD" + }, + "9257": { + "op": "SWAP5" + }, + "9258": { + "op": "POP" + }, + "9259": { + "op": "PUSH1", + "value": "0x40" + }, + "9261": { + "op": "DUP8" + }, + "9262": { + "op": "ADD" + }, + "9263": { + "op": "CALLDATALOAD" + }, + "9264": { + "op": "PUSH1", + "value": "0x1" + }, + "9266": { + "op": "PUSH1", + "value": "0x1" + }, + "9268": { + "op": "PUSH1", + "value": "0x40" + }, + "9270": { + "op": "SHL" + }, + "9271": { + "op": "SUB" + }, + "9272": { + "op": "DUP2" + }, + "9273": { + "op": "GT" + }, + "9274": { + "op": "ISZERO" + }, + "9275": { + "op": "PUSH2", + "value": "0x2442" + }, + "9278": { + "op": "JUMPI" + }, + "9279": { + "op": "PUSH0" + }, + "9280": { + "op": "PUSH0" + }, + "9281": { + "op": "REVERT" + }, + "9282": { + "op": "JUMPDEST" + }, + "9283": { + "op": "PUSH2", + "value": "0x244E" + }, + "9286": { + "op": "DUP10" + }, + "9287": { + "op": "DUP3" + }, + "9288": { + "op": "DUP11" + }, + "9289": { + "op": "ADD" + }, + "9290": { + "op": "PUSH2", + "value": "0x1D47" + }, + "9293": { + "jump": "i", + "op": "JUMP" + }, + "9294": { + "op": "JUMPDEST" + }, + "9295": { + "op": "SWAP1" + }, + "9296": { + "op": "SWAP6" + }, + "9297": { + "op": "POP" + }, + "9298": { + "op": "SWAP4" + }, + "9299": { + "op": "POP" + }, + "9300": { + "op": "PUSH2", + "value": "0x2461" + }, + "9303": { + "op": "SWAP1" + }, + "9304": { + "op": "POP" + }, + "9305": { + "op": "PUSH1", + "value": "0x60" + }, + "9307": { + "op": "DUP9" + }, + "9308": { + "op": "ADD" + }, + "9309": { + "op": "PUSH2", + "value": "0x2164" + }, + "9312": { + "jump": "i", + "op": "JUMP" + }, + "9313": { + "op": "JUMPDEST" + }, + "9314": { + "op": "SWAP6" + }, + "9315": { + "op": "SWAP9" + }, + "9316": { + "op": "SWAP5" + }, + "9317": { + "op": "SWAP8" + }, + "9318": { + "op": "POP" + }, + "9319": { + "op": "SWAP3" + }, + "9320": { + "op": "SWAP6" + }, + "9321": { + "op": "SWAP2" + }, + "9322": { + "op": "SWAP5" + }, + "9323": { + "op": "SWAP4" + }, + "9324": { + "op": "PUSH1", + "value": "0x80" + }, + "9326": { + "op": "SWAP1" + }, + "9327": { + "op": "SWAP3" + }, + "9328": { + "op": "ADD" + }, + "9329": { + "op": "CALLDATALOAD" + }, + "9330": { + "op": "SWAP3" + }, + "9331": { + "op": "POP" + }, + "9332": { + "op": "POP" + }, + "9333": { + "jump": "o", + "op": "JUMP" + }, + "9334": { + "op": "JUMPDEST" + }, + "9335": { + "op": "PUSH0" + }, + "9336": { + "op": "PUSH0" + }, + "9337": { + "op": "PUSH1", + "value": "0x40" + }, + "9339": { + "op": "DUP4" + }, + "9340": { + "op": "DUP6" + }, + "9341": { + "op": "SUB" + }, + "9342": { + "op": "SLT" + }, + "9343": { + "op": "ISZERO" + }, + "9344": { + "op": "PUSH2", + "value": "0x2487" + }, + "9347": { + "op": "JUMPI" + }, + "9348": { + "op": "PUSH0" + }, + "9349": { + "op": "PUSH0" + }, + "9350": { + "op": "REVERT" + }, + "9351": { + "op": "JUMPDEST" + }, + "9352": { + "op": "DUP3" + }, + "9353": { + "op": "CALLDATALOAD" + }, + "9354": { + "op": "PUSH2", + "value": "0x2492" + }, + "9357": { + "op": "DUP2" + }, + "9358": { + "op": "PUSH2", + "value": "0x1D33" + }, + "9361": { + "jump": "i", + "op": "JUMP" + }, + "9362": { + "op": "JUMPDEST" + }, + "9363": { + "op": "SWAP5" + }, + "9364": { + "op": "PUSH1", + "value": "0x20" + }, + "9366": { + "op": "SWAP4" + }, + "9367": { + "op": "SWAP1" + }, + "9368": { + "op": "SWAP4" + }, + "9369": { + "op": "ADD" + }, + "9370": { + "op": "CALLDATALOAD" + }, + "9371": { + "op": "SWAP4" + }, + "9372": { + "op": "POP" + }, + "9373": { + "op": "POP" + }, + "9374": { + "op": "POP" + }, + "9375": { + "jump": "o", + "op": "JUMP" + }, + "9376": { + "op": "JUMPDEST" + }, + "9377": { + "op": "PUSH0" + }, + "9378": { + "op": "PUSH0" + }, + "9379": { + "op": "PUSH0" + }, + "9380": { + "op": "PUSH0" + }, + "9381": { + "op": "PUSH0" + }, + "9382": { + "op": "PUSH0" + }, + "9383": { + "op": "PUSH1", + "value": "0xA0" + }, + "9385": { + "op": "DUP8" + }, + "9386": { + "op": "DUP10" + }, + "9387": { + "op": "SUB" + }, + "9388": { + "op": "SLT" + }, + "9389": { + "op": "ISZERO" + }, + "9390": { + "op": "PUSH2", + "value": "0x24B5" + }, + "9393": { + "op": "JUMPI" + }, + "9394": { + "op": "PUSH0" + }, + "9395": { + "op": "PUSH0" + }, + "9396": { + "op": "REVERT" + }, + "9397": { + "op": "JUMPDEST" + }, + "9398": { + "op": "DUP7" + }, + "9399": { + "op": "CALLDATALOAD" + }, + "9400": { + "op": "PUSH2", + "value": "0x24C0" + }, + "9403": { + "op": "DUP2" + }, + "9404": { + "op": "PUSH2", + "value": "0x1D33" + }, + "9407": { + "jump": "i", + "op": "JUMP" + }, + "9408": { + "op": "JUMPDEST" + }, + "9409": { + "op": "SWAP6" + }, + "9410": { + "op": "POP" + }, + "9411": { + "op": "PUSH1", + "value": "0x20" + }, + "9413": { + "op": "DUP8" + }, + "9414": { + "op": "ADD" + }, + "9415": { + "op": "CALLDATALOAD" + }, + "9416": { + "op": "PUSH2", + "value": "0x24D0" + }, + "9419": { + "op": "DUP2" + }, + "9420": { + "op": "PUSH2", + "value": "0x1D33" + }, + "9423": { + "jump": "i", + "op": "JUMP" + }, + "9424": { + "op": "JUMPDEST" + }, + "9425": { + "op": "SWAP5" + }, + "9426": { + "op": "POP" + }, + "9427": { + "op": "PUSH1", + "value": "0x40" + }, + "9429": { + "op": "DUP8" + }, + "9430": { + "op": "ADD" + }, + "9431": { + "op": "CALLDATALOAD" + }, + "9432": { + "op": "SWAP4" + }, + "9433": { + "op": "POP" + }, + "9434": { + "op": "PUSH1", + "value": "0x60" + }, + "9436": { + "op": "DUP8" + }, + "9437": { + "op": "ADD" + }, + "9438": { + "op": "CALLDATALOAD" + }, + "9439": { + "op": "SWAP3" + }, + "9440": { + "op": "POP" + }, + "9441": { + "op": "PUSH1", + "value": "0x80" + }, + "9443": { + "op": "DUP8" + }, + "9444": { + "op": "ADD" + }, + "9445": { + "op": "CALLDATALOAD" + }, + "9446": { + "op": "PUSH1", + "value": "0x1" + }, + "9448": { + "op": "PUSH1", + "value": "0x1" + }, + "9450": { + "op": "PUSH1", + "value": "0x40" + }, + "9452": { + "op": "SHL" + }, + "9453": { + "op": "SUB" + }, + "9454": { + "op": "DUP2" + }, + "9455": { + "op": "GT" + }, + "9456": { + "op": "ISZERO" + }, + "9457": { + "op": "PUSH2", + "value": "0x24F8" + }, + "9460": { + "op": "JUMPI" + }, + "9461": { + "op": "PUSH0" + }, + "9462": { + "op": "PUSH0" + }, + "9463": { + "op": "REVERT" + }, + "9464": { + "op": "JUMPDEST" + }, + "9465": { + "op": "PUSH2", + "value": "0x2504" + }, + "9468": { + "op": "DUP10" + }, + "9469": { + "op": "DUP3" + }, + "9470": { + "op": "DUP11" + }, + "9471": { + "op": "ADD" + }, + "9472": { + "op": "PUSH2", + "value": "0x1D47" + }, + "9475": { + "jump": "i", + "op": "JUMP" + }, + "9476": { + "op": "JUMPDEST" + }, + "9477": { + "op": "SWAP8" + }, + "9478": { + "op": "SWAP11" + }, + "9479": { + "op": "SWAP7" + }, + "9480": { + "op": "SWAP10" + }, + "9481": { + "op": "POP" + }, + "9482": { + "op": "SWAP5" + }, + "9483": { + "op": "SWAP8" + }, + "9484": { + "op": "POP" + }, + "9485": { + "op": "SWAP3" + }, + "9486": { + "op": "SWAP6" + }, + "9487": { + "op": "SWAP4" + }, + "9488": { + "op": "SWAP5" + }, + "9489": { + "op": "SWAP3" + }, + "9490": { + "op": "POP" + }, + "9491": { + "op": "POP" + }, + "9492": { + "op": "POP" + }, + "9493": { + "jump": "o", + "op": "JUMP" + }, + "9494": { + "op": "JUMPDEST" + }, + "9495": { + "op": "DUP3" + }, + "9496": { + "op": "DUP2" + }, + "9497": { + "op": "MSTORE" + }, + "9498": { + "op": "PUSH1", + "value": "0x40" + }, + "9500": { + "op": "PUSH1", + "value": "0x20" + }, + "9502": { + "op": "DUP3" + }, + "9503": { + "op": "ADD" + }, + "9504": { + "op": "MSTORE" + }, + "9505": { + "op": "PUSH0" + }, + "9506": { + "op": "PUSH2", + "value": "0x982" + }, + "9509": { + "op": "PUSH1", + "value": "0x40" + }, + "9511": { + "op": "DUP4" + }, + "9512": { + "op": "ADD" + }, + "9513": { + "op": "DUP5" + }, + "9514": { + "op": "PUSH2", + "value": "0x21E4" + }, + "9517": { + "jump": "i", + "op": "JUMP" + }, + "9518": { + "op": "JUMPDEST" + }, + "9519": { + "op": "PUSH0" + }, + "9520": { + "op": "PUSH1", + "value": "0x20" + }, + "9522": { + "op": "DUP3" + }, + "9523": { + "op": "DUP5" + }, + "9524": { + "op": "SUB" + }, + "9525": { + "op": "SLT" + }, + "9526": { + "op": "ISZERO" + }, + "9527": { + "op": "PUSH2", + "value": "0x253E" + }, + "9530": { + "op": "JUMPI" + }, + "9531": { + "op": "PUSH0" + }, + "9532": { + "op": "PUSH0" + }, + "9533": { + "op": "REVERT" + }, + "9534": { + "op": "JUMPDEST" + }, + "9535": { + "op": "DUP2" + }, + "9536": { + "op": "MLOAD" + }, + "9537": { + "op": "PUSH2", + "value": "0x823" + }, + "9540": { + "op": "DUP2" + }, + "9541": { + "op": "PUSH2", + "value": "0x1E38" + }, + "9544": { + "jump": "i", + "op": "JUMP" + }, + "9545": { + "op": "JUMPDEST" + }, + "9546": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "9551": { + "op": "PUSH1", + "value": "0xE0" + }, + "9553": { + "op": "SHL" + }, + "9554": { + "op": "PUSH0" + }, + "9555": { + "op": "MSTORE" + }, + "9556": { + "op": "PUSH1", + "value": "0x32" + }, + "9558": { + "op": "PUSH1", + "value": "0x4" + }, + "9560": { + "op": "MSTORE" + }, + "9561": { + "op": "PUSH1", + "value": "0x24" + }, + "9563": { + "op": "PUSH0" + }, + "9564": { + "op": "REVERT" + }, + "9565": { + "op": "JUMPDEST" + }, + "9566": { + "op": "PUSH0" + }, + "9567": { + "op": "DUP3" + }, + "9568": { + "op": "CALLDATALOAD" + }, + "9569": { + "op": "PUSH1", + "value": "0x5E" + }, + "9571": { + "op": "NOT" + }, + "9572": { + "op": "DUP4" + }, + "9573": { + "op": "CALLDATASIZE" + }, + "9574": { + "op": "SUB" + }, + "9575": { + "op": "ADD" + }, + "9576": { + "op": "DUP2" + }, + "9577": { + "op": "SLT" + }, + "9578": { + "op": "PUSH2", + "value": "0x2571" + }, + "9581": { + "op": "JUMPI" + }, + "9582": { + "op": "PUSH0" + }, + "9583": { + "op": "PUSH0" + }, + "9584": { + "op": "REVERT" + }, + "9585": { + "op": "JUMPDEST" + }, + "9586": { + "op": "SWAP2" + }, + "9587": { + "op": "SWAP1" + }, + "9588": { + "op": "SWAP2" + }, + "9589": { + "op": "ADD" + }, + "9590": { + "op": "SWAP3" + }, + "9591": { + "op": "SWAP2" + }, + "9592": { + "op": "POP" + }, + "9593": { + "op": "POP" + }, + "9594": { + "jump": "o", + "op": "JUMP" + }, + "9595": { + "op": "JUMPDEST" + }, + "9596": { + "op": "PUSH0" + }, + "9597": { + "op": "PUSH0" + }, + "9598": { + "op": "DUP4" + }, + "9599": { + "op": "CALLDATALOAD" + }, + "9600": { + "op": "PUSH1", + "value": "0x1E" + }, + "9602": { + "op": "NOT" + }, + "9603": { + "op": "DUP5" + }, + "9604": { + "op": "CALLDATASIZE" + }, + "9605": { + "op": "SUB" + }, + "9606": { + "op": "ADD" + }, + "9607": { + "op": "DUP2" + }, + "9608": { + "op": "SLT" + }, + "9609": { + "op": "PUSH2", + "value": "0x2590" + }, + "9612": { + "op": "JUMPI" + }, + "9613": { + "op": "PUSH0" + }, + "9614": { + "op": "PUSH0" + }, + "9615": { + "op": "REVERT" + }, + "9616": { + "op": "JUMPDEST" + }, + "9617": { + "op": "DUP4" + }, + "9618": { + "op": "ADD" + }, + "9619": { + "op": "DUP1" + }, + "9620": { + "op": "CALLDATALOAD" + }, + "9621": { + "op": "SWAP2" + }, + "9622": { + "op": "POP" + }, + "9623": { + "op": "PUSH1", + "value": "0x1" + }, + "9625": { + "op": "PUSH1", + "value": "0x1" + }, + "9627": { + "op": "PUSH1", + "value": "0x40" + }, + "9629": { + "op": "SHL" + }, + "9630": { + "op": "SUB" + }, + "9631": { + "op": "DUP3" + }, + "9632": { + "op": "GT" + }, + "9633": { + "op": "ISZERO" + }, + "9634": { + "op": "PUSH2", + "value": "0x25A9" + }, + "9637": { + "op": "JUMPI" + }, + "9638": { + "op": "PUSH0" + }, + "9639": { + "op": "PUSH0" + }, + "9640": { + "op": "REVERT" + }, + "9641": { + "op": "JUMPDEST" + }, + "9642": { + "op": "PUSH1", + "value": "0x20" + }, + "9644": { + "op": "ADD" + }, + "9645": { + "op": "SWAP2" + }, + "9646": { + "op": "POP" + }, + "9647": { + "op": "CALLDATASIZE" + }, + "9648": { + "op": "DUP2" + }, + "9649": { + "op": "SWAP1" + }, + "9650": { + "op": "SUB" + }, + "9651": { + "op": "DUP3" + }, + "9652": { + "op": "SGT" + }, + "9653": { + "op": "ISZERO" + }, + "9654": { + "op": "PUSH2", + "value": "0x1D84" + }, + "9657": { + "op": "JUMPI" + }, + "9658": { + "op": "PUSH0" + }, + "9659": { + "op": "PUSH0" + }, + "9660": { + "op": "REVERT" + }, + "9661": { + "op": "JUMPDEST" + }, + "9662": { + "op": "PUSH0" + }, + "9663": { + "op": "PUSH1", + "value": "0x20" + }, + "9665": { + "op": "DUP3" + }, + "9666": { + "op": "DUP5" + }, + "9667": { + "op": "SUB" + }, + "9668": { + "op": "SLT" + }, + "9669": { + "op": "ISZERO" + }, + "9670": { + "op": "PUSH2", + "value": "0x25CD" + }, + "9673": { + "op": "JUMPI" + }, + "9674": { + "op": "PUSH0" + }, + "9675": { + "op": "PUSH0" + }, + "9676": { + "op": "REVERT" + }, + "9677": { + "op": "JUMPDEST" + }, + "9678": { + "op": "DUP2" + }, + "9679": { + "op": "MLOAD" + }, + "9680": { + "op": "PUSH2", + "value": "0x823" + }, + "9683": { + "op": "DUP2" + }, + "9684": { + "op": "PUSH2", + "value": "0x1D33" + }, + "9687": { + "jump": "i", + "op": "JUMP" + }, + "9688": { + "op": "JUMPDEST" + }, + "9689": { + "op": "PUSH0" + }, + "9690": { + "op": "PUSH1", + "value": "0x20" + }, + "9692": { + "op": "DUP3" + }, + "9693": { + "op": "DUP5" + }, + "9694": { + "op": "SUB" + }, + "9695": { + "op": "SLT" + }, + "9696": { + "op": "ISZERO" + }, + "9697": { + "op": "PUSH2", + "value": "0x25E8" + }, + "9700": { + "op": "JUMPI" + }, + "9701": { + "op": "PUSH0" + }, + "9702": { + "op": "PUSH0" + }, + "9703": { + "op": "REVERT" + }, + "9704": { + "op": "JUMPDEST" + }, + "9705": { + "op": "POP" + }, + "9706": { + "op": "MLOAD" + }, + "9707": { + "op": "SWAP2" + }, + "9708": { + "op": "SWAP1" + }, + "9709": { + "op": "POP" + }, + "9710": { + "jump": "o", + "op": "JUMP" + }, + "9711": { + "op": "JUMPDEST" + }, + "9712": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "9717": { + "op": "PUSH1", + "value": "0xE0" + }, + "9719": { + "op": "SHL" + }, + "9720": { + "op": "PUSH0" + }, + "9721": { + "op": "MSTORE" + }, + "9722": { + "op": "PUSH1", + "value": "0x11" + }, + "9724": { + "op": "PUSH1", + "value": "0x4" + }, + "9726": { + "op": "MSTORE" + }, + "9727": { + "op": "PUSH1", + "value": "0x24" + }, + "9729": { + "op": "PUSH0" + }, + "9730": { + "op": "REVERT" + }, + "9731": { + "op": "JUMPDEST" + }, + "9732": { + "op": "DUP2" + }, + "9733": { + "op": "DUP2" + }, + "9734": { + "op": "SUB" + }, + "9735": { + "op": "DUP2" + }, + "9736": { + "op": "DUP2" + }, + "9737": { + "op": "GT" + }, + "9738": { + "op": "ISZERO" + }, + "9739": { + "op": "PUSH2", + "value": "0x5EC" + }, + "9742": { + "op": "JUMPI" + }, + "9743": { + "op": "PUSH2", + "value": "0x5EC" + }, + "9746": { + "op": "PUSH2", + "value": "0x25EF" + }, + "9749": { + "jump": "i", + "op": "JUMP" + }, + "9750": { + "op": "JUMPDEST" + }, + "9751": { + "op": "DUP2" + }, + "9752": { + "op": "DUP4" + }, + "9753": { + "op": "MSTORE" + }, + "9754": { + "op": "DUP2" + }, + "9755": { + "op": "DUP2" + }, + "9756": { + "op": "PUSH1", + "value": "0x20" + }, + "9758": { + "op": "DUP6" + }, + "9759": { + "op": "ADD" + }, + "9760": { + "op": "CALLDATACOPY" + }, + "9761": { + "op": "POP" + }, + "9762": { + "op": "PUSH0" + }, + "9763": { + "op": "DUP3" + }, + "9764": { + "op": "DUP3" + }, + "9765": { + "op": "ADD" + }, + "9766": { + "op": "PUSH1", + "value": "0x20" + }, + "9768": { + "op": "SWAP1" + }, + "9769": { + "op": "DUP2" + }, + "9770": { + "op": "ADD" + }, + "9771": { + "op": "SWAP2" + }, + "9772": { + "op": "SWAP1" + }, + "9773": { + "op": "SWAP2" + }, + "9774": { + "op": "MSTORE" + }, + "9775": { + "op": "PUSH1", + "value": "0x1F" + }, + "9777": { + "op": "SWAP1" + }, + "9778": { + "op": "SWAP2" + }, + "9779": { + "op": "ADD" + }, + "9780": { + "op": "PUSH1", + "value": "0x1F" + }, + "9782": { + "op": "NOT" + }, + "9783": { + "op": "AND" + }, + "9784": { + "op": "SWAP1" + }, + "9785": { + "op": "SWAP2" + }, + "9786": { + "op": "ADD" + }, + "9787": { + "op": "ADD" + }, + "9788": { + "op": "SWAP1" + }, + "9789": { + "jump": "o", + "op": "JUMP" + }, + "9790": { + "op": "JUMPDEST" + }, + "9791": { + "op": "PUSH1", + "value": "0x1" + }, + "9793": { + "op": "PUSH1", + "value": "0x1" + }, + "9795": { + "op": "PUSH1", + "value": "0xA0" + }, + "9797": { + "op": "SHL" + }, + "9798": { + "op": "SUB" + }, + "9799": { + "op": "DUP8" + }, + "9800": { + "op": "AND" + }, + "9801": { + "op": "DUP2" + }, + "9802": { + "op": "MSTORE" + }, + "9803": { + "op": "PUSH1", + "value": "0x80" + }, + "9805": { + "op": "PUSH1", + "value": "0x20" + }, + "9807": { + "op": "DUP3" + }, + "9808": { + "op": "ADD" + }, + "9809": { + "op": "DUP2" + }, + "9810": { + "op": "SWAP1" + }, + "9811": { + "op": "MSTORE" + }, + "9812": { + "op": "PUSH0" + }, + "9813": { + "op": "SWAP1" + }, + "9814": { + "op": "PUSH2", + "value": "0x2662" + }, + "9817": { + "op": "SWAP1" + }, + "9818": { + "op": "DUP4" + }, + "9819": { + "op": "ADD" + }, + "9820": { + "op": "DUP8" + }, + "9821": { + "op": "DUP10" + }, + "9822": { + "op": "PUSH2", + "value": "0x2616" + }, + "9825": { + "jump": "i", + "op": "JUMP" + }, + "9826": { + "op": "JUMPDEST" + }, + "9827": { + "op": "DUP3" + }, + "9828": { + "op": "DUP2" + }, + "9829": { + "op": "SUB" + }, + "9830": { + "op": "PUSH1", + "value": "0x40" + }, + "9832": { + "op": "DUP5" + }, + "9833": { + "op": "ADD" + }, + "9834": { + "op": "MSTORE" + }, + "9835": { + "op": "PUSH2", + "value": "0x2675" + }, + "9838": { + "op": "DUP2" + }, + "9839": { + "op": "DUP7" + }, + "9840": { + "op": "DUP9" + }, + "9841": { + "op": "PUSH2", + "value": "0x2616" + }, + "9844": { + "jump": "i", + "op": "JUMP" + }, + "9845": { + "op": "JUMPDEST" + }, + "9846": { + "op": "SWAP2" + }, + "9847": { + "op": "POP" + }, + "9848": { + "op": "POP" + }, + "9849": { + "op": "PUSH1", + "value": "0x1" + }, + "9851": { + "op": "DUP1" + }, + "9852": { + "op": "PUSH1", + "value": "0xA0" + }, + "9854": { + "op": "SHL" + }, + "9855": { + "op": "SUB" + }, + "9856": { + "op": "DUP4" + }, + "9857": { + "op": "AND" + }, + "9858": { + "op": "PUSH1", + "value": "0x60" + }, + "9860": { + "op": "DUP4" + }, + "9861": { + "op": "ADD" + }, + "9862": { + "op": "MSTORE" + }, + "9863": { + "op": "SWAP8" + }, + "9864": { + "op": "SWAP7" + }, + "9865": { + "op": "POP" + }, + "9866": { + "op": "POP" + }, + "9867": { + "op": "POP" + }, + "9868": { + "op": "POP" + }, + "9869": { + "op": "POP" + }, + "9870": { + "op": "POP" + }, + "9871": { + "op": "POP" + }, + "9872": { + "jump": "o", + "op": "JUMP" + }, + "9873": { + "op": "JUMPDEST" + }, + "9874": { + "op": "PUSH0" + }, + "9875": { + "op": "PUSH1", + "value": "0x1" + }, + "9877": { + "op": "DUP3" + }, + "9878": { + "op": "ADD" + }, + "9879": { + "op": "PUSH2", + "value": "0x26A2" + }, + "9882": { + "op": "JUMPI" + }, + "9883": { + "op": "PUSH2", + "value": "0x26A2" + }, + "9886": { + "op": "PUSH2", + "value": "0x25EF" + }, + "9889": { + "jump": "i", + "op": "JUMP" + }, + "9890": { + "op": "JUMPDEST" + }, + "9891": { + "op": "POP" + }, + "9892": { + "op": "PUSH1", + "value": "0x1" + }, + "9894": { + "op": "ADD" + }, + "9895": { + "op": "SWAP1" + }, + "9896": { + "jump": "o", + "op": "JUMP" + }, + "9897": { + "op": "JUMPDEST" + }, + "9898": { + "op": "PUSH1", + "value": "0x1" + }, + "9900": { + "op": "DUP2" + }, + "9901": { + "op": "DUP2" + }, + "9902": { + "op": "SHR" + }, + "9903": { + "op": "SWAP1" + }, + "9904": { + "op": "DUP3" + }, + "9905": { + "op": "AND" + }, + "9906": { + "op": "DUP1" + }, + "9907": { + "op": "PUSH2", + "value": "0x26BD" + }, + "9910": { + "op": "JUMPI" + }, + "9911": { + "op": "PUSH1", + "value": "0x7F" + }, + "9913": { + "op": "DUP3" + }, + "9914": { + "op": "AND" + }, + "9915": { + "op": "SWAP2" + }, + "9916": { + "op": "POP" + }, + "9917": { + "op": "JUMPDEST" + }, + "9918": { + "op": "PUSH1", + "value": "0x20" + }, + "9920": { + "op": "DUP3" + }, + "9921": { + "op": "LT" + }, + "9922": { + "op": "DUP2" + }, + "9923": { + "op": "SUB" + }, + "9924": { + "op": "PUSH2", + "value": "0x26DB" + }, + "9927": { + "op": "JUMPI" + }, + "9928": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "9933": { + "op": "PUSH1", + "value": "0xE0" + }, + "9935": { + "op": "SHL" + }, + "9936": { + "op": "PUSH0" + }, + "9937": { + "op": "MSTORE" + }, + "9938": { + "op": "PUSH1", + "value": "0x22" + }, + "9940": { + "op": "PUSH1", + "value": "0x4" + }, + "9942": { + "op": "MSTORE" + }, + "9943": { + "op": "PUSH1", + "value": "0x24" + }, + "9945": { + "op": "PUSH0" + }, + "9946": { + "op": "REVERT" + }, + "9947": { + "op": "JUMPDEST" + }, + "9948": { + "op": "POP" + }, + "9949": { + "op": "SWAP2" + }, + "9950": { + "op": "SWAP1" + }, + "9951": { + "op": "POP" + }, + "9952": { + "jump": "o", + "op": "JUMP" + }, + "9953": { + "op": "JUMPDEST" + }, + "9954": { + "op": "PUSH4", + "value": "0x4E487B71" + }, + "9959": { + "op": "PUSH1", + "value": "0xE0" + }, + "9961": { + "op": "SHL" + }, + "9962": { + "op": "PUSH0" + }, + "9963": { + "op": "MSTORE" + }, + "9964": { + "op": "PUSH1", + "value": "0x21" + }, + "9966": { + "op": "PUSH1", + "value": "0x4" + }, + "9968": { + "op": "MSTORE" + }, + "9969": { + "op": "PUSH1", + "value": "0x24" + }, + "9971": { + "op": "PUSH0" + }, + "9972": { + "op": "REVERT" + }, + "9973": { + "op": "JUMPDEST" + }, + "9974": { + "op": "DUP2" + }, + "9975": { + "op": "DUP4" + }, + "9976": { + "op": "DUP3" + }, + "9977": { + "op": "CALLDATACOPY" + }, + "9978": { + "op": "PUSH0" + }, + "9979": { + "op": "SWAP2" + }, + "9980": { + "op": "ADD" + }, + "9981": { + "op": "SWAP1" + }, + "9982": { + "op": "DUP2" + }, + "9983": { + "op": "MSTORE" + }, + "9984": { + "op": "SWAP2" + }, + "9985": { + "op": "SWAP1" + }, + "9986": { + "op": "POP" + }, + "9987": { + "jump": "o", + "op": "JUMP" + }, + "9988": { + "op": "JUMPDEST" + }, + "9989": { + "op": "PUSH1", + "value": "0x1F" + }, + "9991": { + "op": "DUP3" + }, + "9992": { + "op": "GT" + }, + "9993": { + "op": "ISZERO" + }, + "9994": { + "op": "PUSH2", + "value": "0x1389" + }, + "9997": { + "op": "JUMPI" + }, + "9998": { + "op": "DUP1" + }, + "9999": { + "op": "PUSH0" + }, + "10000": { + "op": "MSTORE" + }, + "10001": { + "op": "PUSH1", + "value": "0x20" + }, + "10003": { + "op": "PUSH0" + }, + "10004": { + "op": "KECCAK256" + }, + "10005": { + "op": "PUSH1", + "value": "0x1F" + }, + "10007": { + "op": "DUP5" + }, + "10008": { + "op": "ADD" + }, + "10009": { + "op": "PUSH1", + "value": "0x5" + }, + "10011": { + "op": "SHR" + }, + "10012": { + "op": "DUP2" + }, + "10013": { + "op": "ADD" + }, + "10014": { + "op": "PUSH1", + "value": "0x20" + }, + "10016": { + "op": "DUP6" + }, + "10017": { + "op": "LT" + }, + "10018": { + "op": "ISZERO" + }, + "10019": { + "op": "PUSH2", + "value": "0x2729" + }, + "10022": { + "op": "JUMPI" + }, + "10023": { + "op": "POP" + }, + "10024": { + "op": "DUP1" + }, + "10025": { + "op": "JUMPDEST" + }, + "10026": { + "op": "PUSH1", + "value": "0x1F" + }, + "10028": { + "op": "DUP5" + }, + "10029": { + "op": "ADD" + }, + "10030": { + "op": "PUSH1", + "value": "0x5" + }, + "10032": { + "op": "SHR" + }, + "10033": { + "op": "DUP3" + }, + "10034": { + "op": "ADD" + }, + "10035": { + "op": "SWAP2" + }, + "10036": { + "op": "POP" + }, + "10037": { + "op": "JUMPDEST" + }, + "10038": { + "op": "DUP2" + }, + "10039": { + "op": "DUP2" + }, + "10040": { + "op": "LT" + }, + "10041": { + "op": "ISZERO" + }, + "10042": { + "op": "PUSH2", + "value": "0xB9E" + }, + "10045": { + "op": "JUMPI" + }, + "10046": { + "op": "PUSH0" + }, + "10047": { + "op": "DUP2" + }, + "10048": { + "op": "SSTORE" + }, + "10049": { + "op": "PUSH1", + "value": "0x1" + }, + "10051": { + "op": "ADD" + }, + "10052": { + "op": "PUSH2", + "value": "0x2735" + }, + "10055": { + "op": "JUMP" + }, + "10056": { + "op": "JUMPDEST" + }, + "10057": { + "op": "DUP2" + }, + "10058": { + "op": "MLOAD" + }, + "10059": { + "op": "PUSH1", + "value": "0x1" + }, + "10061": { + "op": "PUSH1", + "value": "0x1" + }, + "10063": { + "op": "PUSH1", + "value": "0x40" + }, + "10065": { + "op": "SHL" + }, + "10066": { + "op": "SUB" + }, + "10067": { + "op": "DUP2" + }, + "10068": { + "op": "GT" + }, + "10069": { + "op": "ISZERO" + }, + "10070": { + "op": "PUSH2", + "value": "0x2761" + }, + "10073": { + "op": "JUMPI" + }, + "10074": { + "op": "PUSH2", + "value": "0x2761" + }, + "10077": { + "op": "PUSH2", + "value": "0x1F82" + }, + "10080": { + "jump": "i", + "op": "JUMP" + }, + "10081": { + "op": "JUMPDEST" + }, + "10082": { + "op": "PUSH2", + "value": "0x2775" + }, + "10085": { + "op": "DUP2" + }, + "10086": { + "op": "PUSH2", + "value": "0x276F" + }, + "10089": { + "op": "DUP5" + }, + "10090": { + "op": "SLOAD" + }, + "10091": { + "op": "PUSH2", + "value": "0x26A9" + }, + "10094": { + "jump": "i", + "op": "JUMP" + }, + "10095": { + "op": "JUMPDEST" + }, + "10096": { + "op": "DUP5" + }, + "10097": { + "op": "PUSH2", + "value": "0x2704" + }, + "10100": { + "jump": "i", + "op": "JUMP" + }, + "10101": { + "op": "JUMPDEST" + }, + "10102": { + "op": "PUSH1", + "value": "0x20" + }, + "10104": { + "op": "PUSH1", + "value": "0x1F" + }, + "10106": { + "op": "DUP3" + }, + "10107": { + "op": "GT" + }, + "10108": { + "op": "PUSH1", + "value": "0x1" + }, + "10110": { + "op": "DUP2" + }, + "10111": { + "op": "EQ" + }, + "10112": { + "op": "PUSH2", + "value": "0x27A7" + }, + "10115": { + "op": "JUMPI" + }, + "10116": { + "op": "PUSH0" + }, + "10117": { + "op": "DUP4" + }, + "10118": { + "op": "ISZERO" + }, + "10119": { + "op": "PUSH2", + "value": "0x2790" + }, + "10122": { + "op": "JUMPI" + }, + "10123": { + "op": "POP" + }, + "10124": { + "op": "DUP5" + }, + "10125": { + "op": "DUP3" + }, + "10126": { + "op": "ADD" + }, + "10127": { + "op": "MLOAD" + }, + "10128": { + "op": "JUMPDEST" + }, + "10129": { + "op": "PUSH0" + }, + "10130": { + "op": "NOT" + }, + "10131": { + "op": "PUSH1", + "value": "0x3" + }, + "10133": { + "op": "DUP6" + }, + "10134": { + "op": "SWAP1" + }, + "10135": { + "op": "SHL" + }, + "10136": { + "op": "SHR" + }, + "10137": { + "op": "NOT" + }, + "10138": { + "op": "AND" + }, + "10139": { + "op": "PUSH1", + "value": "0x1" + }, + "10141": { + "op": "DUP5" + }, + "10142": { + "op": "SWAP1" + }, + "10143": { + "op": "SHL" + }, + "10144": { + "op": "OR" + }, + "10145": { + "op": "DUP5" + }, + "10146": { + "op": "SSTORE" + }, + "10147": { + "op": "PUSH2", + "value": "0xB9E" + }, + "10150": { + "op": "JUMP" + }, + "10151": { + "op": "JUMPDEST" + }, + "10152": { + "op": "PUSH0" + }, + "10153": { + "op": "DUP5" + }, + "10154": { + "op": "DUP2" + }, + "10155": { + "op": "MSTORE" + }, + "10156": { + "op": "PUSH1", + "value": "0x20" + }, + "10158": { + "op": "DUP2" + }, + "10159": { + "op": "KECCAK256" + }, + "10160": { + "op": "PUSH1", + "value": "0x1F" + }, + "10162": { + "op": "NOT" + }, + "10163": { + "op": "DUP6" + }, + "10164": { + "op": "AND" + }, + "10165": { + "op": "SWAP2" + }, + "10166": { + "op": "JUMPDEST" + }, + "10167": { + "op": "DUP3" + }, + "10168": { + "op": "DUP2" + }, + "10169": { + "op": "LT" + }, + "10170": { + "op": "ISZERO" + }, + "10171": { + "op": "PUSH2", + "value": "0x27D6" + }, + "10174": { + "op": "JUMPI" + }, + "10175": { + "op": "DUP8" + }, + "10176": { + "op": "DUP6" + }, + "10177": { + "op": "ADD" + }, + "10178": { + "op": "MLOAD" + }, + "10179": { + "op": "DUP3" + }, + "10180": { + "op": "SSTORE" + }, + "10181": { + "op": "PUSH1", + "value": "0x20" + }, + "10183": { + "op": "SWAP5" + }, + "10184": { + "op": "DUP6" + }, + "10185": { + "op": "ADD" + }, + "10186": { + "op": "SWAP5" + }, + "10187": { + "op": "PUSH1", + "value": "0x1" + }, + "10189": { + "op": "SWAP1" + }, + "10190": { + "op": "SWAP3" + }, + "10191": { + "op": "ADD" + }, + "10192": { + "op": "SWAP2" + }, + "10193": { + "op": "ADD" + }, + "10194": { + "op": "PUSH2", + "value": "0x27B6" + }, + "10197": { + "op": "JUMP" + }, + "10198": { + "op": "JUMPDEST" + }, + "10199": { + "op": "POP" + }, + "10200": { + "op": "DUP5" + }, + "10201": { + "op": "DUP3" + }, + "10202": { + "op": "LT" + }, + "10203": { + "op": "ISZERO" + }, + "10204": { + "op": "PUSH2", + "value": "0x27F3" + }, + "10207": { + "op": "JUMPI" + }, + "10208": { + "op": "DUP7" + }, + "10209": { + "op": "DUP5" + }, + "10210": { + "op": "ADD" + }, + "10211": { + "op": "MLOAD" + }, + "10212": { + "op": "PUSH0" + }, + "10213": { + "op": "NOT" + }, + "10214": { + "op": "PUSH1", + "value": "0x3" + }, + "10216": { + "op": "DUP8" + }, + "10217": { + "op": "SWAP1" + }, + "10218": { + "op": "SHL" + }, + "10219": { + "op": "PUSH1", + "value": "0xF8" + }, + "10221": { + "op": "AND" + }, + "10222": { + "op": "SHR" + }, + "10223": { + "op": "NOT" + }, + "10224": { + "op": "AND" + }, + "10225": { + "op": "DUP2" + }, + "10226": { + "op": "SSTORE" + }, + "10227": { + "op": "JUMPDEST" + }, + "10228": { + "op": "POP" + }, + "10229": { + "op": "POP" + }, + "10230": { + "op": "POP" + }, + "10231": { + "op": "POP" + }, + "10232": { + "op": "PUSH1", + "value": "0x1" + }, + "10234": { + "op": "SWAP1" + }, + "10235": { + "op": "DUP2" + }, + "10236": { + "op": "SHL" + }, + "10237": { + "op": "ADD" + }, + "10238": { + "op": "SWAP1" + }, + "10239": { + "op": "SSTORE" + }, + "10240": { + "op": "POP" + }, + "10241": { + "jump": "o", + "op": "JUMP" + }, + "10242": { + "op": "JUMPDEST" + }, + "10243": { + "op": "PUSH0" + }, + "10244": { + "op": "PUSH0" + }, + "10245": { + "op": "PUSH0" + }, + "10246": { + "op": "PUSH1", + "value": "0x60" + }, + "10248": { + "op": "DUP5" + }, + "10249": { + "op": "DUP7" + }, + "10250": { + "op": "SUB" + }, + "10251": { + "op": "SLT" + }, + "10252": { + "op": "ISZERO" + }, + "10253": { + "op": "PUSH2", + "value": "0x2814" + }, + "10256": { + "op": "JUMPI" + }, + "10257": { + "op": "PUSH0" + }, + "10258": { + "op": "PUSH0" + }, + "10259": { + "op": "REVERT" + }, + "10260": { + "op": "JUMPDEST" + }, + "10261": { + "op": "DUP4" + }, + "10262": { + "op": "MLOAD" + }, + "10263": { + "op": "PUSH1", + "value": "0x20" + }, + "10265": { + "op": "DUP6" + }, + "10266": { + "op": "ADD" + }, + "10267": { + "op": "MLOAD" + }, + "10268": { + "op": "SWAP1" + }, + "10269": { + "op": "SWAP4" + }, + "10270": { + "op": "POP" + }, + "10271": { + "op": "PUSH2", + "value": "0x2827" + }, + "10274": { + "op": "DUP2" + }, + "10275": { + "op": "PUSH2", + "value": "0x1D33" + }, + "10278": { + "jump": "i", + "op": "JUMP" + }, + "10279": { + "op": "JUMPDEST" + }, + "10280": { + "op": "PUSH1", + "value": "0x40" + }, + "10282": { + "op": "SWAP5" + }, + "10283": { + "op": "SWAP1" + }, + "10284": { + "op": "SWAP5" + }, + "10285": { + "op": "ADD" + }, + "10286": { + "op": "MLOAD" + }, + "10287": { + "op": "SWAP3" + }, + "10288": { + "op": "SWAP6" + }, + "10289": { + "op": "SWAP4" + }, + "10290": { + "op": "SWAP5" + }, + "10291": { + "op": "POP" + }, + "10292": { + "op": "SWAP2" + }, + "10293": { + "op": "SWAP3" + }, + "10294": { + "op": "SWAP2" + }, + "10295": { + "op": "POP" + }, + "10296": { + "op": "POP" + }, + "10297": { + "jump": "o", + "op": "JUMP" + }, + "10298": { + "op": "JUMPDEST" + }, + "10299": { + "op": "PUSH0" + }, + "10300": { + "op": "DUP3" + }, + "10301": { + "op": "MLOAD" + }, + "10302": { + "op": "DUP1" + }, + "10303": { + "op": "PUSH1", + "value": "0x20" + }, + "10305": { + "op": "DUP6" + }, + "10306": { + "op": "ADD" + }, + "10307": { + "op": "DUP5" + }, + "10308": { + "op": "MCOPY" + }, + "10309": { + "op": "PUSH0" + }, + "10310": { + "op": "SWAP3" + }, + "10311": { + "op": "ADD" + }, + "10312": { + "op": "SWAP2" + }, + "10313": { + "op": "DUP3" + }, + "10314": { + "op": "MSTORE" + }, + "10315": { + "op": "POP" + }, + "10316": { + "op": "SWAP2" + }, + "10317": { + "op": "SWAP1" + }, + "10318": { + "op": "POP" + }, + "10319": { + "jump": "o", + "op": "JUMP" + } + }, + "sha1": "86426a283f05794aeb19f4e6937e89873dc699e3", + "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.27;\n\nimport {HyperAccountMinterUpgradable} from \"./HyperAccountMinterUpgradable.sol\";\nimport {IHyperAccountPermissioned} from \"../../src/interfaces/IHyperAccountPermissioned.sol\";\n\ncontract HyperAccountPermissionedMinter is IHyperAccountPermissioned, HyperAccountMinterUpgradable {\n // Errors\n error InsufficientAllowance(address who);\n\n /// @dev The storage slot at which HyperAccountPermissionedMinter storage starts, following the EIP-7201 standard.\n /// @dev Calculated as `keccak256(abi.encode(uint256(keccak256(\"hyperware.HyperAccountPermissionedMinter.storage\")) - 1)) & ~bytes32(uint256(0xff))`.\n bytes32 private constant _HYPERACCOUNT_PERMISSIONED_MINTER_STORAGE =\n 0x35bbe4873c895459ab4bda5f265f5e5fa65e4b915cbe8dc27adf6ea1fa3ba400;\n\n struct HyperAccountPermissionedMinterStorage {\n mapping(address => uint256) allowances;\n }\n\n function _getHyperAccountPermissionedMinterStorage()\n internal\n pure\n returns (HyperAccountPermissionedMinterStorage storage $)\n {\n assembly {\n $.slot := _HYPERACCOUNT_PERMISSIONED_MINTER_STORAGE\n }\n }\n\n constructor(address _hypermap) HyperAccountMinterUpgradable(_hypermap) {}\n\n function initialize() public initializer {\n __UUPSUpgradeable_init();\n __EIP712_init(\"HyperAccountPermissionedMinter\", \"1\");\n }\n\n /// @notice Authorize a minter to mint a specific number of sub-entries\n function auth(address who, uint256 _allowance) external virtual onlyOperator {\n HyperAccountPermissionedMinterStorage storage $ = _getHyperAccountPermissionedMinterStorage();\n $.allowances[who] = _allowance;\n }\n\n function deauth(address who) external virtual onlyOperator {\n HyperAccountPermissionedMinterStorage storage $ = _getHyperAccountPermissionedMinterStorage();\n $.allowances[who] = 0;\n }\n\n function allowance(address who) external view returns (uint256) {\n HyperAccountPermissionedMinterStorage storage $ = _getHyperAccountPermissionedMinterStorage();\n return $.allowances[who];\n }\n\n function supportsInterface(bytes4 interfaceId)\n public\n view\n virtual\n override(HyperAccountMinterUpgradable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId) || interfaceId == type(IHyperAccountPermissioned).interfaceId;\n }\n\n function _mint(address to, bytes calldata name, bytes calldata initialization, address implementation)\n internal\n virtual\n override\n returns (address tba)\n {\n HyperAccountPermissionedMinterStorage storage $ = _getHyperAccountPermissionedMinterStorage();\n\n if ($.allowances[msg.sender] < 1) {\n revert InsufficientAllowance(msg.sender);\n }\n $.allowances[msg.sender] -= 1;\n return _HYPERMAP.mint(to, name, initialization, implementation);\n }\n}\n", + "sourceMap": "241:2725:104:-:0;;;1171:4:68;1128:48;;1195:73:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1255:9;1967:22:101;:20;:22::i;:::-;-1:-1:-1;;;;;2000:32:101;;;-1:-1:-1;241:2725:104;;7711:422:67;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:67;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:67;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:67;-1:-1:-1;;;;;8035:33:67;;;;;8087:29;;453:50:149;;;8087:29:67;;441:2:149;426:18;8087:29:67;;;;;;;7981:146;7760:373;7711:422::o;14:290:149:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;179:16;;-1:-1:-1;;;;;224:31:149;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:149:o;309:200::-;241:2725:104;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;", + "sourcePath": "src/account/HyperAccountPermissionedMinter.sol", + "type": "contract" +} \ No newline at end of file diff --git a/src/chain/mod.rs b/src/chain/mod.rs index ed8743d4..70a6ac72 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -18,72 +18,179 @@ use crate::run_tests::types::BroadcastRecvBool; use crate::setup::{check_foundry_deps, get_deps}; use crate::KIT_CACHE; -// important contract addresses: -// https://gist.github.com/nick1udwig/273292fdfe94dd1c563f302df8bdfb74 - -// first account on anvil +// First account on anvil const OWNER_ADDRESS: &str = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; -const CREATE2: &str = "0x4e59b44847b379578588920cA78FbF26c0B4956C"; - -const HYPERMAP_PROXY: &str = "0x000000000044C6B8Cb4d8f0F889a3E47664EAeda"; - -const DOT_OS_TBA: &str = "0x9b3853358ede717fc7D4806cF75d7A4d4517A9C9"; -const ZEROTH_TBA: &str = "0x809A598d9883f2Fb6B77382eBfC9473Fd6A857c9"; const DEFAULT_MAX_ATTEMPTS: u16 = 16; const DEFAULT_CONFIG_PATH: &str = "./Contracts.toml"; -const PREDEPLOY_CONTRACTS: &[(&str, &str)] = &[]; - -const STORAGE_SLOTS: &[(&str, &str, &str)] = &[]; - -const TRANSACTIONS: &[(&str, &str)] = &[ - // initialize Hypermap: give ownership to OWNER_ADDRESS - // cast calldata "initialize(address)" 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 - ( - HYPERMAP_PROXY, - "0xc4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266", - ), - // CREATE2 deploy HyperAccountMinter (deployed at 0xE01dCbD3Ed5f709874A1eA7a25677de18C8661c9) - ( - CREATE2, - include_str!("./bytecode/deploy-hyperaccount-minter.txt"), - ), - // CREATE2 deploy HyperAccountPermissionedMinter - ( - CREATE2, - include_str!("./bytecode/deploy-hyperaccount-permissioned-minter.txt"), - ), - // CREATE2 deploy HyperAccount9CharCommitMinter - ( - CREATE2, - include_str!("./bytecode/deploy-hyperaccount-9char-commit-minter.txt"), - ), - // mint .os - // NOTE: the account implementation here is not - // HyperAccount9CharCommitMinter like on mainnet. - // instead, we use HyperAccountMinter so that we - // can mint these nodes very easily when a new fake - // node is spun up - // cast calldata "execute(address,uint256,bytes,uint8)" 0x000000000044C6B8Cb4d8f0F889a3E47664EAeda 0 $(cast calldata "mint(address,bytes,bytes,address)" 0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266 $(cast --from-ascii "os") $(cast calldata "initialize()") 0xE01dCbD3Ed5f709874A1eA7a25677de18C8661c9) 0 - (ZEROTH_TBA, include_str!("./bytecode/mint-os.txt")), -]; +#[derive(Debug, Clone)] +struct ContractAddresses { + hypermap_proxy: String, + hypermap_impl: String, + hyperaccount: String, + erc6551registry: String, + multicall: String, + create2: String, + dot_os_tba: String, + zeroth_tba: String, +} + +impl ContractAddresses { + async fn from_config(port: u16, config: &ChainConfig, deployed: &HashMap) -> Result { + let resolve = |name: &str| -> Result { + // First try deployed addresses + if let Some(addr) = deployed.get(name) { + return Ok(addr.clone()); + } + // Then try config + if let Some(addr) = config.get_address_by_name(name) { + return Ok(addr); + } + Err(eyre!("Missing '{}' in config and deployed contracts", name)) + }; + + let resolve_optional = |name: &str, default: &str| -> String { + deployed.get(name) + .cloned() + .or_else(|| config.get_address_by_name(name)) + .unwrap_or_else(|| default.to_string()) + }; + + let hypermap_proxy = resolve("hypermap-proxy")?; + + // Call tbaOf(0) to get zeroth_tba address + // cast calldata "tbaOf(uint256)" 0 + let tba_of_zero_calldata = "0x27244d1e0000000000000000000000000000000000000000000000000000000000000000"; + let zeroth_tba_result = call_contract(port, &hypermap_proxy, tba_of_zero_calldata).await?; + + // Extract address from result (last 20 bytes / 40 hex chars) + let zeroth_tba = if zeroth_tba_result.len() >= 42 { + format!("0x{}", &zeroth_tba_result[zeroth_tba_result.len() - 40..]) + } else { + resolve_optional("zeroth-tba", "0x809A598d9883f2Fb6B77382eBfC9473Fd6A857c9") + }; + + info!("Resolved zeroth_tba from hypermap: {}", zeroth_tba); + + Ok(Self { + hypermap_proxy, + hypermap_impl: resolve("hypermap-impl")?, + hyperaccount: resolve("hyperaccount")?, + erc6551registry: resolve("erc6551registry")?, + multicall: resolve("multicall")?, + create2: resolve("create2")?, + dot_os_tba: resolve_optional("dot-os-tba", "0x9b3853358ede717fc7D4806cF75d7A4d4517A9C9"), + zeroth_tba, + }) + } + + fn print_summary(&self) { + info!("╔════════════════════════════════════════════════════════════════╗"); + info!("║ Contract Addresses Summary ║"); + info!("╠════════════════════════════════════════════════════════════════╣"); + info!("║ hypermap_proxy: {} ║", self.hypermap_proxy); + info!("║ hypermap_impl: {} ║", self.hypermap_impl); + info!("║ hyperaccount: {} ║", self.hyperaccount); + info!("║ erc6551registry: {} ║", self.erc6551registry); + info!("║ multicall: {} ║", self.multicall); + info!("║ create2: {} ║", self.create2); + info!("║ dot_os_tba: {} ║", self.dot_os_tba); + info!("║ zeroth_tba: {} ║", self.zeroth_tba); + info!("╚════════════════════════════════════════════════════════════════╝"); + } + + fn get_transactions(&self) -> Vec<(String, String)> { + vec![ + // Initialize Hypermap: give ownership to OWNER_ADDRESS + ( + self.hypermap_proxy.clone(), + "0xc4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266".to_string(), + ), + // CREATE2 deploy HyperAccountMinter + ( + self.create2.clone(), + include_str!("./bytecode/deploy-hyperaccount-minter.txt").to_string(), + ), + // CREATE2 deploy HyperAccountPermissionedMinter + ( + self.create2.clone(), + include_str!("./bytecode/deploy-hyperaccount-permissioned-minter.txt").to_string(), + ), + // CREATE2 deploy HyperAccount9CharCommitMinter + ( + self.create2.clone(), + include_str!("./bytecode/deploy-hyperaccount-9char-commit-minter.txt").to_string(), + ), + // Mint .os + ( + self.zeroth_tba.clone(), + include_str!("./bytecode/mint-os.txt").to_string(), + ), + ] + } +} #[derive(Debug, Deserialize)] struct ChainConfig { + #[serde(default)] contracts: Vec, + + #[serde(default)] + transactions: Vec, } #[derive(Debug, Deserialize)] struct ContractConfig { - address: String, + #[serde(default)] + name: Option, + + // For deployment (address will be computed) + #[serde(default)] + contract_json_path: Option, + + // For setting code at known address + #[serde(default)] + address: Option, + + #[serde(default)] bytecode: Option, - bytecode_path: Option, + + #[serde(default)] + deployed_bytecode_path: Option, + + #[serde(default)] + constructor_args: Vec, + #[serde(default)] storage: HashMap, } -#[derive(Debug, Deserialize)] +#[derive(Debug, Deserialize, Clone)] +struct TransactionConfig { + #[serde(default)] + name: Option, + + target: String, + + #[serde(default)] + function_signature: Option, + + #[serde(default)] + args: Vec, + + #[serde(default)] + data: Option, +} + +#[derive(Debug, Deserialize, Clone)] +struct ConstructorArg { + #[serde(rename = "type")] + arg_type: String, + value: String, +} + +#[derive(Debug, Deserialize, Clone)] #[serde(untagged)] enum StorageValue { String(String), @@ -91,33 +198,65 @@ enum StorageValue { } impl StorageValue { - fn to_hex_string(&self) -> String { + fn resolve(&self, deployed: &HashMap) -> Result { match self { StorageValue::String(s) => { - if s.starts_with("0x") { - // Pad to 32 bytes (64 hex chars + 0x) - let stripped = s.trim_start_matches("0x"); - format!("0x{:0>64}", stripped) + // Check if it's a reference to another contract + if let Some(name) = s.strip_prefix('#') { + deployed.get(name) + .cloned() + .ok_or_else(|| eyre!("Reference to unknown contract: #{}", name)) } else { - format!("0x{:0>64}", s) + Ok(s.clone()) } } - StorageValue::Number(n) => format!("0x{:0>64x}", n), + StorageValue::Number(n) => Ok(n.to_string()), + } + } + + fn to_hex_string(&self, deployed: &HashMap) -> Result { + let resolved = self.resolve(deployed)?; + + if resolved.starts_with("0x") { + let stripped = resolved.trim_start_matches("0x"); + Ok(format!("0x{:0>64}", stripped)) + } else if let Ok(num) = resolved.parse::() { + Ok(format!("0x{:0>64x}", num)) + } else { + Ok(format!("0x{:0>64}", resolved)) + } + } +} + +impl ConstructorArg { + fn resolve_value(&self, deployed: &HashMap) -> Result { + if let Some(name) = self.value.strip_prefix('#') { + deployed.get(name) + .cloned() + .ok_or_else(|| eyre!("Reference to unknown contract in constructor: #{}", name)) + } else { + Ok(self.value.clone()) } } } +impl ChainConfig { + fn get_address_by_name(&self, name: &str) -> Option { + self.contracts + .iter() + .find(|c| c.name.as_deref() == Some(name)) + .and_then(|c| c.address.clone()) + } +} + fn normalize_slot(slot: &str) -> String { if slot.starts_with("0x") { - // Already has 0x prefix, just pad to 32 bytes let stripped = slot.trim_start_matches("0x"); format!("0x{:0>64}", stripped) } else { - // No 0x prefix, parse as decimal and convert to hex if let Ok(num) = slot.parse::() { format!("0x{:0>64x}", num) } else { - // Assume it's hex without prefix format!("0x{:0>64}", slot) } } @@ -139,30 +278,125 @@ fn load_config(config_path: &PathBuf) -> Result> { Ok(Some(config)) } -fn load_bytecode(bytecode_path: &str) -> Result { +/// Load deployed bytecode from JSON artifact (for anvil_setCode) +fn load_deployed_bytecode(bytecode_path: &str) -> Result { let content = fs::read_to_string(bytecode_path) .map_err(|e| eyre!("Failed to read bytecode file {}: {}", bytecode_path, e))?; - // Try to parse as JSON first (Foundry artifact format) if let Ok(json) = serde_json::from_str::(&content) { + // Try Foundry/Hardhat format: deployedBytecode.object if let Some(bytecode) = json - .get("bytecode") + .get("deployedBytecode") .and_then(|b| b.get("object")) .and_then(|o| o.as_str()) { return Ok(bytecode.to_string()); } + + // Try Brownie format: deployedBytecode + if let Some(bytecode) = json.get("deployedBytecode").and_then(|b| b.as_str()) { + return Ok(bytecode.to_string()); + } + } + + Ok(content.trim().to_string()) +} + +/// Load creation bytecode from JSON artifact +fn load_creation_bytecode(bytecode_path: &str) -> Result { + let content = fs::read_to_string(bytecode_path) + .map_err(|e| eyre!("Failed to read bytecode file {}: {}", bytecode_path, e))?; + + if let Ok(json) = serde_json::from_str::(&content) { + // Try Foundry/Hardhat format: bytecode.object if let Some(bytecode) = json - .get("deployedBytecode") + .get("bytecode") .and_then(|b| b.get("object")) .and_then(|o| o.as_str()) { return Ok(bytecode.to_string()); + } + // Try Brownie format: bytecode + else if let Some(bytecode) = json.get("bytecode").and_then(|b| b.as_str()) { + return Ok(bytecode.to_string()); } } - // Otherwise treat as raw hex - Ok(content.trim().to_string()) + let bytecode = content.trim().to_string(); + if bytecode.is_empty() { + return Err(eyre!("Could not find creation bytecode in {}", bytecode_path)); + } + + Ok(bytecode) +} + +/// Encode constructor arguments using alloy +fn encode_constructor_args(args: &[ConstructorArg], deployed: &HashMap) -> Result { + use alloy::primitives::{Address, U256, Bytes}; + use alloy::sol_types::SolValue; + + let mut encoded = Vec::new(); + + for arg in args { + let resolved_value = arg.resolve_value(deployed)?; + + let token_bytes = match arg.arg_type.as_str() { + "address" => { + let addr: Address = resolved_value.parse() + .map_err(|e| eyre!("Invalid address '{}': {}", resolved_value, e))?; + addr.abi_encode() + } + "uint256" | "uint" => { + let value = if resolved_value.starts_with("0x") { + U256::from_str_radix(&resolved_value[2..], 16)? + } else { + U256::from_str_radix(&resolved_value, 10)? + }; + value.abi_encode() + } + "string" => { + resolved_value.abi_encode() + } + "bytes" => { + let data = resolved_value.trim_start_matches("0x"); + let bytes = hex::decode(data) + .map_err(|e| eyre!("Invalid hex bytes '{}': {}", resolved_value, e))?; + Bytes::from(bytes).abi_encode() + } + "bool" => { + let b = resolved_value.parse::() + .map_err(|e| eyre!("Invalid bool value '{}': {}", resolved_value, e))?; + b.abi_encode() + } + _ => return Err(eyre!("Unsupported constructor arg type: {}", arg.arg_type)), + }; + encoded.extend_from_slice(&token_bytes); + } + + Ok(format!("0x{}", hex::encode(encoded))) +} + +/// Encode function call with arguments +fn encode_function_call( + function_sig: &str, + args: &[ConstructorArg], + deployed: &HashMap, +) -> Result { + use alloy::primitives::keccak256; + + // Calculate function selector (first 4 bytes of keccak256 hash) + let selector = &keccak256(function_sig.as_bytes())[0..4]; + + // Encode arguments + let encoded_args = if args.is_empty() { + String::new() + } else { + encode_constructor_args(args, deployed)? + .trim_start_matches("0x") + .to_string() + }; + + Ok(format!("0x{}{}", hex::encode(selector), encoded_args)) } #[instrument(level = "trace", skip_all)] @@ -196,21 +430,27 @@ async fn execute_transaction( port: u16, client: &Client, from: &str, - to: &str, + to: Option<&str>, data: &str, nonce: u64, ) -> Result { let url = format!("http://localhost:{}", port); + + let mut params = serde_json::json!({ + "from": from, + "data": data, + "nonce": format!("0x{:x}", nonce), + "gas": "0x500000", + }); + + if let Some(to_addr) = to { + params["to"] = serde_json::json!(to_addr); + } + let request_body = serde_json::json!({ "jsonrpc": "2.0", "method": "eth_sendTransaction", - "params": [{ - "from": from, - "to": to, - "data": data, - "nonce": format!("0x{:x}", nonce), - "gas": "0x500000", - }], + "params": [params], "id": 1 }); @@ -236,11 +476,51 @@ async fn execute_transaction( } #[instrument(level = "trace", skip_all)] -async fn initialize_contracts(port: u16) -> Result<()> { +async fn get_transaction_receipt(port: u16, client: &Client, tx_hash: &str) -> Result> { + let url = format!("http://localhost:{}", port); + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_getTransactionReceipt", + "params": [tx_hash], + "id": 1 + }); + + let response: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + + if let Some(receipt) = response.get("result") { + if receipt.is_null() { + return Ok(None); + } + if let Some(contract_address) = receipt.get("contractAddress").and_then(|a| a.as_str()) { + return Ok(Some(contract_address.to_string())); + } + } + + Ok(None) +} + +#[instrument(level = "trace", skip_all)] +async fn deploy_contracts(port: u16, config: &ChainConfig) -> Result> { let client = Client::new(); let url = format!("http://localhost:{}", port); + + let mut deployed_addresses = HashMap::new(); - // impersonate owner account + // First, collect addresses from config (contracts with explicit address) + for contract in &config.contracts { + if let (Some(name), Some(address)) = (&contract.name, &contract.address) { + deployed_addresses.insert(name.clone(), address.clone()); + info!("Pre-registered contract '{}' at {}", name, address); + } + } + + // Impersonate owner let request_body = serde_json::json!({ "jsonrpc": "2.0", "method": "anvil_impersonateAccount", @@ -255,35 +535,183 @@ async fn initialize_contracts(port: u16) -> Result<()> { .json() .await?; - // set storage slots - for (address, slot, value) in STORAGE_SLOTS { - let request_body: serde_json::Value = serde_json::json!({ - "jsonrpc": "2.0", - "method": "anvil_setStorageAt", - "params": [address, slot, value], - "id": 1 - }); - let _: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; + let mut nonce = get_nonce(port, &client, OWNER_ADDRESS).await?; + + // Deploy contracts sequentially, updating deployed_addresses after each + for contract in &config.contracts { + if let Some(json_path) = &contract.contract_json_path { + let name = contract.name.as_deref().unwrap_or("unnamed"); + + // Load creation bytecode + let mut bytecode = load_creation_bytecode(json_path)?; + + // Append constructor args if any (with reference resolution) + if !contract.constructor_args.is_empty() { + let encoded_args = encode_constructor_args(&contract.constructor_args, &deployed_addresses)?; + let bytecode_clean = bytecode.trim_start_matches("0x"); + let encoded_args_clean = encoded_args.trim_start_matches("0x"); + bytecode = format!("0x{}{}", bytecode_clean, encoded_args_clean); + } + + info!("Deploying contract '{}' with bytecode length: {}", name, bytecode.len()); + + // Deploy (to = None for contract creation) + match execute_transaction(port, &client, OWNER_ADDRESS, None, &bytecode, nonce).await { + Ok(tx_hash) => { + info!("Deployment tx for '{}': {}", name, tx_hash); + + // Wait for receipt + for _ in 0..10 { + sleep(Duration::from_millis(100)).await; + if let Ok(Some(contract_address)) = get_transaction_receipt(port, &client, &tx_hash).await { + info!("Contract '{}' deployed at: {}", name, contract_address); + if let Some(name) = &contract.name { + deployed_addresses.insert(name.clone(), contract_address); + } + break; + } + } + } + Err(e) => { + info!("Failed to deploy contract '{}': {}", name, e); + } + } + + nonce += 1; + } + } + + // Stop impersonating + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_stopImpersonatingAccount", + "params": [OWNER_ADDRESS], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + + Ok(deployed_addresses) +} + +#[instrument(level = "trace", skip_all)] +async fn execute_config_transactions( + port: u16, + config: &ChainConfig, + deployed: &HashMap, +) -> Result<()> { + let client = Client::new(); + let url = format!("http://localhost:{}", port); + + if config.transactions.is_empty() { + return Ok(()); } + // Impersonate owner + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_impersonateAccount", + "params": [OWNER_ADDRESS], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + let mut nonce = get_nonce(port, &client, OWNER_ADDRESS).await?; - // execute all transactions - for (to, data) in TRANSACTIONS { - match execute_transaction(port, &client, OWNER_ADDRESS, to, data, nonce).await { - Ok(result) => debug!("Transaction to {to}: {result}"), + for tx_config in &config.transactions { + let name = tx_config.name.as_deref().unwrap_or("unnamed"); + + // Resolve target address (might be a reference) + let target = if let Some(ref_name) = tx_config.target.strip_prefix('#') { + deployed.get(ref_name) + .cloned() + .ok_or_else(|| eyre!("Reference to unknown contract in transaction target: #{}", ref_name))? + } else { + tx_config.target.clone() + }; + + // Build transaction data + let data = if let Some(inline_data) = &tx_config.data { + inline_data.clone() + } else if let Some(function_sig) = &tx_config.function_signature { + encode_function_call(function_sig, &tx_config.args, deployed)? + } else { + return Err(eyre!("Transaction '{}' must have either 'data' or 'function_signature'", name)); + }; + + info!("Executing transaction '{}' to {}", name, target); + + match execute_transaction(port, &client, OWNER_ADDRESS, Some(&target), &data, nonce).await { + Ok(tx_hash) => { + info!("Transaction '{}' sent: {}", name, tx_hash); + } + Err(e) => { + info!("Transaction '{}' failed: {}", name, e); + } + } + + nonce += 1; + } + + // Stop impersonating + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_stopImpersonatingAccount", + "params": [OWNER_ADDRESS], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + + Ok(()) +} + +#[instrument(level = "trace", skip_all)] +async fn initialize_contracts(port: u16, addresses: &ContractAddresses) -> Result<()> { + let client = Client::new(); + let url = format!("http://localhost:{}", port); + + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "anvil_impersonateAccount", + "params": [OWNER_ADDRESS], + "id": 1 + }); + let _: serde_json::Value = client + .post(&url) + .json(&request_body) + .send() + .await? + .json() + .await?; + + let mut nonce = get_nonce(port, &client, OWNER_ADDRESS).await?; + + let transactions = addresses.get_transactions(); + for (to, data) in transactions { + match execute_transaction(port, &client, OWNER_ADDRESS, Some(&to), &data, nonce).await { + Ok(result) => info!("Transaction to {to}: {result}"), Err(e) => info!("Transaction failed: {e:?}"), } nonce += 1; } - // stop impersonating let request_body = serde_json::json!({ "jsonrpc": "2.0", "method": "anvil_stopImpersonatingAccount", @@ -300,17 +728,27 @@ async fn initialize_contracts(port: u16) -> Result<()> { Ok(()) } + #[instrument(level = "trace", skip_all)] -async fn apply_config_contracts(port: u16, config: &ChainConfig) -> Result<()> { +async fn apply_config_contracts(port: u16, config: &ChainConfig, deployed: &HashMap) -> Result<()> { let client = Client::new(); let url = format!("http://localhost:{}", port); + // Only process contracts with explicit address (not deployed via contract_json_path) for contract in &config.contracts { - // Deploy bytecode if specified (either inline or from file) + // Skip if this is a deployment contract + if contract.contract_json_path.is_some() { + continue; + } + + let Some(address) = &contract.address else { + continue; + }; + let bytecode = if let Some(inline_bytecode) = &contract.bytecode { Some(inline_bytecode.clone()) - } else if let Some(bytecode_path) = &contract.bytecode_path { - Some(load_bytecode(bytecode_path)?) + } else if let Some(deployed_path) = &contract.deployed_bytecode_path { + Some(load_deployed_bytecode(deployed_path)?) } else { None }; @@ -319,7 +757,7 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig) -> Result<()> { let request_body = serde_json::json!({ "jsonrpc": "2.0", "method": "anvil_setCode", - "params": [&contract.address, bytecode.trim()], + "params": [address, bytecode.trim()], "id": 1 }); let _: serde_json::Value = client @@ -329,18 +767,20 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig) -> Result<()> { .await? .json() .await?; - info!("Deployed contract from config at {}", contract.address); + + let name_info = contract.name.as_deref().unwrap_or("unnamed"); + info!("Set bytecode for contract '{}' at {}", name_info, address); } - // Set storage slots + // Apply storage with reference resolution for (slot, value) in &contract.storage { let normalized_slot = normalize_slot(slot); - let hex_value = value.to_hex_string(); + let hex_value = value.to_hex_string(deployed)?; let request_body = serde_json::json!({ "jsonrpc": "2.0", "method": "anvil_setStorageAt", - "params": [&contract.address, normalized_slot, hex_value], + "params": [address, normalized_slot, hex_value], "id": 1 }); let _: serde_json::Value = client @@ -352,7 +792,7 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig) -> Result<()> { .await?; debug!( "Set storage slot {} for {} to {}", - slot, contract.address, hex_value + slot, address, hex_value ); } } @@ -361,14 +801,14 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig) -> Result<()> { } #[instrument(level = "trace", skip_all)] -async fn check_dot_os_tba(port: u16) -> Result { +async fn check_dot_os_tba(port: u16, addresses: &ContractAddresses) -> Result { let client = Client::new(); let url = format!("http://localhost:{}", port); let request_body = serde_json::json!({ "jsonrpc": "2.0", "method": "eth_getCode", - "params": [DOT_OS_TBA, "latest"], + "params": [&addresses.dot_os_tba, "latest"], "id": 1 }); @@ -378,7 +818,6 @@ async fn check_dot_os_tba(port: u16) -> Result { Ok(code != "0x") } -// Public function without custom config #[instrument(level = "trace", skip_all)] pub async fn start_chain( port: u16, @@ -389,7 +828,6 @@ pub async fn start_chain( start_chain_with_config(port, recv_kill, verbose, tracing, None).await } -// Public function with custom config #[instrument(level = "trace", skip_all)] pub async fn start_chain_with_config( port: u16, @@ -408,30 +846,57 @@ pub async fn start_chain_with_config( ) .await?; - // Always try to load default config let default_config = load_config(&PathBuf::from(DEFAULT_CONFIG_PATH))?; - // Load custom config if provided let custom_config = if let Some(path) = custom_config_path { load_config(&path)? } else { None }; + // Use custom config if available, otherwise default + let active_config = custom_config.as_ref().or(default_config.as_ref()) + .ok_or_else(|| eyre!("No config file found. Please provide {} or specify a custom config path", DEFAULT_CONFIG_PATH))?; + info!("Checking for Anvil on port {}...", port); if wait_for_anvil(port, 1, None).await.is_ok() { - if !check_dot_os_tba(port).await? { - predeploy_contracts(port).await?; - initialize_contracts(port).await?; - - if let Some(config) = default_config { - apply_config_contracts(port, &config).await?; + // Deploy contracts first (sequentially with reference resolution) + let mut deployed_addresses = HashMap::new(); + if let Some(config) = default_config.as_ref() { + deployed_addresses.extend(deploy_contracts(port, config).await?); + } + if let Some(config) = custom_config.as_ref() { + deployed_addresses.extend(deploy_contracts(port, config).await?); + } + + // Load contract addresses (now with deployed addresses) + let addresses = ContractAddresses::from_config(port, active_config, &deployed_addresses).await?; + info!("Loaded contract addresses from config"); + + if !check_dot_os_tba(port, &addresses).await? { + // Apply bytecode at known addresses (with reference resolution) + if let Some(config) = default_config.as_ref() { + apply_config_contracts(port, config, &deployed_addresses).await?; } - - if let Some(config) = custom_config { - apply_config_contracts(port, &config).await?; + if let Some(config) = custom_config.as_ref() { + apply_config_contracts(port, config, &deployed_addresses).await?; } + + // Execute config transactions + if let Some(config) = default_config.as_ref() { + execute_config_transactions(port, config, &deployed_addresses).await?; + } + if let Some(config) = custom_config.as_ref() { + execute_config_transactions(port, config, &deployed_addresses).await?; + } + + // Finally initialize + initialize_contracts(port, &addresses).await?; } + + // Print summary + addresses.print_summary(); + return Ok(None); } @@ -455,32 +920,75 @@ pub async fn start_chain_with_config( return Err(e); } - if !check_dot_os_tba(port).await? { - if let Err(e) = predeploy_contracts(port).await { - let _ = child.kill(); - return Err(e.wrap_err("Failed to pre-deploy contracts")); + // Deploy contracts first (sequentially with reference resolution) + let mut deployed_addresses = HashMap::new(); + if let Some(config) = default_config.as_ref() { + match deploy_contracts(port, config).await { + Ok(addrs) => deployed_addresses.extend(addrs), + Err(e) => { + let _ = child.kill(); + return Err(e.wrap_err("Failed to deploy contracts from default config")); + } } - - if let Err(e) = initialize_contracts(port).await { - let _ = child.kill(); - return Err(e.wrap_err("Failed to initialize contracts")); + } + if let Some(config) = custom_config.as_ref() { + match deploy_contracts(port, config).await { + Ok(addrs) => deployed_addresses.extend(addrs), + Err(e) => { + let _ = child.kill(); + return Err(e.wrap_err("Failed to deploy contracts from custom config")); + } } - - if let Some(config) = default_config { - if let Err(e) = apply_config_contracts(port, &config).await { + } + + // Load contract addresses (now with deployed addresses) + let addresses = ContractAddresses::from_config(port, active_config, &deployed_addresses).await?; + info!("Loaded contract addresses from config"); + + if !check_dot_os_tba(port, &addresses).await? { + // Apply bytecode at known addresses (with reference resolution) + if let Some(config) = default_config.as_ref() { + if let Err(e) = apply_config_contracts(port, &config, &deployed_addresses).await { let _ = child.kill(); return Err(e.wrap_err("Failed to apply default config contracts")); } } - - if let Some(config) = custom_config { - if let Err(e) = apply_config_contracts(port, &config).await { + if let Some(config) = custom_config.as_ref() { + if let Err(e) = apply_config_contracts(port, &config, &deployed_addresses).await { let _ = child.kill(); return Err(e.wrap_err("Failed to apply custom config contracts")); } } + + // Execute config transactions + if let Some(config) = default_config.as_ref() { + if let Err(e) = execute_config_transactions(port, &config, &deployed_addresses).await { + let _ = child.kill(); + return Err(e.wrap_err("Failed to execute default config transactions")); + } + } + if let Some(config) = custom_config.as_ref() { + if let Err(e) = execute_config_transactions(port, &config, &deployed_addresses).await { + let _ = child.kill(); + return Err(e.wrap_err("Failed to execute custom config transactions")); + } + } + + // Finally initialize + if let Err(e) = initialize_contracts(port, &addresses).await { + let _ = child.kill(); + return Err(e.wrap_err("Failed to initialize contracts")); + } } + if let Err(e) = verify_contracts(port, &addresses).await { + let _ = child.kill(); + return Err(e.wrap_err("Contract verification failed")); + } + + // Print summary + addresses.print_summary(); + Ok(Some(child)) } @@ -537,44 +1045,58 @@ async fn wait_for_anvil( } #[instrument(level = "trace", skip_all)] -async fn predeploy_contracts(port: u16) -> Result<()> { +pub async fn call_contract(port: u16, target: &str, data: &str) -> Result { let client = Client::new(); let url = format!("http://localhost:{}", port); - for (address, bytecode) in PREDEPLOY_CONTRACTS { - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "eth_getCode", - "params": [address, "latest"], - "id": 1 - }); + let request_body = serde_json::json!({ + "jsonrpc": "2.0", + "method": "eth_call", + "params": [{ + "to": target, + "data": data, + }, "latest"], + "id": 1 + }); - let response = client.post(&url).json(&request_body).send().await?; - let result: serde_json::Value = response.json().await?; - let code = result["result"].as_str().unwrap_or("0x"); + let response = client + .post(&url) + .json(&request_body) + .send() + .await?; - if code == "0x" { - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "anvil_setCode", - "params": [address, bytecode.trim()], - "id": 1 - }); - let _: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; - info!("Deployed contract at {address}."); - } + let result: serde_json::Value = response.json().await?; + + if let Some(output) = result.get("result").and_then(|r| r.as_str()) { + return Ok(output.to_string()); } + if let Some(error) = result.get("error") { + return Err(eyre!("Contract call failed: {}", error)); + } + + Err(eyre!("Unexpected response: {}", result)) +} + +#[instrument(level = "trace", skip_all)] +pub async fn verify_contracts(port: u16, addresses: &ContractAddresses) -> Result<()> { + info!("Verifying deployed contracts..."); + + // cast calldata "symbol()" + let symbol_calldata = "0x95d89b41"; + match call_contract(port, &addresses.hypermap_proxy, symbol_calldata).await { + Ok(result) => { + info!("Hypermap symbol: {}", result); + } + Err(e) => { + return Err(e.wrap_err("Failed to verify Hypermap contract")); + } + } + + info!("All contracts verified successfully"); Ok(()) } -/// kit chain, alias to anvil #[instrument(level = "trace", skip_all)] pub async fn execute( port: u16, @@ -618,4 +1140,4 @@ pub async fn execute( let _ = send_to_kill.send(true); Ok(()) -} +} \ No newline at end of file From 974eec4480790721b4ede6094e334af80bb93602 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 23 Oct 2025 15:15:31 +0000 Subject: [PATCH 04/52] Format Rust code using rustfmt --- src/chain/mod.rs | 223 ++++++++++++++++++++++++++++------------------- 1 file changed, 132 insertions(+), 91 deletions(-) diff --git a/src/chain/mod.rs b/src/chain/mod.rs index 70a6ac72..4542a19a 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -37,7 +37,11 @@ struct ContractAddresses { } impl ContractAddresses { - async fn from_config(port: u16, config: &ChainConfig, deployed: &HashMap) -> Result { + async fn from_config( + port: u16, + config: &ChainConfig, + deployed: &HashMap, + ) -> Result { let resolve = |name: &str| -> Result { // First try deployed addresses if let Some(addr) = deployed.get(name) { @@ -51,26 +55,28 @@ impl ContractAddresses { }; let resolve_optional = |name: &str, default: &str| -> String { - deployed.get(name) + deployed + .get(name) .cloned() .or_else(|| config.get_address_by_name(name)) .unwrap_or_else(|| default.to_string()) }; let hypermap_proxy = resolve("hypermap-proxy")?; - + // Call tbaOf(0) to get zeroth_tba address // cast calldata "tbaOf(uint256)" 0 - let tba_of_zero_calldata = "0x27244d1e0000000000000000000000000000000000000000000000000000000000000000"; + let tba_of_zero_calldata = + "0x27244d1e0000000000000000000000000000000000000000000000000000000000000000"; let zeroth_tba_result = call_contract(port, &hypermap_proxy, tba_of_zero_calldata).await?; - + // Extract address from result (last 20 bytes / 40 hex chars) let zeroth_tba = if zeroth_tba_result.len() >= 42 { format!("0x{}", &zeroth_tba_result[zeroth_tba_result.len() - 40..]) } else { resolve_optional("zeroth-tba", "0x809A598d9883f2Fb6B77382eBfC9473Fd6A857c9") }; - + info!("Resolved zeroth_tba from hypermap: {}", zeroth_tba); Ok(Self { @@ -80,7 +86,10 @@ impl ContractAddresses { erc6551registry: resolve("erc6551registry")?, multicall: resolve("multicall")?, create2: resolve("create2")?, - dot_os_tba: resolve_optional("dot-os-tba", "0x9b3853358ede717fc7D4806cF75d7A4d4517A9C9"), + dot_os_tba: resolve_optional( + "dot-os-tba", + "0x9b3853358ede717fc7D4806cF75d7A4d4517A9C9", + ), zeroth_tba, }) } @@ -105,7 +114,8 @@ impl ContractAddresses { // Initialize Hypermap: give ownership to OWNER_ADDRESS ( self.hypermap_proxy.clone(), - "0xc4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266".to_string(), + "0xc4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" + .to_string(), ), // CREATE2 deploy HyperAccountMinter ( @@ -135,7 +145,7 @@ impl ContractAddresses { struct ChainConfig { #[serde(default)] contracts: Vec, - + #[serde(default)] transactions: Vec, } @@ -144,24 +154,24 @@ struct ChainConfig { struct ContractConfig { #[serde(default)] name: Option, - + // For deployment (address will be computed) #[serde(default)] contract_json_path: Option, - + // For setting code at known address #[serde(default)] address: Option, - + #[serde(default)] bytecode: Option, - + #[serde(default)] deployed_bytecode_path: Option, - + #[serde(default)] constructor_args: Vec, - + #[serde(default)] storage: HashMap, } @@ -170,15 +180,15 @@ struct ContractConfig { struct TransactionConfig { #[serde(default)] name: Option, - + target: String, - + #[serde(default)] function_signature: Option, - + #[serde(default)] args: Vec, - + #[serde(default)] data: Option, } @@ -203,7 +213,8 @@ impl StorageValue { StorageValue::String(s) => { // Check if it's a reference to another contract if let Some(name) = s.strip_prefix('#') { - deployed.get(name) + deployed + .get(name) .cloned() .ok_or_else(|| eyre!("Reference to unknown contract: #{}", name)) } else { @@ -216,7 +227,7 @@ impl StorageValue { fn to_hex_string(&self, deployed: &HashMap) -> Result { let resolved = self.resolve(deployed)?; - + if resolved.starts_with("0x") { let stripped = resolved.trim_start_matches("0x"); Ok(format!("0x{:0>64}", stripped)) @@ -231,7 +242,8 @@ impl StorageValue { impl ConstructorArg { fn resolve_value(&self, deployed: &HashMap) -> Result { if let Some(name) = self.value.strip_prefix('#') { - deployed.get(name) + deployed + .get(name) .cloned() .ok_or_else(|| eyre!("Reference to unknown contract in constructor: #{}", name)) } else { @@ -292,7 +304,7 @@ fn load_deployed_bytecode(bytecode_path: &str) -> Result { { return Ok(bytecode.to_string()); } - + // Try Brownie format: deployedBytecode if let Some(bytecode) = json.get("deployedBytecode").and_then(|b| b.as_str()) { return Ok(bytecode.to_string()); @@ -315,7 +327,7 @@ fn load_creation_bytecode(bytecode_path: &str) -> Result { .and_then(|o| o.as_str()) { return Ok(bytecode.to_string()); - } + } // Try Brownie format: bytecode else if let Some(bytecode) = json.get("bytecode").and_then(|b| b.as_str()) { return Ok(bytecode.to_string()); @@ -324,25 +336,32 @@ fn load_creation_bytecode(bytecode_path: &str) -> Result { let bytecode = content.trim().to_string(); if bytecode.is_empty() { - return Err(eyre!("Could not find creation bytecode in {}", bytecode_path)); + return Err(eyre!( + "Could not find creation bytecode in {}", + bytecode_path + )); } - + Ok(bytecode) } /// Encode constructor arguments using alloy -fn encode_constructor_args(args: &[ConstructorArg], deployed: &HashMap) -> Result { - use alloy::primitives::{Address, U256, Bytes}; +fn encode_constructor_args( + args: &[ConstructorArg], + deployed: &HashMap, +) -> Result { + use alloy::primitives::{Address, Bytes, U256}; use alloy::sol_types::SolValue; - + let mut encoded = Vec::new(); - + for arg in args { let resolved_value = arg.resolve_value(deployed)?; - + let token_bytes = match arg.arg_type.as_str() { "address" => { - let addr: Address = resolved_value.parse() + let addr: Address = resolved_value + .parse() .map_err(|e| eyre!("Invalid address '{}': {}", resolved_value, e))?; addr.abi_encode() } @@ -354,9 +373,7 @@ fn encode_constructor_args(args: &[ConstructorArg], deployed: &HashMap { - resolved_value.abi_encode() - } + "string" => resolved_value.abi_encode(), "bytes" => { let data = resolved_value.trim_start_matches("0x"); let bytes = hex::decode(data) @@ -364,7 +381,8 @@ fn encode_constructor_args(args: &[ConstructorArg], deployed: &HashMap { - let b = resolved_value.parse::() + let b = resolved_value + .parse::() .map_err(|e| eyre!("Invalid bool value '{}': {}", resolved_value, e))?; b.abi_encode() } @@ -372,7 +390,7 @@ fn encode_constructor_args(args: &[ConstructorArg], deployed: &HashMap, ) -> Result { use alloy::primitives::keccak256; - + // Calculate function selector (first 4 bytes of keccak256 hash) let selector = &keccak256(function_sig.as_bytes())[0..4]; - + // Encode arguments let encoded_args = if args.is_empty() { String::new() @@ -395,7 +413,7 @@ fn encode_function_call( .trim_start_matches("0x") .to_string() }; - + Ok(format!("0x{}{}", hex::encode(selector), encoded_args)) } @@ -435,18 +453,18 @@ async fn execute_transaction( nonce: u64, ) -> Result { let url = format!("http://localhost:{}", port); - + let mut params = serde_json::json!({ "from": from, "data": data, "nonce": format!("0x{:x}", nonce), "gas": "0x500000", }); - + if let Some(to_addr) = to { params["to"] = serde_json::json!(to_addr); } - + let request_body = serde_json::json!({ "jsonrpc": "2.0", "method": "eth_sendTransaction", @@ -476,7 +494,11 @@ async fn execute_transaction( } #[instrument(level = "trace", skip_all)] -async fn get_transaction_receipt(port: u16, client: &Client, tx_hash: &str) -> Result> { +async fn get_transaction_receipt( + port: u16, + client: &Client, + tx_hash: &str, +) -> Result> { let url = format!("http://localhost:{}", port); let request_body = serde_json::json!({ "jsonrpc": "2.0", @@ -509,7 +531,7 @@ async fn get_transaction_receipt(port: u16, client: &Client, tx_hash: &str) -> R async fn deploy_contracts(port: u16, config: &ChainConfig) -> Result> { let client = Client::new(); let url = format!("http://localhost:{}", port); - + let mut deployed_addresses = HashMap::new(); // First, collect addresses from config (contracts with explicit address) @@ -541,29 +563,36 @@ async fn deploy_contracts(port: u16, config: &ChainConfig) -> Result { info!("Deployment tx for '{}': {}", name, tx_hash); - + // Wait for receipt for _ in 0..10 { sleep(Duration::from_millis(100)).await; - if let Ok(Some(contract_address)) = get_transaction_receipt(port, &client, &tx_hash).await { + if let Ok(Some(contract_address)) = + get_transaction_receipt(port, &client, &tx_hash).await + { info!("Contract '{}' deployed at: {}", name, contract_address); if let Some(name) = &contract.name { deployed_addresses.insert(name.clone(), contract_address); @@ -576,7 +605,7 @@ async fn deploy_contracts(port: u16, config: &ChainConfig) -> Result { info!("Transaction '{}' sent: {}", name, tx_hash); @@ -660,7 +695,7 @@ async fn execute_config_transactions( info!("Transaction '{}' failed: {}", name, e); } } - + nonce += 1; } @@ -730,7 +765,11 @@ async fn initialize_contracts(port: u16, addresses: &ContractAddresses) -> Resul } #[instrument(level = "trace", skip_all)] -async fn apply_config_contracts(port: u16, config: &ChainConfig, deployed: &HashMap) -> Result<()> { +async fn apply_config_contracts( + port: u16, + config: &ChainConfig, + deployed: &HashMap, +) -> Result<()> { let client = Client::new(); let url = format!("http://localhost:{}", port); @@ -740,7 +779,7 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig, deployed: &Hash if contract.contract_json_path.is_some() { continue; } - + let Some(address) = &contract.address else { continue; }; @@ -767,7 +806,7 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig, deployed: &Hash .await? .json() .await?; - + let name_info = contract.name.as_deref().unwrap_or("unnamed"); info!("Set bytecode for contract '{}' at {}", name_info, address); } @@ -790,10 +829,7 @@ async fn apply_config_contracts(port: u16, config: &ChainConfig, deployed: &Hash .await? .json() .await?; - debug!( - "Set storage slot {} for {} to {}", - slot, address, hex_value - ); + debug!("Set storage slot {} for {} to {}", slot, address, hex_value); } } @@ -855,8 +891,15 @@ pub async fn start_chain_with_config( }; // Use custom config if available, otherwise default - let active_config = custom_config.as_ref().or(default_config.as_ref()) - .ok_or_else(|| eyre!("No config file found. Please provide {} or specify a custom config path", DEFAULT_CONFIG_PATH))?; + let active_config = custom_config + .as_ref() + .or(default_config.as_ref()) + .ok_or_else(|| { + eyre!( + "No config file found. Please provide {} or specify a custom config path", + DEFAULT_CONFIG_PATH + ) + })?; info!("Checking for Anvil on port {}...", port); if wait_for_anvil(port, 1, None).await.is_ok() { @@ -868,11 +911,12 @@ pub async fn start_chain_with_config( if let Some(config) = custom_config.as_ref() { deployed_addresses.extend(deploy_contracts(port, config).await?); } - + // Load contract addresses (now with deployed addresses) - let addresses = ContractAddresses::from_config(port, active_config, &deployed_addresses).await?; + let addresses = + ContractAddresses::from_config(port, active_config, &deployed_addresses).await?; info!("Loaded contract addresses from config"); - + if !check_dot_os_tba(port, &addresses).await? { // Apply bytecode at known addresses (with reference resolution) if let Some(config) = default_config.as_ref() { @@ -881,7 +925,7 @@ pub async fn start_chain_with_config( if let Some(config) = custom_config.as_ref() { apply_config_contracts(port, config, &deployed_addresses).await?; } - + // Execute config transactions if let Some(config) = default_config.as_ref() { execute_config_transactions(port, config, &deployed_addresses).await?; @@ -889,14 +933,14 @@ pub async fn start_chain_with_config( if let Some(config) = custom_config.as_ref() { execute_config_transactions(port, config, &deployed_addresses).await?; } - + // Finally initialize initialize_contracts(port, &addresses).await?; } - + // Print summary addresses.print_summary(); - + return Ok(None); } @@ -940,9 +984,10 @@ pub async fn start_chain_with_config( } } } - + // Load contract addresses (now with deployed addresses) - let addresses = ContractAddresses::from_config(port, active_config, &deployed_addresses).await?; + let addresses = + ContractAddresses::from_config(port, active_config, &deployed_addresses).await?; info!("Loaded contract addresses from config"); if !check_dot_os_tba(port, &addresses).await? { @@ -985,10 +1030,10 @@ pub async fn start_chain_with_config( let _ = child.kill(); return Err(e.wrap_err("Contract verification failed")); } - + // Print summary addresses.print_summary(); - + Ok(Some(child)) } @@ -1059,11 +1104,7 @@ pub async fn call_contract(port: u16, target: &str, data: &str) -> Result Result Result<()> { info!("Verifying deployed contracts..."); - + // cast calldata "symbol()" let symbol_calldata = "0x95d89b41"; match call_contract(port, &addresses.hypermap_proxy, symbol_calldata).await { @@ -1092,7 +1133,7 @@ pub async fn verify_contracts(port: u16, addresses: &ContractAddresses) -> Resul return Err(e.wrap_err("Failed to verify Hypermap contract")); } } - + info!("All contracts verified successfully"); Ok(()) } @@ -1140,4 +1181,4 @@ pub async fn execute( let _ = send_to_kill.send(true); Ok(()) -} \ No newline at end of file +} From 2807797ce1ba2bfd7bd69e527072ee0201eefdbb Mon Sep 17 00:00:00 2001 From: Pax G Date: Fri, 24 Oct 2025 08:52:10 -0700 Subject: [PATCH 05/52] predeploy + setup + custom transactions --- Contracts.toml | 2 +- ...eploy-hyperaccount-9char-commit-minter.txt | 1 - .../bytecode/deploy-hyperaccount-minter.txt | 1 - ...eploy-hyperaccount-permissioned-minter.txt | 1 - src/chain/bytecode/mint-os.txt | 1 - src/chain/mod.rs | 922 +++++++++--------- 6 files changed, 443 insertions(+), 485 deletions(-) delete mode 100644 src/chain/bytecode/deploy-hyperaccount-9char-commit-minter.txt delete mode 100644 src/chain/bytecode/deploy-hyperaccount-minter.txt delete mode 100644 src/chain/bytecode/deploy-hyperaccount-permissioned-minter.txt delete mode 100644 src/chain/bytecode/mint-os.txt diff --git a/Contracts.toml b/Contracts.toml index 1b65bec3..73bdd106 100644 --- a/Contracts.toml +++ b/Contracts.toml @@ -55,7 +55,7 @@ constructor_args = [ { type = "address", value = "#hypermap-proxy" } ] -[[transaction]] +[[transactions]] name = "initialize-hypermap" target = "#hypermap-proxy" function_signature = "initialize(address)" diff --git a/src/chain/bytecode/deploy-hyperaccount-9char-commit-minter.txt b/src/chain/bytecode/deploy-hyperaccount-9char-commit-minter.txt deleted file mode 100644 index 61a6dd9d..00000000 --- a/src/chain/bytecode/deploy-hyperaccount-9char-commit-minter.txt +++ /dev/null @@ -1 +0,0 @@ -0xa398c220105df7b588f2e78210fed9aedbeff98879436271a13ec6ede13bf79a61012060405230608052348015610014575f5ffd5b5060405161265038038061265083398101604081905261003391610126565b6001600160a01b039290921660c090815260408051808201825260128152711152540dcc4c921e5c195c9058d8dbdd5b9d60721b6020918201528151808301835260018152603160f81b9082015281517fff62b5f493ba6ce7c217bb31befa418a559dcb03d1d0c0eec2771445154d69a8818301527ffac0a32ca786da25c3864052b3e0138b502f179b60ed929a9e4ca675fd043070818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a080830191909152835180830382018152919094019092528151910120905260e05261010052610165565b5f5f5f60608486031215610138575f5ffd5b83516001600160a01b038116811461014e575f5ffd5b602085015160409095015190969495509392505050565b60805160a05160c05160e051610100516124846101cc5f395f818161050701528181610d21015261144001525f8181610314015261141c01525f818161047d01526114c501525f6109f101525f8181610fea0152818161101301526112b101526124845ff3fe6080604052600436106101b1575f3560e01c80636d70f7ae116100e7578063c19d93fb11610087578063d72ceb9c11610062578063d72ceb9c146104f6578063f14fcbc814610529578063f23a6e6114610548578063fc0c546a14610574575f5ffd5b8063c19d93fb146104cf578063ca3b98bb146104e3578063d087d288146104cf575f5ffd5b8063ad3cb1cc116100c2578063ad3cb1cc14610419578063b0d691fe14610449578063b479d6001461046f578063bc197c81146104a1575f5ffd5b80636d70f7ae146103bb5780638129fc1c146103da5780638784ea96146103ee575f5ffd5b806332556b4d11610152578063519454471161012d5780635194544714610349578063523e32601461036957806352d1902d146103885780635b64a0541461039c575f5ffd5b806332556b4d146102e4578063382e3de7146103035780634f1ef28614610336575f5ffd5b8063144fb5a81161018d578063144fb5a814610241578063150b7a02146102605780631626ba7e1461029857806319822f7c146102b7575f5ffd5b806223de29146101bc57806301ffc9a7146101e2578063094cefed14610216575f5ffd5b366101b857005b5f5ffd5b3480156101c7575f5ffd5b506101e06101d6366004611993565b5050505050505050565b005b3480156101ed575f5ffd5b506102016101fc366004611a55565b6105ab565b60405190151581526020015b60405180910390f35b610229610224366004611a70565b6105d6565b6040516001600160a01b03909116815260200161020d565b34801561024c575f5ffd5b5061022961025b366004611b02565b6105f0565b34801561026b575f5ffd5b5061027f61027a366004611baf565b61070e565b6040516001600160e01b0319909116815260200161020d565b3480156102a3575f5ffd5b5061027f6102b2366004611cb9565b610768565b3480156102c2575f5ffd5b506102d66102d1366004611cfc565b61088d565b60405190815260200161020d565b3480156102ef575f5ffd5b506102d66102fe366004611d4a565b6108bf565b34801561030e575f5ffd5b506102d67f000000000000000000000000000000000000000000000000000000000000000081565b6101e0610344366004611d98565b6108ca565b61035c610357366004611de3565b6108e9565b60405161020d9190611e7c565b348015610374575f5ffd5b5061027f610383366004611e8e565b61095d565b348015610393575f5ffd5b506102d6610982565b3480156103a7575f5ffd5b506102d66103b6366004611ede565b61099d565b3480156103c6575f5ffd5b506102016103d5366004611f83565b610a3d565b3480156103e5575f5ffd5b506101e0610adb565b3480156103f9575f5ffd5b506102d6610408366004611f9e565b5f9081526001602052604090205490565b348015610424575f5ffd5b5061035c604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610454575f5ffd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d2789610229565b34801561047a575f5ffd5b507f0000000000000000000000000000000000000000000000000000000000000000610229565b3480156104ac575f5ffd5b5061027f6104bb366004611ff5565b63bc197c8160e01b98975050505050505050565b3480156104da575f5ffd5b506102d6610be5565b61035c6104f1366004612095565b610c6e565b348015610501575f5ffd5b506102d67f000000000000000000000000000000000000000000000000000000000000000081565b348015610534575f5ffd5b506101e0610543366004611f9e565b610cef565b348015610553575f5ffd5b5061027f61056236600461210a565b63f23a6e6160e01b9695505050505050565b34801561057f575f5ffd5b50610588610d58565b604080519384526001600160a01b0390921660208401529082015260600161020d565b5f6105b582610d6e565b806105d057506001600160e01b03198216637337d00d60e01b145b92915050565b5f6105e5878787878787610d98565b979650505050505050565b5f8061060b8989898989896103b660808b0160608c01611f83565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c812091925061065d61064c6020870187612180565b839060208801356040890135610dea565b905061066f6080860160608701611f83565b6001600160a01b0316816001600160a01b0316146106c957806106986080870160608801611f83565b6040516310b5d43760e21b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b6001600160a01b0381165f9081526020819052604081208054916106ec836121ad565b91905055506106ff8b8b8b8b8b8b610d98565b9b9a5050505050505050505050565b5f5f5f610719610d58565b909350915050336001600160a01b03831614801561073657508086145b156107545760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61078885602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f0361085357828583016020016107a982610a3d565b1580156107bf57506001600160a01b0382163014155b156107da57506001600160e01b031994506105d09350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610808908b9085906004016121c5565b602060405180830381865afa158015610823573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084791906121dd565b955050505050506105d0565b6108626103d587838686610dea565b1561087a5750630b135d3f60e11b92506105d0915050565b506001600160e01b031995945050505050565b5f610896610e16565b6108a08484610e7b565b90506108af8460200135610f1e565b6108b882610f64565b9392505050565b5f6108b88383610fad565b6108d2610fdf565b6108db82611083565b6108e582826110cb565b5050565b60606108f433610a3d565b158015610915575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b1561093357604051634780295360e11b815260040160405180910390fd5b5f61094287878787875a61118c565b925090508061095357815160208301fd5b5095945050505050565b5f61096784610a3d565b610971575f61097a565b630291f19360e51b5b949350505050565b5f61098b6112a6565b505f51602061242f5f395f51905f5290565b6001600160a01b0381165f9081526020818152604080832054905183926109d4928c9230928d918d918d918d918d918d91016121f8565b604051602081830303815290604052805190602001209050610a307f00000000000000000000000000000000000000000000000000000000000000008260405161190160f01b8152600281019290925260228201526042902090565b9998505050505050505050565b5f5f5f610a48610d58565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610a95573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab9919061227f565b6001600160a01b031614801561097a57505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610b1f5750825b90505f826001600160401b03166001148015610b3a5750303b155b905081158015610b48575080155b15610b665760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b9057845460ff60401b1916600160401b1785555b610b986112ef565b8315610bde57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610c45573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c69919061229a565b905090565b6060610c7933610a3d565b158015610c9a575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b15610cb857604051634780295360e11b815260040160405180910390fd5b5f610cd388888888888815610ccd578861118c565b5a61118c565b9250905080610ce457815160208301fd5b509695505050505050565b5f818152600160205260409020544211610d1c576040516317d57db160e21b815260040160405180910390fd5b610d467f0000000000000000000000000000000000000000000000000000000000000000426122b1565b5f828152600160205260409020555b50565b5f5f5f610d636112f7565b925092509250909192565b5f610d7882611303565b806105d057506001600160e01b03198216636faff5f160e01b1492915050565b5f6009851015610ddc5760405162461bcd60e51b815260206004820152600f60248201526e131858995b081d1bdbc81cda1bdc9d608a1b60448201526064016106c0565b6105e58787878787876113a4565b5f5f5f5f610dfa88888888611550565b925092509250610e0a8282611618565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610e795760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016106c0565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120630b135d3f60e11b610efc82610ec36101008801886122c4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061076892505050565b6001600160e01b03191614610f155760019150506105d0565b505f9392505050565b6001600160401b038110610d555760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016106c0565b8015610d55576040515f9033905f1990849084818181858888f193505050503d805f8114610bde576040519150601f19603f3d011682016040523d82523d5f602084013e610bde565b5f8282604051602001610fc1929190612306565b60405160208183030381529060405280519060200120905092915050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061106557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110595f51602061242f5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610e795760405163703e46dd60e11b815260040160405180910390fd5b61108c33610a3d565b1580156110ad575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b15610d5557604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611125575060408051601f3d908101601f191682019092526111229181019061229a565b60015b61114d57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016106c0565b5f51602061242f5f395f51905f52811461117d57604051632a87526960e21b8152600481018290526024016106c0565b61118783836116d0565b505050565b5f60608360ff165f0361120057876001600160a01b0316838888886040516111b592919061232f565b5f60405180830381858888f193505050503d805f81146111f0576040519150601f19603f3d011682016040523d82523d5f602084013e6111f5565b606091505b50909250905061129b565b8360ff1660010361125f57876001600160a01b031683878760405161122692919061232f565b5f604051808303818686f4925050503d805f81146111f0576040519150601f19603f3d011682016040523d82523d5f602084013e6111f5565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b60448201526064016106c0565b965096945050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610e795760405163703e46dd60e11b815260040160405180910390fd5b610e79611725565b5f5f5f610d633061176e565b5f6001600160e01b03198216633ce4a3e960e01b148061133357506001600160e01b031982166301ffc9a760e01b145b8061134e57506001600160e01b031982166306608bdf60e21b145b8061136957506001600160e01b03198216630b135d3f60e11b145b8061138457506001600160e01b03198216630271189760e51b145b806105d057506001600160e01b03198216635194544760e01b1492915050565b5f5f60015f6113e989898080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250339250610fad915050565b81526020019081526020015f20549050805f036114195760405163345512df60e21b815260040160405180910390fd5b427f00000000000000000000000000000000000000000000000000000000000000006114657f00000000000000000000000000000000000000000000000000000000000000008461233e565b61146f91906122b1565b1061148d57604051639e8ddd6d60e01b815260040160405180910390fd5b428110156114ae5760405163716dbcc960e01b815260040160405180910390fd5b60405163094cefed60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed90611504908b908b908b908b908b908b90600401612379565b6020604051808303815f875af1158015611520573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611544919061227f565b98975050505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561158957505f9150600390508261160e565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156115da573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661160557505f92506001915082905061160e565b92505f91508190505b9450945094915050565b5f82600381111561162b5761162b6123cc565b03611634575050565b6001826003811115611648576116486123cc565b036116665760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561167a5761167a6123cc565b0361169b5760405163fce698f760e01b8152600481018290526024016106c0565b60038260038111156116af576116af6123cc565b036108e5576040516335e2f38360e21b8152600481018290526024016106c0565b6116d9826117c2565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561171d576111878282611825565b6108e5611897565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610e7957604051631afcd79f60e31b815260040160405180910390fd5b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906117b491906123e0565b935093509350509193909250565b806001600160a01b03163b5f036117f757604051634c9c8ce360e01b81526001600160a01b03821660048201526024016106c0565b5f51602061242f5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516118419190612418565b5f60405180830381855af49150503d805f8114611879576040519150601f19603f3d011682016040523d82523d5f602084013e61187e565b606091505b509150915061188e8583836118b6565b95945050505050565b3415610e795760405163b398979f60e01b815260040160405180910390fd5b6060826118cb576118c682611912565b6108b8565b81511580156118e257506001600160a01b0384163b155b1561190b57604051639996b31560e01b81526001600160a01b03851660048201526024016106c0565b50806108b8565b8051156119225780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114610d55575f5ffd5b5f5f83601f84011261195f575f5ffd5b5081356001600160401b03811115611975575f5ffd5b60208301915083602082850101111561198c575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156119aa575f5ffd5b88356119b58161193b565b975060208901356119c58161193b565b965060408901356119d58161193b565b95506060890135945060808901356001600160401b038111156119f6575f5ffd5b611a028b828c0161194f565b90955093505060a08901356001600160401b03811115611a20575f5ffd5b611a2c8b828c0161194f565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610d55575f5ffd5b5f60208284031215611a65575f5ffd5b81356108b881611a40565b5f5f5f5f5f5f60808789031215611a85575f5ffd5b8635611a908161193b565b955060208701356001600160401b03811115611aaa575f5ffd5b611ab689828a0161194f565b90965094505060408701356001600160401b03811115611ad4575f5ffd5b611ae089828a0161194f565b9094509250506060870135611af48161193b565b809150509295509295509295565b5f5f5f5f5f5f5f878903610100811215611b1a575f5ffd5b8835611b258161193b565b975060208901356001600160401b03811115611b3f575f5ffd5b611b4b8b828c0161194f565b90985096505060408901356001600160401b03811115611b69575f5ffd5b611b758b828c0161194f565b9096509450506060890135611b898161193b565b92506080607f1982011215611b9c575f5ffd5b5060808801905092959891949750929550565b5f5f5f5f5f60808688031215611bc3575f5ffd5b8535611bce8161193b565b94506020860135611bde8161193b565b93506040860135925060608601356001600160401b03811115611bff575f5ffd5b611c0b8882890161194f565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611c3f575f5ffd5b81356001600160401b03811115611c5857611c58611c1c565b604051601f8201601f19908116603f011681016001600160401b0381118282101715611c8657611c86611c1c565b604052818152838201602001851015611c9d575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611cca575f5ffd5b8235915060208301356001600160401b03811115611ce6575f5ffd5b611cf285828601611c30565b9150509250929050565b5f5f5f60608486031215611d0e575f5ffd5b83356001600160401b03811115611d23575f5ffd5b84016101208187031215611d35575f5ffd5b95602085013595506040909401359392505050565b5f5f60408385031215611d5b575f5ffd5b82356001600160401b03811115611d70575f5ffd5b611d7c85828601611c30565b9250506020830135611d8d8161193b565b809150509250929050565b5f5f60408385031215611da9575f5ffd5b8235611db48161193b565b915060208301356001600160401b03811115611ce6575f5ffd5b803560ff81168114611dde575f5ffd5b919050565b5f5f5f5f5f60808688031215611df7575f5ffd5b8535611e028161193b565b94506020860135935060408601356001600160401b03811115611e23575f5ffd5b611e2f8882890161194f565b9094509250611e42905060608701611dce565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108b86020830184611e4e565b5f5f5f60408486031215611ea0575f5ffd5b8335611eab8161193b565b925060208401356001600160401b03811115611ec5575f5ffd5b611ed18682870161194f565b9497909650939450505050565b5f5f5f5f5f5f5f60a0888a031215611ef4575f5ffd5b8735611eff8161193b565b965060208801356001600160401b03811115611f19575f5ffd5b611f258a828b0161194f565b90975095505060408801356001600160401b03811115611f43575f5ffd5b611f4f8a828b0161194f565b9095509350506060880135611f638161193b565b91506080880135611f738161193b565b8091505092959891949750929550565b5f60208284031215611f93575f5ffd5b81356108b88161193b565b5f60208284031215611fae575f5ffd5b5035919050565b5f5f83601f840112611fc5575f5ffd5b5081356001600160401b03811115611fdb575f5ffd5b6020830191508360208260051b850101111561198c575f5ffd5b5f5f5f5f5f5f5f5f60a0898b03121561200c575f5ffd5b88356120178161193b565b975060208901356120278161193b565b965060408901356001600160401b03811115612041575f5ffd5b61204d8b828c01611fb5565b90975095505060608901356001600160401b0381111561206b575f5ffd5b6120778b828c01611fb5565b90955093505060808901356001600160401b03811115611a20575f5ffd5b5f5f5f5f5f5f60a087890312156120aa575f5ffd5b86356120b58161193b565b95506020870135945060408701356001600160401b038111156120d6575f5ffd5b6120e289828a0161194f565b90955093506120f5905060608801611dce565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a0878903121561211f575f5ffd5b863561212a8161193b565b9550602087013561213a8161193b565b9450604087013593506060870135925060808701356001600160401b03811115612162575f5ffd5b61216e89828a0161194f565b979a9699509497509295939492505050565b5f60208284031215612190575f5ffd5b6108b882611dce565b634e487b7160e01b5f52601160045260245ffd5b5f600182016121be576121be612199565b5060010190565b828152604060208201525f61097a6040830184611e4e565b5f602082840312156121ed575f5ffd5b81516108b881611a40565b6bffffffffffffffffffffffff198a60601b1681526bffffffffffffffffffffffff198960601b166014820152876028820152858760488301375f868201604881015f81528688823750606094851b6bffffffffffffffffffffffff199081169190960160488101919091529290931b909316605c82015260700198975050505050505050565b5f6020828403121561228f575f5ffd5b81516108b88161193b565b5f602082840312156122aa575f5ffd5b5051919050565b808201808211156105d0576105d0612199565b5f5f8335601e198436030181126122d9575f5ffd5b8301803591506001600160401b038211156122f2575f5ffd5b60200191503681900382131561198c575f5ffd5b604081525f6123186040830185611e4e565b905060018060a01b03831660208301529392505050565b818382375f9101908152919050565b818103818111156105d0576105d0612199565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f9061239d9083018789612351565b82810360408401526123b0818688612351565b91505060018060a01b0383166060830152979650505050505050565b634e487b7160e01b5f52602160045260245ffd5b5f5f5f606084860312156123f2575f5ffd5b835160208501519093506124058161193b565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca264697066735822122077469a110c699a60fb48d4576c95fc6542c9e7763f4e078b404056326475073164736f6c634300081b0033000000000000000000000000000000000044c6b8cb4d8f0f889a3e47664eaeda000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000000000708 \ No newline at end of file diff --git a/src/chain/bytecode/deploy-hyperaccount-minter.txt b/src/chain/bytecode/deploy-hyperaccount-minter.txt deleted file mode 100644 index 62e1f1b8..00000000 --- a/src/chain/bytecode/deploy-hyperaccount-minter.txt +++ /dev/null @@ -1 +0,0 @@ -0x000000000000000000000000000000000000000000000000000000000000000060e060405230608052348015610013575f5ffd5b506040516122043803806122048339810160408190526100329161011b565b6001600160a01b031660c090815260408051808201825260128152711152540dcc4c921e5c195c9058d8dbdd5b9d60721b6020918201528151808301835260018152603160f81b9082015281517fff62b5f493ba6ce7c217bb31befa418a559dcb03d1d0c0eec2771445154d69a8818301527ffac0a32ca786da25c3864052b3e0138b502f179b60ed929a9e4ca675fd043070818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303820181529190940190925281519101209052610148565b5f6020828403121561012b575f5ffd5b81516001600160a01b0381168114610141575f5ffd5b9392505050565b60805160a05160c05161207d6101875f395f818161038d0152610bfb01525f6108a401525f8181610e4b01528181610e740152611112015261207d5ff3fe60806040526004361061013e575f3560e01c80635b64a054116100b3578063bc197c811161006d578063bc197c81146103b1578063c19d93fb146103df578063ca3b98bb146103f3578063d087d288146103df578063f23a6e6114610406578063fc0c546a14610432575f5ffd5b80635b64a054146102d75780636d70f7ae146102f65780638129fc1c14610315578063ad3cb1cc14610329578063b0d691fe14610359578063b479d6001461037f575f5ffd5b80631626ba7e116101045780631626ba7e1461022557806319822f7c146102445780634f1ef286146102715780635194544714610284578063523e3260146102a457806352d1902d146102c3575f5ffd5b806223de291461014957806301ffc9a71461016f578063094cefed146101a3578063144fb5a8146101ce578063150b7a02146101ed575f5ffd5b3661014557005b5f5ffd5b348015610154575f5ffd5b5061016d610163366004611648565b5050505050505050565b005b34801561017a575f5ffd5b5061018e61018936600461170a565b610469565b60405190151581526020015b60405180910390f35b6101b66101b1366004611725565b610494565b6040516001600160a01b03909116815260200161019a565b3480156101d9575f5ffd5b506101b66101e83660046117b7565b6104ae565b3480156101f8575f5ffd5b5061020c610207366004611864565b6105cc565b6040516001600160e01b0319909116815260200161019a565b348015610230575f5ffd5b5061020c61023f36600461196e565b610626565b34801561024f575f5ffd5b5061026361025e3660046119b1565b61074b565b60405190815260200161019a565b61016d61027f3660046119ff565b61077d565b610297610292366004611a4a565b61079c565b60405161019a9190611ae3565b3480156102af575f5ffd5b5061020c6102be366004611af5565b610810565b3480156102ce575f5ffd5b50610263610835565b3480156102e2575f5ffd5b506102636102f1366004611b45565b610850565b348015610301575f5ffd5b5061018e610310366004611bea565b6108f0565b348015610320575f5ffd5b5061016d61098e565b348015610334575f5ffd5b50610297604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610364575f5ffd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d27896101b6565b34801561038a575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006101b6565b3480156103bc575f5ffd5b5061020c6103cb366004611c45565b63bc197c8160e01b98975050505050505050565b3480156103ea575f5ffd5b50610263610a98565b610297610401366004611ce5565b610b21565b348015610411575f5ffd5b5061020c610420366004611d5a565b63f23a6e6160e01b9695505050505050565b34801561043d575f5ffd5b50610446610ba2565b604080519384526001600160a01b0390921660208401529082015260600161019a565b5f61047382610bb8565b8061048e57506001600160e01b03198216637337d00d60e01b145b92915050565b5f6104a3878787878787610be2565b979650505050505050565b5f806104c98989898989896102f160808b0160608c01611bea565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c812091925061051b61050a6020870187611dd0565b839060208801356040890135610c7a565b905061052d6080860160608701611bea565b6001600160a01b0316816001600160a01b03161461058757806105566080870160608801611bea565b6040516310b5d43760e21b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b6001600160a01b0381165f9081526020819052604081208054916105aa83611de9565b91905055506105bd8b8b8b8b8b8b610be2565b9b9a5050505050505050505050565b5f5f5f6105d7610ba2565b909350915050336001600160a01b0383161480156105f457508086145b156106125760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61064685602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f036107115782858301602001610667826108f0565b15801561067d57506001600160a01b0382163014155b1561069857506001600160e01b0319945061048e9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906106c6908b908590600401611e0d565b602060405180830381865afa1580156106e1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107059190611e25565b9550505050505061048e565b61072061031087838686610c7a565b156107385750630b135d3f60e11b925061048e915050565b506001600160e01b031995945050505050565b5f610754610ca6565b61075e8484610d0b565b905061076d8460200135610dae565b61077682610df7565b9392505050565b610785610e40565b61078e82610ee4565b6107988282610f2c565b5050565b60606107a7336108f0565b1580156107c8575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b156107e657604051634780295360e11b815260040160405180910390fd5b5f6107f587878787875a610fed565b925090508061080657815160208301fd5b5095945050505050565b5f61081a846108f0565b610824575f61082d565b630291f19360e51b5b949350505050565b5f61083e611107565b505f5160206120285f395f51905f5290565b6001600160a01b0381165f908152602081815260408083205490518392610887928c9230928d918d918d918d918d918d9101611e40565b6040516020818303038152906040528051906020012090506108e37f00000000000000000000000000000000000000000000000000000000000000008260405161190160f01b8152600281019290925260228201526042902090565b9998505050505050505050565b5f5f5f6108fb610ba2565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610948573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096c9190611ec7565b6001600160a01b031614801561082d57505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156109d25750825b90505f826001600160401b031660011480156109ed5750303b155b9050811580156109fb575080155b15610a195760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610a4357845460ff60401b1916600160401b1785555b610a4b611150565b8315610a9157845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610af8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b1c9190611ee2565b905090565b6060610b2c336108f0565b158015610b4d575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b15610b6b57604051634780295360e11b815260040160405180910390fd5b5f610b8688888888888815610b805788610fed565b5a610fed565b9250905080610b9757815160208301fd5b509695505050505050565b5f5f5f610bad611158565b925092509250909192565b5f610bc282611164565b8061048e57506001600160e01b03198216636faff5f160e01b1492915050565b60405163094cefed60e01b81525f906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed90610c3a908a908a908a908a908a908a90600401611f21565b6020604051808303815f875af1158015610c56573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a39190611ec7565b5f5f5f5f610c8a88888888611205565b925092509250610c9a82826112cd565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610d095760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e7400000000604482015260640161057e565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120630b135d3f60e11b610d8c82610d53610100880188611f74565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061062692505050565b6001600160e01b03191614610da557600191505061048e565b505f9392505050565b6001600160401b038110610df45760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b604482015260640161057e565b50565b8015610df4576040515f9033905f1990849084818181858888f193505050503d805f8114610a91576040519150601f19603f3d011682016040523d82523d5f602084013e610a91565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610ec657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610eba5f5160206120285f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610d095760405163703e46dd60e11b815260040160405180910390fd5b610eed336108f0565b158015610f0e575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b15610df457604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610f86575060408051601f3d908101601f19168201909252610f8391810190611ee2565b60015b610fae57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161057e565b5f5160206120285f395f51905f528114610fde57604051632a87526960e21b81526004810182905260240161057e565b610fe88383611385565b505050565b5f60608360ff165f0361106157876001600160a01b031683888888604051611016929190611fb6565b5f60405180830381858888f193505050503d805f8114611051576040519150601f19603f3d011682016040523d82523d5f602084013e611056565b606091505b5090925090506110fc565b8360ff166001036110c057876001600160a01b0316838787604051611087929190611fb6565b5f604051808303818686f4925050503d805f8114611051576040519150601f19603f3d011682016040523d82523d5f602084013e611056565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b604482015260640161057e565b965096945050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d095760405163703e46dd60e11b815260040160405180910390fd5b610d096113da565b5f5f5f610bad30611423565b5f6001600160e01b03198216633ce4a3e960e01b148061119457506001600160e01b031982166301ffc9a760e01b145b806111af57506001600160e01b031982166306608bdf60e21b145b806111ca57506001600160e01b03198216630b135d3f60e11b145b806111e557506001600160e01b03198216630271189760e51b145b8061048e57506001600160e01b03198216635194544760e01b1492915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561123e57505f915060039050826112c3565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561128f573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166112ba57505f9250600191508290506112c3565b92505f91508190505b9450945094915050565b5f8260038111156112e0576112e0611fc5565b036112e9575050565b60018260038111156112fd576112fd611fc5565b0361131b5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561132f5761132f611fc5565b036113505760405163fce698f760e01b81526004810182905260240161057e565b600382600381111561136457611364611fc5565b03610798576040516335e2f38360e21b81526004810182905260240161057e565b61138e82611477565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156113d257610fe882826114da565b61079861154c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610d0957604051631afcd79f60e31b815260040160405180910390fd5b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906114699190611fd9565b935093509350509193909250565b806001600160a01b03163b5f036114ac57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161057e565b5f5160206120285f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516114f69190612011565b5f60405180830381855af49150503d805f811461152e576040519150601f19603f3d011682016040523d82523d5f602084013e611533565b606091505b509150915061154385838361156b565b95945050505050565b3415610d095760405163b398979f60e01b815260040160405180910390fd5b6060826115805761157b826115c7565b610776565b815115801561159757506001600160a01b0384163b155b156115c057604051639996b31560e01b81526001600160a01b038516600482015260240161057e565b5080610776565b8051156115d75780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114610df4575f5ffd5b5f5f83601f840112611614575f5ffd5b5081356001600160401b0381111561162a575f5ffd5b602083019150836020828501011115611641575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561165f575f5ffd5b883561166a816115f0565b9750602089013561167a816115f0565b9650604089013561168a816115f0565b95506060890135945060808901356001600160401b038111156116ab575f5ffd5b6116b78b828c01611604565b90955093505060a08901356001600160401b038111156116d5575f5ffd5b6116e18b828c01611604565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610df4575f5ffd5b5f6020828403121561171a575f5ffd5b8135610776816116f5565b5f5f5f5f5f5f6080878903121561173a575f5ffd5b8635611745816115f0565b955060208701356001600160401b0381111561175f575f5ffd5b61176b89828a01611604565b90965094505060408701356001600160401b03811115611789575f5ffd5b61179589828a01611604565b90945092505060608701356117a9816115f0565b809150509295509295509295565b5f5f5f5f5f5f5f8789036101008112156117cf575f5ffd5b88356117da816115f0565b975060208901356001600160401b038111156117f4575f5ffd5b6118008b828c01611604565b90985096505060408901356001600160401b0381111561181e575f5ffd5b61182a8b828c01611604565b909650945050606089013561183e816115f0565b92506080607f1982011215611851575f5ffd5b5060808801905092959891949750929550565b5f5f5f5f5f60808688031215611878575f5ffd5b8535611883816115f0565b94506020860135611893816115f0565b93506040860135925060608601356001600160401b038111156118b4575f5ffd5b6118c088828901611604565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126118f4575f5ffd5b81356001600160401b0381111561190d5761190d6118d1565b604051601f8201601f19908116603f011681016001600160401b038111828210171561193b5761193b6118d1565b604052818152838201602001851015611952575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561197f575f5ffd5b8235915060208301356001600160401b0381111561199b575f5ffd5b6119a7858286016118e5565b9150509250929050565b5f5f5f606084860312156119c3575f5ffd5b83356001600160401b038111156119d8575f5ffd5b840161012081870312156119ea575f5ffd5b95602085013595506040909401359392505050565b5f5f60408385031215611a10575f5ffd5b8235611a1b816115f0565b915060208301356001600160401b0381111561199b575f5ffd5b803560ff81168114611a45575f5ffd5b919050565b5f5f5f5f5f60808688031215611a5e575f5ffd5b8535611a69816115f0565b94506020860135935060408601356001600160401b03811115611a8a575f5ffd5b611a9688828901611604565b9094509250611aa9905060608701611a35565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6107766020830184611ab5565b5f5f5f60408486031215611b07575f5ffd5b8335611b12816115f0565b925060208401356001600160401b03811115611b2c575f5ffd5b611b3886828701611604565b9497909650939450505050565b5f5f5f5f5f5f5f60a0888a031215611b5b575f5ffd5b8735611b66816115f0565b965060208801356001600160401b03811115611b80575f5ffd5b611b8c8a828b01611604565b90975095505060408801356001600160401b03811115611baa575f5ffd5b611bb68a828b01611604565b9095509350506060880135611bca816115f0565b91506080880135611bda816115f0565b8091505092959891949750929550565b5f60208284031215611bfa575f5ffd5b8135610776816115f0565b5f5f83601f840112611c15575f5ffd5b5081356001600160401b03811115611c2b575f5ffd5b6020830191508360208260051b8501011115611641575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215611c5c575f5ffd5b8835611c67816115f0565b97506020890135611c77816115f0565b965060408901356001600160401b03811115611c91575f5ffd5b611c9d8b828c01611c05565b90975095505060608901356001600160401b03811115611cbb575f5ffd5b611cc78b828c01611c05565b90955093505060808901356001600160401b038111156116d5575f5ffd5b5f5f5f5f5f5f60a08789031215611cfa575f5ffd5b8635611d05816115f0565b95506020870135945060408701356001600160401b03811115611d26575f5ffd5b611d3289828a01611604565b9095509350611d45905060608801611a35565b95989497509295919493608090920135925050565b5f5f5f5f5f5f60a08789031215611d6f575f5ffd5b8635611d7a816115f0565b95506020870135611d8a816115f0565b9450604087013593506060870135925060808701356001600160401b03811115611db2575f5ffd5b611dbe89828a01611604565b979a9699509497509295939492505050565b5f60208284031215611de0575f5ffd5b61077682611a35565b5f60018201611e0657634e487b7160e01b5f52601160045260245ffd5b5060010190565b828152604060208201525f61082d6040830184611ab5565b5f60208284031215611e35575f5ffd5b8151610776816116f5565b6bffffffffffffffffffffffff198a60601b1681526bffffffffffffffffffffffff198960601b166014820152876028820152858760488301375f868201604881015f81528688823750606094851b6bffffffffffffffffffffffff199081169190960160488101919091529290931b909316605c82015260700198975050505050505050565b5f60208284031215611ed7575f5ffd5b8151610776816115f0565b5f60208284031215611ef2575f5ffd5b5051919050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f90611f459083018789611ef9565b8281036040840152611f58818688611ef9565b91505060018060a01b0383166060830152979650505050505050565b5f5f8335601e19843603018112611f89575f5ffd5b8301803591506001600160401b03821115611fa2575f5ffd5b602001915036819003821315611641575f5ffd5b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f5f5f60608486031215611feb575f5ffd5b83516020850151909350611ffe816115f0565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212203419bdeb2b0eee7a4f2d978e11afc9fb7a2cd06e70c9008126d82459c47a4a0064736f6c634300081b0033000000000000000000000000000000000044c6b8cb4d8f0f889a3e47664eaeda \ No newline at end of file diff --git a/src/chain/bytecode/deploy-hyperaccount-permissioned-minter.txt b/src/chain/bytecode/deploy-hyperaccount-permissioned-minter.txt deleted file mode 100644 index 4a844c78..00000000 --- a/src/chain/bytecode/deploy-hyperaccount-permissioned-minter.txt +++ /dev/null @@ -1 +0,0 @@ -0x9c32191db3a69bb9f2bd9816fffd8c3e47a090423cad9d9e29abc2bedc69b8ff60e060405230608052348015610013575f5ffd5b506040516124143803806124148339810160408190526100329161011b565b6001600160a01b031660c090815260408051808201825260128152711152540dcc4c921e5c195c9058d8dbdd5b9d60721b6020918201528151808301835260018152603160f81b9082015281517fff62b5f493ba6ce7c217bb31befa418a559dcb03d1d0c0eec2771445154d69a8818301527ffac0a32ca786da25c3864052b3e0138b502f179b60ed929a9e4ca675fd043070818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303820181529190940190925281519101209052610148565b5f6020828403121561012b575f5ffd5b81516001600160a01b0381168114610141575f5ffd5b9392505050565b60805160a05160c05161228d6101875f395f818161041f0152610dc601525f6109b601525f81816110160152818161103f01526112dd015261228d5ff3fe60806040526004361061017d575f3560e01c80635b64a054116100cd578063bc197c8111610087578063d087d28811610062578063d087d28814610471578063e901d89b14610498578063f23a6e61146104b7578063fc0c546a146104e3575f5ffd5b8063bc197c8114610443578063c19d93fb14610471578063ca3b98bb14610485575f5ffd5b80635b64a054146103695780636d70f7ae146103885780638129fc1c146103a7578063ad3cb1cc146103bb578063b0d691fe146103eb578063b479d60014610411575f5ffd5b80631626ba7e116101385780634f1ef286116101135780634f1ef286146103035780635194544714610316578063523e32601461033657806352d1902d14610355575f5ffd5b80631626ba7e1461028357806319822f7c146102a25780633e5beab9146102cf575f5ffd5b806223de291461018857806301ffc9a7146101ae578063094cefed146101e257806312084f591461020d578063144fb5a81461022c578063150b7a021461024b575f5ffd5b3661018457005b5f5ffd5b348015610193575f5ffd5b506101ac6101a2366004611813565b5050505050505050565b005b3480156101b9575f5ffd5b506101cd6101c83660046118d5565b61051a565b60405190151581526020015b60405180910390f35b6101f56101f03660046118f0565b610545565b6040516001600160a01b0390911681526020016101d9565b348015610218575f5ffd5b506101ac610227366004611982565b61055f565b348015610237575f5ffd5b506101f561024636600461199d565b6105c0565b348015610256575f5ffd5b5061026a610265366004611a4a565b6106de565b6040516001600160e01b031990911681526020016101d9565b34801561028e575f5ffd5b5061026a61029d366004611b54565b610738565b3480156102ad575f5ffd5b506102c16102bc366004611b97565b61085d565b6040519081526020016101d9565b3480156102da575f5ffd5b506102c16102e9366004611982565b6001600160a01b03165f9081526001602052604090205490565b6101ac610311366004611be5565b61088f565b610329610324366004611c30565b6108ae565b6040516101d99190611cc9565b348015610341575f5ffd5b5061026a610350366004611cdb565b610922565b348015610360575f5ffd5b506102c1610947565b348015610374575f5ffd5b506102c1610383366004611d2b565b610962565b348015610393575f5ffd5b506101cd6103a2366004611982565b610a02565b3480156103b2575f5ffd5b506101ac610aa0565b3480156103c6575f5ffd5b50610329604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156103f6575f5ffd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d27896101f5565b34801561041c575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000006101f5565b34801561044e575f5ffd5b5061026a61045d366004611e10565b63bc197c8160e01b98975050505050505050565b34801561047c575f5ffd5b506102c1610baa565b610329610493366004611eb0565b610c33565b3480156104a3575f5ffd5b506101ac6104b2366004611f25565b610cb4565b3480156104c2575f5ffd5b5061026a6104d1366004611f4f565b63f23a6e6160e01b9695505050505050565b3480156104ee575f5ffd5b506104f7610d17565b604080519384526001600160a01b039092166020840152908201526060016101d9565b5f61052482610d2d565b8061053f57506001600160e01b03198216637337d00d60e01b145b92915050565b5f610554878787878787610d57565b979650505050505050565b61056833610a02565b158015610589575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b156105a757604051634780295360e11b815260040160405180910390fd5b6001600160a01b03165f90815260016020526040812055565b5f806105db89898989898961038360808b0160608c01611982565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c812091925061062d61061c6020870187611fc5565b839060208801356040890135610e45565b905061063f6080860160608701611982565b6001600160a01b0316816001600160a01b03161461069957806106686080870160608801611982565b6040516310b5d43760e21b81526001600160a01b039283166004820152911660248201526044015b60405180910390fd5b6001600160a01b0381165f9081526020819052604081208054916106bc83611ff2565b91905055506106cf8b8b8b8b8b8b610d57565b9b9a5050505050505050505050565b5f5f5f6106e9610d17565b909350915050336001600160a01b03831614801561070657508086145b156107245760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b5f5f5f5f61075885602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610823578285830160200161077982610a02565b15801561078f57506001600160a01b0382163014155b156107aa57506001600160e01b0319945061053f9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906107d8908b90859060040161200a565b602060405180830381865afa1580156107f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108179190612022565b9550505050505061053f565b6108326103a287838686610e45565b1561084a5750630b135d3f60e11b925061053f915050565b506001600160e01b031995945050505050565b5f610866610e71565b6108708484610ed6565b905061087f8460200135610f79565b61088882610fc2565b9392505050565b61089761100b565b6108a0826110af565b6108aa82826110f7565b5050565b60606108b933610a02565b1580156108da575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b156108f857604051634780295360e11b815260040160405180910390fd5b5f61090787878787875a6111b8565b925090508061091857815160208301fd5b5095945050505050565b5f61092c84610a02565b610936575f61093f565b630291f19360e51b5b949350505050565b5f6109506112d2565b505f5160206122385f395f51905f5290565b6001600160a01b0381165f908152602081815260408083205490518392610999928c9230928d918d918d918d918d918d910161203d565b6040516020818303038152906040528051906020012090506109f57f00000000000000000000000000000000000000000000000000000000000000008260405161190160f01b8152600281019290925260228201526042902090565b9998505050505050505050565b5f5f5f610a0d610d17565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610a5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a7e91906120c4565b6001600160a01b031614801561093f57505050506001600160a01b0316151590565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ae45750825b90505f826001600160401b03166001148015610aff5750303b155b905081158015610b0d575080155b15610b2b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b5557845460ff60401b1916600160401b1785555b610b5d61131b565b8315610ba357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b81523060048201525f60248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa158015610c0a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2e91906120df565b905090565b6060610c3e33610a02565b158015610c5f575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b15610c7d57604051634780295360e11b815260040160405180910390fd5b5f610c9888888888888815610c9257886111b8565b5a6111b8565b9250905080610ca957815160208301fd5b509695505050505050565b610cbd33610a02565b158015610cde575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b15610cfc57604051634780295360e11b815260040160405180910390fd5b6001600160a01b039091165f90815260016020526040902055565b5f5f5f610d22611323565b925092509250909192565b5f610d378261132f565b8061053f57506001600160e01b03198216636faff5f160e01b1492915050565b335f9081526001602081905260408220541015610d8957604051632fcad63b60e21b8152336004820152602401610690565b335f9081526001602081905260408220805491929091610daa9084906120f6565b909155505060405163094cefed60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063094cefed90610e05908a908a908a908a908a908a90600401612131565b6020604051808303815f875af1158015610e21573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061055491906120c4565b5f5f5f5f610e55888888886113d0565b925092509250610e658282611498565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610ed45760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610690565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c8120630b135d3f60e11b610f5782610f1e610100880188612184565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061073892505050565b6001600160e01b03191614610f7057600191505061053f565b505f9392505050565b6001600160401b038110610fbf5760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610690565b50565b8015610fbf576040515f9033905f1990849084818181858888f193505050503d805f8114610ba3576040519150601f19603f3d011682016040523d82523d5f602084013e610ba3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061109157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166110855f5160206122385f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610ed45760405163703e46dd60e11b815260040160405180910390fd5b6110b833610a02565b1580156110d9575033735ff137d4b0fdcd49dca30c7cf57e578a026d278914155b15610fbf57604051634780295360e11b815260040160405180910390fd5b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611151575060408051601f3d908101601f1916820190925261114e918101906120df565b60015b61117957604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610690565b5f5160206122385f395f51905f5281146111a957604051632a87526960e21b815260048101829052602401610690565b6111b38383611550565b505050565b5f60608360ff165f0361122c57876001600160a01b0316838888886040516111e19291906121c6565b5f60405180830381858888f193505050503d805f811461121c576040519150601f19603f3d011682016040523d82523d5f602084013e611221565b606091505b5090925090506112c7565b8360ff1660010361128b57876001600160a01b03168387876040516112529291906121c6565b5f604051808303818686f4925050503d805f811461121c576040519150601f19603f3d011682016040523d82523d5f602084013e611221565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610690565b965096945050505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610ed45760405163703e46dd60e11b815260040160405180910390fd5b610ed46115a5565b5f5f5f610d22306115ee565b5f6001600160e01b03198216633ce4a3e960e01b148061135f57506001600160e01b031982166301ffc9a760e01b145b8061137a57506001600160e01b031982166306608bdf60e21b145b8061139557506001600160e01b03198216630b135d3f60e11b145b806113b057506001600160e01b03198216630271189760e51b145b8061053f57506001600160e01b03198216635194544760e01b1492915050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561140957505f9150600390508261148e565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561145a573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811661148557505f92506001915082905061148e565b92505f91508190505b9450945094915050565b5f8260038111156114ab576114ab6121d5565b036114b4575050565b60018260038111156114c8576114c86121d5565b036114e65760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156114fa576114fa6121d5565b0361151b5760405163fce698f760e01b815260048101829052602401610690565b600382600381111561152f5761152f6121d5565b036108aa576040516335e2f38360e21b815260048101829052602401610690565b61155982611642565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561159d576111b382826116a5565b6108aa611717565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610ed457604051631afcd79f60e31b815260040160405180910390fd5b604080516060808252608082019092525f91829182918291906020820181803683370190505090506060604d60208301873c8080602001905181019061163491906121e9565b935093509350509193909250565b806001600160a01b03163b5f0361167757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610690565b5f5160206122385f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b0316846040516116c19190612221565b5f60405180830381855af49150503d805f81146116f9576040519150601f19603f3d011682016040523d82523d5f602084013e6116fe565b606091505b509150915061170e858383611736565b95945050505050565b3415610ed45760405163b398979f60e01b815260040160405180910390fd5b60608261174b5761174682611792565b610888565b815115801561176257506001600160a01b0384163b155b1561178b57604051639996b31560e01b81526001600160a01b0385166004820152602401610690565b5080610888565b8051156117a25780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6001600160a01b0381168114610fbf575f5ffd5b5f5f83601f8401126117df575f5ffd5b5081356001600160401b038111156117f5575f5ffd5b60208301915083602082850101111561180c575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b03121561182a575f5ffd5b8835611835816117bb565b97506020890135611845816117bb565b96506040890135611855816117bb565b95506060890135945060808901356001600160401b03811115611876575f5ffd5b6118828b828c016117cf565b90955093505060a08901356001600160401b038111156118a0575f5ffd5b6118ac8b828c016117cf565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610fbf575f5ffd5b5f602082840312156118e5575f5ffd5b8135610888816118c0565b5f5f5f5f5f5f60808789031215611905575f5ffd5b8635611910816117bb565b955060208701356001600160401b0381111561192a575f5ffd5b61193689828a016117cf565b90965094505060408701356001600160401b03811115611954575f5ffd5b61196089828a016117cf565b9094509250506060870135611974816117bb565b809150509295509295509295565b5f60208284031215611992575f5ffd5b8135610888816117bb565b5f5f5f5f5f5f5f8789036101008112156119b5575f5ffd5b88356119c0816117bb565b975060208901356001600160401b038111156119da575f5ffd5b6119e68b828c016117cf565b90985096505060408901356001600160401b03811115611a04575f5ffd5b611a108b828c016117cf565b9096509450506060890135611a24816117bb565b92506080607f1982011215611a37575f5ffd5b5060808801905092959891949750929550565b5f5f5f5f5f60808688031215611a5e575f5ffd5b8535611a69816117bb565b94506020860135611a79816117bb565b93506040860135925060608601356001600160401b03811115611a9a575f5ffd5b611aa6888289016117cf565b969995985093965092949392505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611ada575f5ffd5b81356001600160401b03811115611af357611af3611ab7565b604051601f8201601f19908116603f011681016001600160401b0381118282101715611b2157611b21611ab7565b604052818152838201602001851015611b38575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215611b65575f5ffd5b8235915060208301356001600160401b03811115611b81575f5ffd5b611b8d85828601611acb565b9150509250929050565b5f5f5f60608486031215611ba9575f5ffd5b83356001600160401b03811115611bbe575f5ffd5b84016101208187031215611bd0575f5ffd5b95602085013595506040909401359392505050565b5f5f60408385031215611bf6575f5ffd5b8235611c01816117bb565b915060208301356001600160401b03811115611b81575f5ffd5b803560ff81168114611c2b575f5ffd5b919050565b5f5f5f5f5f60808688031215611c44575f5ffd5b8535611c4f816117bb565b94506020860135935060408601356001600160401b03811115611c70575f5ffd5b611c7c888289016117cf565b9094509250611c8f905060608701611c1b565b90509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6108886020830184611c9b565b5f5f5f60408486031215611ced575f5ffd5b8335611cf8816117bb565b925060208401356001600160401b03811115611d12575f5ffd5b611d1e868287016117cf565b9497909650939450505050565b5f5f5f5f5f5f5f60a0888a031215611d41575f5ffd5b8735611d4c816117bb565b965060208801356001600160401b03811115611d66575f5ffd5b611d728a828b016117cf565b90975095505060408801356001600160401b03811115611d90575f5ffd5b611d9c8a828b016117cf565b9095509350506060880135611db0816117bb565b91506080880135611dc0816117bb565b8091505092959891949750929550565b5f5f83601f840112611de0575f5ffd5b5081356001600160401b03811115611df6575f5ffd5b6020830191508360208260051b850101111561180c575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215611e27575f5ffd5b8835611e32816117bb565b97506020890135611e42816117bb565b965060408901356001600160401b03811115611e5c575f5ffd5b611e688b828c01611dd0565b90975095505060608901356001600160401b03811115611e86575f5ffd5b611e928b828c01611dd0565b90955093505060808901356001600160401b038111156118a0575f5ffd5b5f5f5f5f5f5f60a08789031215611ec5575f5ffd5b8635611ed0816117bb565b95506020870135945060408701356001600160401b03811115611ef1575f5ffd5b611efd89828a016117cf565b9095509350611f10905060608801611c1b565b95989497509295919493608090920135925050565b5f5f60408385031215611f36575f5ffd5b8235611f41816117bb565b946020939093013593505050565b5f5f5f5f5f5f60a08789031215611f64575f5ffd5b8635611f6f816117bb565b95506020870135611f7f816117bb565b9450604087013593506060870135925060808701356001600160401b03811115611fa7575f5ffd5b611fb389828a016117cf565b979a9699509497509295939492505050565b5f60208284031215611fd5575f5ffd5b61088882611c1b565b634e487b7160e01b5f52601160045260245ffd5b5f6001820161200357612003611fde565b5060010190565b828152604060208201525f61093f6040830184611c9b565b5f60208284031215612032575f5ffd5b8151610888816118c0565b6bffffffffffffffffffffffff198a60601b1681526bffffffffffffffffffffffff198960601b166014820152876028820152858760488301375f868201604881015f81528688823750606094851b6bffffffffffffffffffffffff199081169190960160488101919091529290931b909316605c82015260700198975050505050505050565b5f602082840312156120d4575f5ffd5b8151610888816117bb565b5f602082840312156120ef575f5ffd5b5051919050565b8181038181111561053f5761053f611fde565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6001600160a01b03871681526080602082018190525f906121559083018789612109565b8281036040840152612168818688612109565b91505060018060a01b0383166060830152979650505050505050565b5f5f8335601e19843603018112612199575f5ffd5b8301803591506001600160401b038211156121b2575f5ffd5b60200191503681900382131561180c575f5ffd5b818382375f9101908152919050565b634e487b7160e01b5f52602160045260245ffd5b5f5f5f606084860312156121fb575f5ffd5b8351602085015190935061220e816117bb565b6040949094015192959394509192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220d63dd6bf11e887f51ee326cccb986a7cc054f06e91cc5e85fdf13991811e0cec64736f6c634300081b0033000000000000000000000000000000000044c6b8cb4d8f0f889a3e47664eaeda \ No newline at end of file diff --git a/src/chain/bytecode/mint-os.txt b/src/chain/bytecode/mint-os.txt deleted file mode 100644 index 93e2a545..00000000 --- a/src/chain/bytecode/mint-os.txt +++ /dev/null @@ -1 +0,0 @@ -0x51945447000000000000000000000000000000000044c6b8cb4d8f0f889a3e47664eaeda0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104094cefed000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000e01dcbd3ed5f709874a1ea7a25677de18c8661c900000000000000000000000000000000000000000000000000000000000000026f7300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048129fc1c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 \ No newline at end of file diff --git a/src/chain/mod.rs b/src/chain/mod.rs index 4542a19a..d4133ba1 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -20,7 +20,6 @@ use crate::KIT_CACHE; // First account on anvil const OWNER_ADDRESS: &str = "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266"; - const DEFAULT_MAX_ATTEMPTS: u16 = 16; const DEFAULT_CONFIG_PATH: &str = "./Contracts.toml"; @@ -32,112 +31,69 @@ struct ContractAddresses { erc6551registry: String, multicall: String, create2: String, - dot_os_tba: String, - zeroth_tba: String, + hyper_9char_commit_minter: Option, + hyper_permissioned_minter: Option, + zeroth_tba: Option, + dot_os_tba: Option, } impl ContractAddresses { - async fn from_config( - port: u16, - config: &ChainConfig, - deployed: &HashMap, - ) -> Result { + fn from_config(config: &ChainConfig, deployed: &HashMap) -> Result { let resolve = |name: &str| -> Result { - // First try deployed addresses if let Some(addr) = deployed.get(name) { return Ok(addr.clone()); } - // Then try config if let Some(addr) = config.get_address_by_name(name) { return Ok(addr); } Err(eyre!("Missing '{}' in config and deployed contracts", name)) }; - let resolve_optional = |name: &str, default: &str| -> String { - deployed - .get(name) - .cloned() - .or_else(|| config.get_address_by_name(name)) - .unwrap_or_else(|| default.to_string()) - }; - - let hypermap_proxy = resolve("hypermap-proxy")?; - - // Call tbaOf(0) to get zeroth_tba address - // cast calldata "tbaOf(uint256)" 0 - let tba_of_zero_calldata = - "0x27244d1e0000000000000000000000000000000000000000000000000000000000000000"; - let zeroth_tba_result = call_contract(port, &hypermap_proxy, tba_of_zero_calldata).await?; - - // Extract address from result (last 20 bytes / 40 hex chars) - let zeroth_tba = if zeroth_tba_result.len() >= 42 { - format!("0x{}", &zeroth_tba_result[zeroth_tba_result.len() - 40..]) - } else { - resolve_optional("zeroth-tba", "0x809A598d9883f2Fb6B77382eBfC9473Fd6A857c9") + let resolve_optional = |name: &str| -> Option { + if let Some(addr) = deployed.get(name) { + return Some(addr.clone()); + } + config.get_address_by_name(name) }; - info!("Resolved zeroth_tba from hypermap: {}", zeroth_tba); - Ok(Self { - hypermap_proxy, + hypermap_proxy: resolve("hypermap-proxy")?, hypermap_impl: resolve("hypermap-impl")?, hyperaccount: resolve("hyperaccount")?, erc6551registry: resolve("erc6551registry")?, multicall: resolve("multicall")?, create2: resolve("create2")?, - dot_os_tba: resolve_optional( - "dot-os-tba", - "0x9b3853358ede717fc7D4806cF75d7A4d4517A9C9", - ), - zeroth_tba, + hyper_9char_commit_minter: resolve_optional("hyperaccount-9char-commit-minter"), + hyper_permissioned_minter: resolve_optional("hyperaccount-permissioned-minter"), + zeroth_tba: None, + dot_os_tba: None, }) } fn print_summary(&self) { - info!("╔════════════════════════════════════════════════════════════════╗"); - info!("║ Contract Addresses Summary ║"); - info!("╠════════════════════════════════════════════════════════════════╣"); - info!("║ hypermap_proxy: {} ║", self.hypermap_proxy); - info!("║ hypermap_impl: {} ║", self.hypermap_impl); - info!("║ hyperaccount: {} ║", self.hyperaccount); - info!("║ erc6551registry: {} ║", self.erc6551registry); - info!("║ multicall: {} ║", self.multicall); - info!("║ create2: {} ║", self.create2); - info!("║ dot_os_tba: {} ║", self.dot_os_tba); - info!("║ zeroth_tba: {} ║", self.zeroth_tba); - info!("╚════════════════════════════════════════════════════════════════╝"); - } - - fn get_transactions(&self) -> Vec<(String, String)> { - vec![ - // Initialize Hypermap: give ownership to OWNER_ADDRESS - ( - self.hypermap_proxy.clone(), - "0xc4d66de8000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266" - .to_string(), - ), - // CREATE2 deploy HyperAccountMinter - ( - self.create2.clone(), - include_str!("./bytecode/deploy-hyperaccount-minter.txt").to_string(), - ), - // CREATE2 deploy HyperAccountPermissionedMinter - ( - self.create2.clone(), - include_str!("./bytecode/deploy-hyperaccount-permissioned-minter.txt").to_string(), - ), - // CREATE2 deploy HyperAccount9CharCommitMinter - ( - self.create2.clone(), - include_str!("./bytecode/deploy-hyperaccount-9char-commit-minter.txt").to_string(), - ), - // Mint .os - ( - self.zeroth_tba.clone(), - include_str!("./bytecode/mint-os.txt").to_string(), - ), - ] + info!("╔════════════════════════════════════════════════════════════════════════╗"); + info!("║ Contract Addresses Summary ║"); + info!("╠════════════════════════════════════════════════════════════════════════╣"); + info!("║ hypermap_proxy: {} ║", self.hypermap_proxy); + info!("║ hypermap_impl: {} ║", self.hypermap_impl); + info!("║ hyperaccount: {} ║", self.hyperaccount); + info!("║ erc6551registry: {} ║", self.erc6551registry); + info!("║ multicall: {} ║", self.multicall); + info!("║ create2: {} ║", self.create2); + if let Some(addr) = &self.hyper_9char_commit_minter { + info!("║ 9char_commit_minter: {} ║", addr); + } + if let Some(addr) = &self.hyper_permissioned_minter { + info!("║ permissioned_minter: {} ║", addr); + } + if let Some(addr) = &self.zeroth_tba { + info!("╠════════════════════════════════════════════════════════════════════════╣"); + info!("║ zeroth_tba (minted): {} ║", addr); + } + if let Some(addr) = &self.dot_os_tba { + info!("║ dot_os_tba (minted): {} ║", addr); + } + info!("╚════════════════════════════════════════════════════════════════════════╝"); } } @@ -155,11 +111,9 @@ struct ContractConfig { #[serde(default)] name: Option, - // For deployment (address will be computed) #[serde(default)] contract_json_path: Option, - // For setting code at known address #[serde(default)] address: Option, @@ -211,7 +165,6 @@ impl StorageValue { fn resolve(&self, deployed: &HashMap) -> Result { match self { StorageValue::String(s) => { - // Check if it's a reference to another contract if let Some(name) = s.strip_prefix('#') { deployed .get(name) @@ -229,8 +182,7 @@ impl StorageValue { let resolved = self.resolve(deployed)?; if resolved.starts_with("0x") { - let stripped = resolved.trim_start_matches("0x"); - Ok(format!("0x{:0>64}", stripped)) + Ok(format!("0x{:0>64}", resolved.trim_start_matches("0x"))) } else if let Ok(num) = resolved.parse::() { Ok(format!("0x{:0>64x}", num)) } else { @@ -263,14 +215,11 @@ impl ChainConfig { fn normalize_slot(slot: &str) -> String { if slot.starts_with("0x") { - let stripped = slot.trim_start_matches("0x"); - format!("0x{:0>64}", stripped) + format!("0x{:0>64}", slot.trim_start_matches("0x")) + } else if let Ok(num) = slot.parse::() { + format!("0x{:0>64x}", num) } else { - if let Ok(num) = slot.parse::() { - format!("0x{:0>64x}", num) - } else { - format!("0x{:0>64}", slot) - } + format!("0x{:0>64}", slot) } } @@ -290,111 +239,148 @@ fn load_config(config_path: &PathBuf) -> Result> { Ok(Some(config)) } -/// Load deployed bytecode from JSON artifact (for anvil_setCode) -fn load_deployed_bytecode(bytecode_path: &str) -> Result { - let content = fs::read_to_string(bytecode_path) - .map_err(|e| eyre!("Failed to read bytecode file {}: {}", bytecode_path, e))?; +/// Load bytecode from JSON artifact +fn load_bytecode_from_json(path: &str, field: &str) -> Result { + let content = fs::read_to_string(path) + .map_err(|e| eyre!("Failed to read bytecode file {}: {}", path, e))?; if let Ok(json) = serde_json::from_str::(&content) { - // Try Foundry/Hardhat format: deployedBytecode.object + // Try nested format: field.object if let Some(bytecode) = json - .get("deployedBytecode") + .get(field) .and_then(|b| b.get("object")) .and_then(|o| o.as_str()) { return Ok(bytecode.to_string()); } - // Try Brownie format: deployedBytecode - if let Some(bytecode) = json.get("deployedBytecode").and_then(|b| b.as_str()) { + // Try flat format: field + if let Some(bytecode) = json.get(field).and_then(|b| b.as_str()) { return Ok(bytecode.to_string()); } } - Ok(content.trim().to_string()) + let bytecode = content.trim().to_string(); + if bytecode.is_empty() { + return Err(eyre!("Could not find {} in {}", field, path)); + } + + Ok(bytecode) } -/// Load creation bytecode from JSON artifact -fn load_creation_bytecode(bytecode_path: &str) -> Result { - let content = fs::read_to_string(bytecode_path) - .map_err(|e| eyre!("Failed to read bytecode file {}: {}", bytecode_path, e))?; +fn load_deployed_bytecode(path: &str) -> Result { + load_bytecode_from_json(path, "deployedBytecode") +} - if let Ok(json) = serde_json::from_str::(&content) { - // Try Foundry/Hardhat format: bytecode.object - if let Some(bytecode) = json - .get("bytecode") - .and_then(|b| b.get("object")) - .and_then(|o| o.as_str()) - { - return Ok(bytecode.to_string()); - } - // Try Brownie format: bytecode - else if let Some(bytecode) = json.get("bytecode").and_then(|b| b.as_str()) { - return Ok(bytecode.to_string()); - } +fn load_creation_bytecode(path: &str) -> Result { + load_bytecode_from_json(path, "bytecode") +} + +fn parse_u8(s: &str) -> Result { + if s.starts_with("0x") { + u8::from_str_radix(&s[2..], 16).map_err(|e| eyre!("Invalid hex u8: {}", e)) + } else { + s.parse::() + .map_err(|e| eyre!("Invalid decimal u8: {}", e)) } +} - let bytecode = content.trim().to_string(); - if bytecode.is_empty() { - return Err(eyre!( - "Could not find creation bytecode in {}", - bytecode_path - )); +fn parse_u32(s: &str) -> Result { + if s.starts_with("0x") { + u32::from_str_radix(&s[2..], 16).map_err(|e| eyre!("Invalid hex u32: {}", e)) + } else { + s.parse::() + .map_err(|e| eyre!("Invalid decimal u32: {}", e)) } +} - Ok(bytecode) +fn parse_uint(s: &str) -> Result { + if s.starts_with("0x") { + alloy::primitives::U256::from_str_radix(&s[2..], 16) + .map_err(|e| eyre!("Invalid hex uint: {}", e)) + } else { + alloy::primitives::U256::from_str_radix(s, 10) + .map_err(|e| eyre!("Invalid decimal uint: {}", e)) + } } -/// Encode constructor arguments using alloy -fn encode_constructor_args( +/// Convert ConstructorArgs to DynSolValues +fn args_to_dyn_sol_values( args: &[ConstructorArg], deployed: &HashMap, -) -> Result { - use alloy::primitives::{Address, Bytes, U256}; - use alloy::sol_types::SolValue; +) -> Result> { + use alloy::dyn_abi::DynSolValue; + use alloy::primitives::{Address, U256}; - let mut encoded = Vec::new(); + let mut values = Vec::new(); for arg in args { let resolved_value = arg.resolve_value(deployed)?; - let token_bytes = match arg.arg_type.as_str() { + let value = match arg.arg_type.as_str() { "address" => { let addr: Address = resolved_value .parse() .map_err(|e| eyre!("Invalid address '{}': {}", resolved_value, e))?; - addr.abi_encode() + DynSolValue::Address(addr) } "uint256" | "uint" => { - let value = if resolved_value.starts_with("0x") { - U256::from_str_radix(&resolved_value[2..], 16)? - } else { - U256::from_str_radix(&resolved_value, 10)? - }; - value.abi_encode() + let val = parse_uint(&resolved_value)?; + DynSolValue::Uint(val, 256) + } + "uint32" => { + let val = parse_u32(&resolved_value)?; + DynSolValue::Uint(U256::from(val), 32) } - "string" => resolved_value.abi_encode(), + "uint8" => { + let val = parse_u8(&resolved_value)?; + DynSolValue::Uint(U256::from(val), 8) + } + "string" => DynSolValue::String(resolved_value), "bytes" => { let data = resolved_value.trim_start_matches("0x"); - let bytes = hex::decode(data) - .map_err(|e| eyre!("Invalid hex bytes '{}': {}", resolved_value, e))?; - Bytes::from(bytes).abi_encode() + let bytes = if data.is_empty() { + Vec::new() + } else { + hex::decode(data) + .map_err(|e| eyre!("Invalid hex bytes '{}': {}", resolved_value, e))? + }; + DynSolValue::Bytes(bytes) } "bool" => { let b = resolved_value .parse::() .map_err(|e| eyre!("Invalid bool value '{}': {}", resolved_value, e))?; - b.abi_encode() + DynSolValue::Bool(b) } - _ => return Err(eyre!("Unsupported constructor arg type: {}", arg.arg_type)), + _ => return Err(eyre!("Unsupported arg type: {}", arg.arg_type)), }; - encoded.extend_from_slice(&token_bytes); + + values.push(value); } + Ok(values) +} + +/// Encode constructor arguments using alloy with proper ABI encoding +fn encode_constructor_args( + args: &[ConstructorArg], + deployed: &HashMap, +) -> Result { + if args.is_empty() { + return Ok(String::from("0x")); + } + + let values = args_to_dyn_sol_values(args, deployed)?; + let tuple = alloy::dyn_abi::DynSolValue::Tuple(values); + let encoded = tuple + .abi_encode_sequence() + .ok_or_else(|| eyre!("Failed to encode constructor arguments"))?; + Ok(format!("0x{}", hex::encode(encoded))) } -/// Encode function call with arguments +/// Encode function call with arguments using proper ABI encoding fn encode_function_call( function_sig: &str, args: &[ConstructorArg], @@ -409,23 +395,32 @@ fn encode_function_call( let encoded_args = if args.is_empty() { String::new() } else { - encode_constructor_args(args, deployed)? - .trim_start_matches("0x") - .to_string() + let values = args_to_dyn_sol_values(args, deployed)?; + let tuple = alloy::dyn_abi::DynSolValue::Tuple(values); + let encoded = tuple + .abi_encode_sequence() + .ok_or_else(|| eyre!("Failed to encode function arguments"))?; + hex::encode(encoded) }; Ok(format!("0x{}{}", hex::encode(selector), encoded_args)) } #[instrument(level = "trace", skip_all)] -async fn get_nonce(port: u16, client: &Client, address: &str) -> Result { +async fn rpc_call( + port: u16, + client: &Client, + method: &str, + params: serde_json::Value, +) -> Result { let url = format!("http://localhost:{}", port); let request_body = serde_json::json!({ "jsonrpc": "2.0", - "method": "eth_getTransactionCount", - "params": [address, "latest"], + "method": method, + "params": params, "id": 1 }); + let response: serde_json::Value = client .post(&url) .json(&request_body) @@ -434,13 +429,25 @@ async fn get_nonce(port: u16, client: &Client, address: &str) -> Result { .json() .await?; + Ok(response) +} + +#[instrument(level = "trace", skip_all)] +async fn get_nonce(port: u16, client: &Client, address: &str) -> Result { + let response = rpc_call( + port, + client, + "eth_getTransactionCount", + serde_json::json!([address, "latest"]), + ) + .await?; + let nonce_hex = response["result"] .as_str() .ok_or_else(|| eyre!("Invalid nonce response"))? .trim_start_matches("0x"); - let nonce = u64::from_str_radix(nonce_hex, 16)?; - Ok(nonce) + Ok(u64::from_str_radix(nonce_hex, 16)?) } #[instrument(level = "trace", skip_all)] @@ -452,8 +459,6 @@ async fn execute_transaction( data: &str, nonce: u64, ) -> Result { - let url = format!("http://localhost:{}", port); - let mut params = serde_json::json!({ "from": from, "data": data, @@ -465,32 +470,21 @@ async fn execute_transaction( params["to"] = serde_json::json!(to_addr); } - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "eth_sendTransaction", - "params": [params], - "id": 1 - }); - - let res: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; + let res = rpc_call( + port, + client, + "eth_sendTransaction", + serde_json::json!([params]), + ) + .await?; - if let Some(result) = res.get("result") { - if let Some(result) = result.as_str() { - let result = result.to_string(); - return Ok(result); - } - return Err(eyre!("unexpected result: {res}")); + if let Some(result) = res.get("result").and_then(|r| r.as_str()) { + return Ok(result.to_string()); } if let Some(error) = res.get("error") { return Err(eyre!("{error}")); } - return Err(eyre!("unexpected response: {res}")); + Err(eyre!("unexpected response: {res}")) } #[instrument(level = "trace", skip_all)] @@ -499,21 +493,13 @@ async fn get_transaction_receipt( client: &Client, tx_hash: &str, ) -> Result> { - let url = format!("http://localhost:{}", port); - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "eth_getTransactionReceipt", - "params": [tx_hash], - "id": 1 - }); - - let response: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; + let response = rpc_call( + port, + client, + "eth_getTransactionReceipt", + serde_json::json!([tx_hash]), + ) + .await?; if let Some(receipt) = response.get("result") { if receipt.is_null() { @@ -527,11 +513,51 @@ async fn get_transaction_receipt( Ok(None) } +struct AnvilImpersonator<'a> { + port: u16, + client: &'a Client, + address: &'a str, +} + +impl<'a> AnvilImpersonator<'a> { + async fn new(port: u16, client: &'a Client, address: &'a str) -> Result { + rpc_call( + port, + client, + "anvil_impersonateAccount", + serde_json::json!([address]), + ) + .await?; + Ok(Self { + port, + client, + address, + }) + } +} + +impl<'a> Drop for AnvilImpersonator<'a> { + fn drop(&mut self) { + // Best effort cleanup - ignore errors + let port = self.port; + let client = self.client.clone(); + let address = self.address.to_string(); + + tokio::spawn(async move { + let _ = rpc_call( + port, + &client, + "anvil_stopImpersonatingAccount", + serde_json::json!([address]), + ) + .await; + }); + } +} + #[instrument(level = "trace", skip_all)] async fn deploy_contracts(port: u16, config: &ChainConfig) -> Result> { let client = Client::new(); - let url = format!("http://localhost:{}", port); - let mut deployed_addresses = HashMap::new(); // First, collect addresses from config (contracts with explicit address) @@ -542,38 +568,25 @@ async fn deploy_contracts(port: u16, config: &ChainConfig) -> Result Result { info!("Deployment tx for '{}': {}", name, tx_hash); @@ -610,21 +622,6 @@ async fn deploy_contracts(port: u16, config: &ChainConfig) -> Result, ) -> Result<()> { - let client = Client::new(); - let url = format!("http://localhost:{}", port); - if config.transactions.is_empty() { return Ok(()); } - // Impersonate owner - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "anvil_impersonateAccount", - "params": [OWNER_ADDRESS], - "id": 1 - }); - let _: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; + info!( + "Found {} configured transactions", + config.transactions.len() + ); + let client = Client::new(); + let _impersonator = AnvilImpersonator::new(port, &client, OWNER_ADDRESS).await?; let mut nonce = get_nonce(port, &client, OWNER_ADDRESS).await?; for tx_config in &config.transactions { let name = tx_config.name.as_deref().unwrap_or("unnamed"); - // Resolve target address (might be a reference) + // Resolve target address let target = if let Some(ref_name) = tx_config.target.strip_prefix('#') { deployed.get(ref_name).cloned().ok_or_else(|| { eyre!( @@ -688,79 +674,143 @@ async fn execute_config_transactions( info!("Executing transaction '{}' to {}", name, target); match execute_transaction(port, &client, OWNER_ADDRESS, Some(&target), &data, nonce).await { - Ok(tx_hash) => { - info!("Transaction '{}' sent: {}", name, tx_hash); - } - Err(e) => { - info!("Transaction '{}' failed: {}", name, e); - } + Ok(tx_hash) => info!("Transaction '{}' sent: {}", name, tx_hash), + Err(e) => info!("Transaction '{}' failed: {}", name, e), } nonce += 1; } - // Stop impersonating - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "anvil_stopImpersonatingAccount", - "params": [OWNER_ADDRESS], - "id": 1 - }); - let _: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; - Ok(()) } #[instrument(level = "trace", skip_all)] -async fn initialize_contracts(port: u16, addresses: &ContractAddresses) -> Result<()> { - let client = Client::new(); - let url = format!("http://localhost:{}", port); +async fn mint_test_nfts(port: u16, addresses: &mut ContractAddresses) -> Result<()> { + info!("Minting test NFTs..."); - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "anvil_impersonateAccount", - "params": [OWNER_ADDRESS], - "id": 1 - }); - let _: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; + let Some(ref permissioned_minter) = addresses.hyper_permissioned_minter else { + info!("Skipping NFT minting: hyper_permissioned_minter not deployed"); + return Ok(()); + }; - let mut nonce = get_nonce(port, &client, OWNER_ADDRESS).await?; + // Call tbaOf(0) to get zeroth_tba address + let tba_of_zero_calldata = + "0x27244d1e0000000000000000000000000000000000000000000000000000000000000000"; + let zeroth_tba_result = + call_contract(port, &addresses.hypermap_proxy, tba_of_zero_calldata).await?; + info!("zeroth_tba_result: {}", zeroth_tba_result); + + // Extract address from result (last 20 bytes / 40 hex chars) + let zeroth_tba = if zeroth_tba_result.len() >= 42 { + format!("0x{}", &zeroth_tba_result[zeroth_tba_result.len() - 40..]) + } else { + return Err(eyre!("Hypermap is not initialized")); + }; + + info!("Resolved zeroth_tba from hypermap: {}", zeroth_tba); + addresses.zeroth_tba = Some(zeroth_tba.clone()); - let transactions = addresses.get_transactions(); - for (to, data) in transactions { - match execute_transaction(port, &client, OWNER_ADDRESS, Some(&to), &data, nonce).await { - Ok(result) => info!("Transaction to {to}: {result}"), - Err(e) => info!("Transaction failed: {e:?}"), + let client = Client::new(); + let _impersonator = AnvilImpersonator::new(port, &client, OWNER_ADDRESS).await?; + let nonce = get_nonce(port, &client, OWNER_ADDRESS).await?; + + // Build mint calldata: mint(address to, bytes label, bytes initialization, address implementation) + let label_hex = "0x6f73"; // "os" label (2 bytes) + + let mint_args = vec![ + ConstructorArg { + arg_type: "address".to_string(), + value: OWNER_ADDRESS.to_string(), + }, + ConstructorArg { + arg_type: "bytes".to_string(), + value: label_hex.to_string(), + }, + ConstructorArg { + arg_type: "bytes".to_string(), + value: "0x".to_string(), + }, + ConstructorArg { + arg_type: "address".to_string(), + value: permissioned_minter.clone(), + }, + ]; + + let deployed_map = HashMap::new(); + let mint_calldata = encode_function_call( + "mint(address,bytes,bytes,address)", + &mint_args, + &deployed_map, + )?; + + info!("Mint calldata: {}", mint_calldata); + + // Build execute calldata: execute(address,uint256,bytes,uint8) + let execute_args = vec![ + ConstructorArg { + arg_type: "address".to_string(), + value: addresses.hypermap_proxy.clone(), + }, + ConstructorArg { + arg_type: "uint256".to_string(), + value: "0".to_string(), + }, + ConstructorArg { + arg_type: "bytes".to_string(), + value: mint_calldata.clone(), + }, + ConstructorArg { + arg_type: "uint8".to_string(), + value: "0".to_string(), + }, + ]; + + let execute_calldata = encode_function_call( + "execute(address,uint256,bytes,uint8)", + &execute_args, + &deployed_map, + )?; + + info!("Execute calldata: {}", execute_calldata); + + // Send transaction to zeroth_tba + match execute_transaction( + port, + &client, + OWNER_ADDRESS, + Some(&zeroth_tba), + &execute_calldata, + nonce, + ) + .await + { + Ok(tx_hash) => { + info!("Mint NFT transaction sent: {}", tx_hash); + + sleep(Duration::from_millis(200)).await; + + // Calculate token ID from label (.os) + let token_id_hex = "0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd"; + let tba_of_calldata = format!("0x27244d1e{}", &token_id_hex[2..]); + + if let Ok(dot_os_tba_result) = + call_contract(port, &addresses.hypermap_proxy, &tba_of_calldata).await + { + info!("dot_os_tba_result: {}", dot_os_tba_result); + if dot_os_tba_result.len() >= 42 { + let dot_os_tba = + format!("0x{}", &dot_os_tba_result[dot_os_tba_result.len() - 40..]); + info!("Minted dot_os_tba: {}", dot_os_tba); + addresses.dot_os_tba = Some(dot_os_tba); + } + } + } + Err(e) => { + info!("Mint NFT transaction failed: {}", e); } - nonce += 1; } - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "anvil_stopImpersonatingAccount", - "params": [OWNER_ADDRESS], - "id": 1 - }); - let _: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; - + info!("Test NFTs minted successfully"); Ok(()) } @@ -771,7 +821,6 @@ async fn apply_config_contracts( deployed: &HashMap, ) -> Result<()> { let client = Client::new(); - let url = format!("http://localhost:{}", port); // Only process contracts with explicit address (not deployed via contract_json_path) for contract in &config.contracts { @@ -793,19 +842,13 @@ async fn apply_config_contracts( }; if let Some(bytecode) = bytecode { - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "anvil_setCode", - "params": [address, bytecode.trim()], - "id": 1 - }); - let _: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; + rpc_call( + port, + &client, + "anvil_setCode", + serde_json::json!([address, bytecode.trim()]), + ) + .await?; let name_info = contract.name.as_deref().unwrap_or("unnamed"); info!("Set bytecode for contract '{}' at {}", name_info, address); @@ -816,19 +859,14 @@ async fn apply_config_contracts( let normalized_slot = normalize_slot(slot); let hex_value = value.to_hex_string(deployed)?; - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "anvil_setStorageAt", - "params": [address, normalized_slot, hex_value], - "id": 1 - }); - let _: serde_json::Value = client - .post(&url) - .json(&request_body) - .send() - .await? - .json() - .await?; + rpc_call( + port, + &client, + "anvil_setStorageAt", + serde_json::json!([address, normalized_slot, hex_value]), + ) + .await?; + debug!("Set storage slot {} for {} to {}", slot, address, hex_value); } } @@ -837,23 +875,46 @@ async fn apply_config_contracts( } #[instrument(level = "trace", skip_all)] -async fn check_dot_os_tba(port: u16, addresses: &ContractAddresses) -> Result { +async fn check_dot_os_tba(port: u16) -> Result { + let dot_os_tba = "0x9b3853358ede717fc7D4806cF75d7A4d4517A9C9"; let client = Client::new(); - let url = format!("http://localhost:{}", port); - - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "eth_getCode", - "params": [&addresses.dot_os_tba, "latest"], - "id": 1 - }); - let response = client.post(&url).json(&request_body).send().await?; - let result: serde_json::Value = response.json().await?; - let code = result["result"].as_str().unwrap_or("0x"); + let response = rpc_call( + port, + &client, + "eth_getCode", + serde_json::json!([dot_os_tba, "latest"]), + ) + .await?; + let code = response["result"].as_str().unwrap_or("0x"); Ok(code != "0x") } +async fn process_configs( + port: u16, + default_config: Option<&ChainConfig>, + custom_config: Option<&ChainConfig>, +) -> Result> { + let mut deployed_addresses = HashMap::new(); + + // Deploy contracts + for config in [default_config, custom_config].iter().filter_map(|c| *c) { + deployed_addresses.extend(deploy_contracts(port, config).await?); + } + + // Apply bytecode at known addresses + for config in [default_config, custom_config].iter().filter_map(|c| *c) { + apply_config_contracts(port, config, &deployed_addresses).await?; + } + + // Execute config transactions + for config in [default_config, custom_config].iter().filter_map(|c| *c) { + execute_config_transactions(port, config, &deployed_addresses).await?; + } + + Ok(deployed_addresses) +} + #[instrument(level = "trace", skip_all)] pub async fn start_chain( port: u16, @@ -883,14 +944,12 @@ pub async fn start_chain_with_config( .await?; let default_config = load_config(&PathBuf::from(DEFAULT_CONFIG_PATH))?; - let custom_config = if let Some(path) = custom_config_path { load_config(&path)? } else { None }; - // Use custom config if available, otherwise default let active_config = custom_config .as_ref() .or(default_config.as_ref()) @@ -903,44 +962,13 @@ pub async fn start_chain_with_config( info!("Checking for Anvil on port {}...", port); if wait_for_anvil(port, 1, None).await.is_ok() { - // Deploy contracts first (sequentially with reference resolution) - let mut deployed_addresses = HashMap::new(); - if let Some(config) = default_config.as_ref() { - deployed_addresses.extend(deploy_contracts(port, config).await?); - } - if let Some(config) = custom_config.as_ref() { - deployed_addresses.extend(deploy_contracts(port, config).await?); - } - - // Load contract addresses (now with deployed addresses) - let addresses = - ContractAddresses::from_config(port, active_config, &deployed_addresses).await?; - info!("Loaded contract addresses from config"); - - if !check_dot_os_tba(port, &addresses).await? { - // Apply bytecode at known addresses (with reference resolution) - if let Some(config) = default_config.as_ref() { - apply_config_contracts(port, config, &deployed_addresses).await?; - } - if let Some(config) = custom_config.as_ref() { - apply_config_contracts(port, config, &deployed_addresses).await?; - } - - // Execute config transactions - if let Some(config) = default_config.as_ref() { - execute_config_transactions(port, config, &deployed_addresses).await?; - } - if let Some(config) = custom_config.as_ref() { - execute_config_transactions(port, config, &deployed_addresses).await?; - } - - // Finally initialize - initialize_contracts(port, &addresses).await?; + if !check_dot_os_tba(port).await? { + let deployed_addresses = + process_configs(port, default_config.as_ref(), custom_config.as_ref()).await?; + let mut addresses = ContractAddresses::from_config(active_config, &deployed_addresses)?; + mint_test_nfts(port, &mut addresses).await?; + addresses.print_summary(); } - - // Print summary - addresses.print_summary(); - return Ok(None); } @@ -948,6 +976,7 @@ pub async fn start_chain_with_config( if tracing { args.push("--tracing".to_string()); } + let mut child = Command::new("anvil") .args(args) .current_dir(KIT_CACHE) @@ -964,66 +993,20 @@ pub async fn start_chain_with_config( return Err(e); } - // Deploy contracts first (sequentially with reference resolution) - let mut deployed_addresses = HashMap::new(); - if let Some(config) = default_config.as_ref() { - match deploy_contracts(port, config).await { - Ok(addrs) => deployed_addresses.extend(addrs), + let deployed_addresses = + match process_configs(port, default_config.as_ref(), custom_config.as_ref()).await { + Ok(addrs) => addrs, Err(e) => { let _ = child.kill(); - return Err(e.wrap_err("Failed to deploy contracts from default config")); + return Err(e.wrap_err("Failed to process configs")); } - } - } - if let Some(config) = custom_config.as_ref() { - match deploy_contracts(port, config).await { - Ok(addrs) => deployed_addresses.extend(addrs), - Err(e) => { - let _ = child.kill(); - return Err(e.wrap_err("Failed to deploy contracts from custom config")); - } - } - } - - // Load contract addresses (now with deployed addresses) - let addresses = - ContractAddresses::from_config(port, active_config, &deployed_addresses).await?; - info!("Loaded contract addresses from config"); + }; - if !check_dot_os_tba(port, &addresses).await? { - // Apply bytecode at known addresses (with reference resolution) - if let Some(config) = default_config.as_ref() { - if let Err(e) = apply_config_contracts(port, &config, &deployed_addresses).await { - let _ = child.kill(); - return Err(e.wrap_err("Failed to apply default config contracts")); - } - } - if let Some(config) = custom_config.as_ref() { - if let Err(e) = apply_config_contracts(port, &config, &deployed_addresses).await { - let _ = child.kill(); - return Err(e.wrap_err("Failed to apply custom config contracts")); - } - } + let mut addresses = ContractAddresses::from_config(active_config, &deployed_addresses)?; - // Execute config transactions - if let Some(config) = default_config.as_ref() { - if let Err(e) = execute_config_transactions(port, &config, &deployed_addresses).await { - let _ = child.kill(); - return Err(e.wrap_err("Failed to execute default config transactions")); - } - } - if let Some(config) = custom_config.as_ref() { - if let Err(e) = execute_config_transactions(port, &config, &deployed_addresses).await { - let _ = child.kill(); - return Err(e.wrap_err("Failed to execute custom config transactions")); - } - } - - // Finally initialize - if let Err(e) = initialize_contracts(port, &addresses).await { - let _ = child.kill(); - return Err(e.wrap_err("Failed to initialize contracts")); - } + if let Err(e) = mint_test_nfts(port, &mut addresses).await { + let _ = child.kill(); + return Err(e.wrap_err("Failed to mint test NFTs")); } if let Err(e) = verify_contracts(port, &addresses).await { @@ -1031,7 +1014,6 @@ pub async fn start_chain_with_config( return Err(e.wrap_err("Contract verification failed")); } - // Print summary addresses.print_summary(); Ok(Some(child)) @@ -1044,29 +1026,17 @@ async fn wait_for_anvil( mut recv_kill: Option, ) -> Result<()> { let client = Client::new(); - let url = format!("http://localhost:{}", port); for _ in 0..max_attempts { - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "eth_blockNumber", - "params": [], - "id": 1 - }); - - let response = client.post(&url).json(&request_body).send().await; - - match response { - Ok(resp) if resp.status().is_success() => { - let result: serde_json::Value = resp.json().await?; - if let Some(block_number) = result["result"].as_str() { - if block_number.starts_with("0x") { - info!("Anvil is ready on port {}.", port); - return Ok(()); - } + if let Ok(response) = + rpc_call(port, &client, "eth_blockNumber", serde_json::json!([])).await + { + if let Some(block_number) = response["result"].as_str() { + if block_number.starts_with("0x") { + info!("Anvil is ready on port {}.", port); + return Ok(()); } } - _ => (), } if let Some(ref mut recv_kill) = recv_kill { @@ -1092,21 +1062,13 @@ async fn wait_for_anvil( #[instrument(level = "trace", skip_all)] pub async fn call_contract(port: u16, target: &str, data: &str) -> Result { let client = Client::new(); - let url = format!("http://localhost:{}", port); - - let request_body = serde_json::json!({ - "jsonrpc": "2.0", - "method": "eth_call", - "params": [{ - "to": target, - "data": data, - }, "latest"], - "id": 1 - }); - - let response = client.post(&url).json(&request_body).send().await?; - - let result: serde_json::Value = response.json().await?; + let result = rpc_call( + port, + &client, + "eth_call", + serde_json::json!([{"to": target, "data": data}, "latest"]), + ) + .await?; if let Some(output) = result.get("result").and_then(|r| r.as_str()) { return Ok(output.to_string()); @@ -1160,12 +1122,14 @@ pub async fn execute( custom_config_path, ) .await?; + let Some(mut child) = child else { return Err(eyre!( "Port {} is already in use by another anvil process", port )); }; + let child_id = child.id() as i32; let cleanup_anvil = tokio::spawn(async move { @@ -1174,10 +1138,8 @@ pub async fn execute( }); let _ = child.wait(); - let _ = handle_signals.await; let _ = cleanup_anvil.await; - let _ = send_to_kill.send(true); Ok(()) From 724cf78b3f09dd60235ee42d83d80a6b24290384 Mon Sep 17 00:00:00 2001 From: Pax G Date: Tue, 28 Oct 2025 07:19:20 -0700 Subject: [PATCH 06/52] fixed custom config bug + made contracts from default config visible in custom config --- src/chain/mod.rs | 101 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 76 insertions(+), 25 deletions(-) diff --git a/src/chain/mod.rs b/src/chain/mod.rs index d4133ba1..17e673a8 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -35,6 +35,7 @@ struct ContractAddresses { hyper_permissioned_minter: Option, zeroth_tba: Option, dot_os_tba: Option, + other_contracts: HashMap, } impl ContractAddresses { @@ -56,6 +57,22 @@ impl ContractAddresses { config.get_address_by_name(name) }; + let mut other_contracts = HashMap::new(); + for contract in &config.contracts { + if let Some(name) = &contract.name { + // Пропускаем известные контракты + if !matches!(name.as_str(), + "hypermap-proxy" | "hypermap-impl" | "hyperaccount" | + "erc6551registry" | "multicall" | "create2" | + "hyperaccount-9char-commit-minter" | "hyperaccount-permissioned-minter" + ) { + if let Some(addr) = deployed.get(name) { + other_contracts.insert(name.clone(), addr.clone()); + } + } + } + } + Ok(Self { hypermap_proxy: resolve("hypermap-proxy")?, hypermap_impl: resolve("hypermap-impl")?, @@ -67,33 +84,36 @@ impl ContractAddresses { hyper_permissioned_minter: resolve_optional("hyperaccount-permissioned-minter"), zeroth_tba: None, dot_os_tba: None, + other_contracts, }) } - fn print_summary(&self) { - info!("╔════════════════════════════════════════════════════════════════════════╗"); - info!("║ Contract Addresses Summary ║"); - info!("╠════════════════════════════════════════════════════════════════════════╣"); - info!("║ hypermap_proxy: {} ║", self.hypermap_proxy); - info!("║ hypermap_impl: {} ║", self.hypermap_impl); - info!("║ hyperaccount: {} ║", self.hyperaccount); - info!("║ erc6551registry: {} ║", self.erc6551registry); - info!("║ multicall: {} ║", self.multicall); - info!("║ create2: {} ║", self.create2); + info!("Contract Addresses:"); + info!("{} hypermap_proxy", self.hypermap_proxy); + info!("{} hypermap_impl", self.hypermap_impl); + info!("{} hyperaccount", self.hyperaccount); + info!("{} erc6551registry", self.erc6551registry); + info!("{} multicall", self.multicall); + info!("{} create2", self.create2); if let Some(addr) = &self.hyper_9char_commit_minter { - info!("║ 9char_commit_minter: {} ║", addr); + info!("{} 9char_commit_minter", addr); } if let Some(addr) = &self.hyper_permissioned_minter { - info!("║ permissioned_minter: {} ║", addr); + info!("{} permissioned_minter", addr); } + + if !self.other_contracts.is_empty() { + for (name, addr) in &self.other_contracts { + info!("{} {}", addr, name); + } + } + if let Some(addr) = &self.zeroth_tba { - info!("╠════════════════════════════════════════════════════════════════════════╣"); - info!("║ zeroth_tba (minted): {} ║", addr); + info!("{} zeroth_tba (minted)", addr); } if let Some(addr) = &self.dot_os_tba { - info!("║ dot_os_tba (minted): {} ║", addr); + info!("{} dot_os_tba (minted)", addr); } - info!("╚════════════════════════════════════════════════════════════════════════╝"); } } @@ -556,9 +576,9 @@ impl<'a> Drop for AnvilImpersonator<'a> { } #[instrument(level = "trace", skip_all)] -async fn deploy_contracts(port: u16, config: &ChainConfig) -> Result> { +async fn deploy_contracts(port: u16, config: &ChainConfig, deployed: &HashMap) -> Result> { let client = Client::new(); - let mut deployed_addresses = HashMap::new(); + let mut deployed_addresses = deployed.clone(); // First, collect addresses from config (contracts with explicit address) for contract in &config.contracts { @@ -897,18 +917,49 @@ async fn process_configs( ) -> Result> { let mut deployed_addresses = HashMap::new(); - // Deploy contracts - for config in [default_config, custom_config].iter().filter_map(|c| *c) { - deployed_addresses.extend(deploy_contracts(port, config).await?); + // Step 1: Collect ALL pre-registered addresses from both configs FIRST + // This ensures custom config can reference default config contracts + if let Some(config) = default_config { + for contract in &config.contracts { + if let (Some(name), Some(address)) = (&contract.name, &contract.address) { + deployed_addresses.insert(name.clone(), address.clone()); + debug!("Pre-registered from default config: {} = {}", name, address); + } + } + } + if let Some(config) = custom_config { + for contract in &config.contracts { + if let (Some(name), Some(address)) = (&contract.name, &contract.address) { + deployed_addresses.insert(name.clone(), address.clone()); + debug!("Pre-registered from custom config: {} = {}", name, address); + } + } + } + + // Step 2: Deploy contracts from default config first + // Now deployed_addresses contains all pre-registered addresses + if let Some(config) = default_config { + deployed_addresses.extend(deploy_contracts(port, config, &deployed_addresses).await?); } - // Apply bytecode at known addresses - for config in [default_config, custom_config].iter().filter_map(|c| *c) { + // Step 3: Deploy contracts from custom config (can reference default config contracts) + if let Some(config) = custom_config { + deployed_addresses.extend(deploy_contracts(port, config, &deployed_addresses).await?); + } + + // Step 4: Apply bytecode at known addresses + if let Some(config) = default_config { + apply_config_contracts(port, config, &deployed_addresses).await?; + } + if let Some(config) = custom_config { apply_config_contracts(port, config, &deployed_addresses).await?; } - // Execute config transactions - for config in [default_config, custom_config].iter().filter_map(|c| *c) { + // Step 5: Execute config transactions + if let Some(config) = default_config { + execute_config_transactions(port, config, &deployed_addresses).await?; + } + if let Some(config) = custom_config { execute_config_transactions(port, config, &deployed_addresses).await?; } From 76cba31755b9ff36049bca8280ee290e01bf4c6a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 28 Oct 2025 14:19:53 +0000 Subject: [PATCH 07/52] Format Rust code using rustfmt --- src/chain/mod.rs | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/chain/mod.rs b/src/chain/mod.rs index 17e673a8..93993b9e 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -61,10 +61,16 @@ impl ContractAddresses { for contract in &config.contracts { if let Some(name) = &contract.name { // Пропускаем известные контракты - if !matches!(name.as_str(), - "hypermap-proxy" | "hypermap-impl" | "hyperaccount" | - "erc6551registry" | "multicall" | "create2" | - "hyperaccount-9char-commit-minter" | "hyperaccount-permissioned-minter" + if !matches!( + name.as_str(), + "hypermap-proxy" + | "hypermap-impl" + | "hyperaccount" + | "erc6551registry" + | "multicall" + | "create2" + | "hyperaccount-9char-commit-minter" + | "hyperaccount-permissioned-minter" ) { if let Some(addr) = deployed.get(name) { other_contracts.insert(name.clone(), addr.clone()); @@ -101,13 +107,13 @@ impl ContractAddresses { if let Some(addr) = &self.hyper_permissioned_minter { info!("{} permissioned_minter", addr); } - + if !self.other_contracts.is_empty() { for (name, addr) in &self.other_contracts { info!("{} {}", addr, name); } } - + if let Some(addr) = &self.zeroth_tba { info!("{} zeroth_tba (minted)", addr); } @@ -576,7 +582,11 @@ impl<'a> Drop for AnvilImpersonator<'a> { } #[instrument(level = "trace", skip_all)] -async fn deploy_contracts(port: u16, config: &ChainConfig, deployed: &HashMap) -> Result> { +async fn deploy_contracts( + port: u16, + config: &ChainConfig, + deployed: &HashMap, +) -> Result> { let client = Client::new(); let mut deployed_addresses = deployed.clone(); From a4e1801ff786baaf3cbf58922c9275edc29e370d Mon Sep 17 00:00:00 2001 From: Pax G Date: Tue, 28 Oct 2025 07:29:48 -0700 Subject: [PATCH 08/52] fixed typo --- src/chain/mod.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/chain/mod.rs b/src/chain/mod.rs index 93993b9e..03c7303f 100644 --- a/src/chain/mod.rs +++ b/src/chain/mod.rs @@ -60,7 +60,6 @@ impl ContractAddresses { let mut other_contracts = HashMap::new(); for contract in &config.contracts { if let Some(name) = &contract.name { - // Пропускаем известные контракты if !matches!( name.as_str(), "hypermap-proxy" From 26fd5db055e0ad52cb0673dc9eb91a7af924315c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Juki=C4=87?= Date: Fri, 10 Oct 2025 14:28:31 +0200 Subject: [PATCH 09/52] add hyperapp skeleton to templates --- Cargo.lock | 2286 ++++++++++++++++++++++++++++++------------------ src/main.rs | 2 +- src/new/mod.rs | 5 +- 3 files changed, 1443 insertions(+), 850 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 21d83443..d3259a38 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,24 +4,18 @@ version = 4 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" dependencies = [ "gimli", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aes" @@ -36,12 +30,12 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", - "getrandom", + "getrandom 0.3.3", "once_cell", "version_check", "zerocopy", @@ -58,15 +52,15 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alloy" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e1758e5d759c0114140152ae72032eafcfdd7b599e995ebbc8eeafa2b4c977" +checksum = "59febb24956a41c29bb5f450978fbe825bd6456b3f80586c8bd558dc882e7b6a" dependencies = [ "alloy-consensus", "alloy-contract", @@ -91,19 +85,20 @@ dependencies = [ [[package]] name = "alloy-chains" -version = "0.1.27" +version = "0.1.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b515e82c8468ddb6ff8db21c78a5997442f113fd8471fd5b2261b2602dd0c67" +checksum = "28e2652684758b0d9b389d248b209ed9fd9989ef489a550265fe4bb8454fe7eb" dependencies = [ + "alloy-primitives", "num_enum", "strum", ] [[package]] name = "alloy-consensus" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a205d0cbb7bfdf9f4fd4b0ec842bc4c5f926e8c14ec3072d3fd75dd363baf1e0" +checksum = "e88e1edea70787c33e11197d3f32ae380f3db19e6e061e539a5bcf8184a6b326" dependencies = [ "alloy-eips", "alloy-primitives", @@ -112,15 +107,15 @@ dependencies = [ "alloy-trie", "auto_impl", "c-kzg", - "derive_more", + "derive_more 1.0.0", "serde", ] [[package]] name = "alloy-consensus-any" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "993c34090a3f281cb746fd1604520cf21f8407ffbeb006aaa34c0556bffa718e" +checksum = "57b1bb53f40c0273cd1975573cd457b39213e68584e36d1401d25fd0398a1d65" dependencies = [ "alloy-consensus", "alloy-eips", @@ -132,9 +127,9 @@ dependencies = [ [[package]] name = "alloy-contract" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aec7945dff98ba68489aa6da455bf66f6c0fee8157df06747fbae7cb03c368e2" +checksum = "1b668c78c4b1f12f474ede5a85e8ce550d0aa1ef7d49fd1d22855a43b960e725" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -148,14 +143,14 @@ dependencies = [ "alloy-transport", "futures", "futures-util", - "thiserror 2.0.7", + "thiserror 2.0.17", ] [[package]] name = "alloy-core" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c618bd382f0bc2ac26a7e4bfae01c9b015ca8f21b37ca40059ae35a7e62b3dc6" +checksum = "9d8bcce99ad10fe02640cfaec1c6bc809b837c783c1d52906aa5af66e2a196f6" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -166,9 +161,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41056bde53ae10ffbbf11618efbe1e0290859e5eab0fe9ef82ebdb62f12a866f" +checksum = "eb8e762aefd39a397ff485bc86df673465c4ad3ec8819cc60833a8a3ba5cdc87" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -178,7 +173,7 @@ dependencies = [ "itoa", "serde", "serde_json", - "winnow 0.6.18", + "winnow", ] [[package]] @@ -200,15 +195,15 @@ checksum = "4c986539255fb839d1533c128e190e557e52ff652c9ef62939e233a81dd93f7e" dependencies = [ "alloy-primitives", "alloy-rlp", - "derive_more", + "derive_more 1.0.0", "serde", ] [[package]] name = "alloy-eips" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1d9907c29ce622946759bf4fd3418166bfeae76c1c544b8081c7be3acd9b4be" +checksum = "5f9fadfe089e9ccc0650473f2d4ef0a28bc015bbca5631d9f0f09e49b557fdb3" dependencies = [ "alloy-eip2930", "alloy-eip7702", @@ -216,7 +211,7 @@ dependencies = [ "alloy-rlp", "alloy-serde", "c-kzg", - "derive_more", + "derive_more 1.0.0", "once_cell", "serde", "sha2", @@ -224,9 +219,9 @@ dependencies = [ [[package]] name = "alloy-genesis" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f13f7405a8eb8021258994ed1beab490c3e509ebbe2c18e1c24ae10749d56b" +checksum = "2b2a4cf7b70f3495788e74ce1c765260ffe38820a2a774ff4aacb62e31ea73f9" dependencies = [ "alloy-primitives", "alloy-serde", @@ -236,9 +231,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c357da577dfb56998d01f574d81ad7a1958d248740a7981b205d69d65a7da404" +checksum = "fe6beff64ad0aa6ad1019a3db26fef565aefeb011736150ab73ed3366c3cfd1b" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -248,23 +243,23 @@ dependencies = [ [[package]] name = "alloy-json-rpc" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39a786ce6bc7539dc30cabac6b7875644247c9e7d780e71a9f254d42ebdc013c" +checksum = "e29040b9d5fe2fb70415531882685b64f8efd08dfbd6cc907120650504821105" dependencies = [ "alloy-primitives", "alloy-sol-types", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-network" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99051f82f77159d5bee06108f33cffee02849e2861fc500bf74213aa2ae8a26e" +checksum = "510cc00b318db0dfccfdd2d032411cfae64fc144aef9679409e014145d3dacc4" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -282,14 +277,14 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.17", ] [[package]] name = "alloy-network-primitives" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2aff127863f8279921397be8af0ac3f05a8757d5c4c972b491c278518fa07c7" +checksum = "9081c099e798b8a2bba2145eb82a9a146f01fc7a35e9ab6e7b43305051f97550" dependencies = [ "alloy-consensus", "alloy-eips", @@ -300,25 +295,24 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6259a506ab13e1d658796c31e6e39d2e2ee89243bcc505ddc613b35732e0a430" +checksum = "8c77490fe91a0ce933a1f219029521f20fc28c2c0ca95d53fa4da9c00b8d9d4e" dependencies = [ "alloy-rlp", "bytes", "cfg-if", "const-hex", - "derive_more", + "derive_more 2.0.1", "foldhash", - "hashbrown 0.15.2", - "hex-literal", + "hashbrown 0.15.5", "indexmap", "itoa", "k256", "keccak-asm", "paste", "proptest", - "rand", + "rand 0.8.5", "ruint", "rustc-hash", "serde", @@ -328,9 +322,9 @@ dependencies = [ [[package]] name = "alloy-provider" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0280a4f68e0cefde9449ee989a248230efbe3f95255299d2a7a92009e154629d" +checksum = "dc2dfaddd9a30aa870a78a4e1316e3e115ec1e12e552cbc881310456b85c1f24" dependencies = [ "alloy-chains", "alloy-consensus", @@ -358,7 +352,7 @@ dependencies = [ "schnellru", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.17", "tokio", "tracing", "url", @@ -367,9 +361,9 @@ dependencies = [ [[package]] name = "alloy-pubsub" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475dc1a835bd8bb77275b6bccf8e177e7e669ba81277ce6bea0016ce994fafe" +checksum = "695809e743628d54510c294ad17a4645bd9f465aeb0d20ee9ce9877c9712dc9c" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -380,15 +374,15 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tracing", ] [[package]] name = "alloy-rlp" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f542548a609dca89fcd72b3b9f355928cf844d4363c5eed9c5273a3dd225e097" +checksum = "5f70d83b765fdc080dbcd4f4db70d8d23fe4761f2f02ebfa9146b833900634b4" dependencies = [ "alloy-rlp-derive", "arrayvec", @@ -397,20 +391,20 @@ dependencies = [ [[package]] name = "alloy-rlp-derive" -version = "0.3.10" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a833d97bf8a5f0f878daf2c8451fff7de7f9de38baa5a45d936ec718d81255a" +checksum = "64b728d511962dda67c1bc7ea7c03736ec275ed2cf4c35d9585298ac9ccf3b73" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "alloy-rpc-client" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6fc8b0f68619cfab3a2e15dca7b80ab266f78430bb4353dec546528e04b7449" +checksum = "531137b283547d5b9a5cafc96b006c64ef76810c681d606f28be9781955293b6" dependencies = [ "alloy-json-rpc", "alloy-primitives", @@ -425,7 +419,7 @@ dependencies = [ "serde_json", "tokio", "tokio-stream", - "tower 0.5.2", + "tower", "tracing", "url", "wasmtimer", @@ -433,9 +427,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "986f23fe42ac95832901a24b93c20f7ed2b9644394c02b86222801230da60041" +checksum = "3410a472ce26c457e9780f708ee6bd540b30f88f1f31fdab7a11d00bd6aa1aee" dependencies = [ "alloy-primitives", "alloy-rpc-types-eth", @@ -445,9 +439,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-any" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57e3aa433d3657b42e98e257ee6fa201f5c853245648a33da8fbb7497a5008bf" +checksum = "ed98e1af55a7d856bfa385f30f63d8d56be2513593655c904a8f4a7ec963aa3e" dependencies = [ "alloy-consensus-any", "alloy-rpc-types-eth", @@ -456,9 +450,9 @@ dependencies = [ [[package]] name = "alloy-rpc-types-eth" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0643cc497a71941f526454fe4fecb47e9307d3a7b6c05f70718a0341643bcc79" +checksum = "8737d7a6e37ca7bba9c23e9495c6534caec6760eb24abc9d5ffbaaba147818e1" dependencies = [ "alloy-consensus", "alloy-consensus-any", @@ -468,7 +462,7 @@ dependencies = [ "alloy-rlp", "alloy-serde", "alloy-sol-types", - "derive_more", + "derive_more 1.0.0", "itertools 0.13.0", "serde", "serde_json", @@ -476,9 +470,9 @@ dependencies = [ [[package]] name = "alloy-serde" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61b049d7ecc66a29f107970dae493d0908e366048f7484a1ca9b02c85f9b2b" +checksum = "5851bf8d5ad33014bd0c45153c603303e730acc8a209450a7ae6b4a12c2789e2" dependencies = [ "alloy-primitives", "serde", @@ -487,23 +481,23 @@ dependencies = [ [[package]] name = "alloy-signer" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93461b0e79c2ddd791fec5f369ab5c2686a33bbb03530144972edf5248f8a2c7" +checksum = "7e10ca565da6500cca015ba35ee424d59798f2e1b85bc0dd8f81dafd401f029a" dependencies = [ "alloy-primitives", "async-trait", "auto_impl", "elliptic-curve", "k256", - "thiserror 2.0.7", + "thiserror 2.0.17", ] [[package]] name = "alloy-signer-ledger" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1ddc0349b2445b9d7821b4d361759b29b72a1ee48fb2601fa47532fbe1ee51" +checksum = "08367716d2eee6f15f0f7ee2e855decbfedd12be12fe5f490a2d2717deda95bf" dependencies = [ "alloy-consensus", "alloy-network", @@ -512,16 +506,16 @@ dependencies = [ "async-trait", "coins-ledger", "futures-util", - "semver 1.0.23", - "thiserror 2.0.7", + "semver 1.0.27", + "thiserror 2.0.17", "tracing", ] [[package]] name = "alloy-signer-local" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f08ec1bfa433f9e9f7c5af05af07e5cf86d27d93170de76b760e63b925f1c9c" +checksum = "47fababf5a745133490cde927d48e50267f97d3d1209b9fc9f1d1d666964d172" dependencies = [ "alloy-consensus", "alloy-network", @@ -530,46 +524,46 @@ dependencies = [ "async-trait", "eth-keystore", "k256", - "rand", - "thiserror 2.0.7", + "rand 0.8.5", + "thiserror 2.0.17", ] [[package]] name = "alloy-signer-trezor" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9c93d03376fd16c960d022954d2ccefbdb82357324b323bc1690823fda7906d" +checksum = "cfbd920ad5dc03e1904827d30fd2ed874968c33885e254b2c2f59503b33e4bb8" dependencies = [ "alloy-consensus", "alloy-network", "alloy-primitives", "alloy-signer", "async-trait", - "semver 1.0.23", - "thiserror 2.0.7", + "semver 1.0.27", + "thiserror 2.0.17", "tracing", "trezor-client", ] [[package]] name = "alloy-sol-macro" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d64f851d95619233f74b310f12bcf16e0cbc27ee3762b6115c14a84809280a" +checksum = "e10ae8e9a91d328ae954c22542415303919aabe976fe7a92eb06db1b68fd59f2" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "alloy-sol-macro-expander" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf7ed1574b699f48bf17caab4e6e54c6d12bc3c006ab33d58b1e227c1c3559f" +checksum = "83ad5da86c127751bc607c174d6c9fe9b85ef0889a9ca0c641735d77d4f98f26" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -579,43 +573,44 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", "syn-solidity", "tiny-keccak", ] [[package]] name = "alloy-sol-macro-input" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c02997ccef5f34f9c099277d4145f183b422938ed5322dc57a089fe9b9ad9ee" +checksum = "ba3d30f0d3f9ba3b7686f3ff1de9ee312647aac705604417a2f40c604f409a9e" dependencies = [ "alloy-json-abi", "const-hex", "dunce", "heck", + "macro-string", "proc-macro2", "quote", "serde_json", - "syn 2.0.90", + "syn 2.0.106", "syn-solidity", ] [[package]] name = "alloy-sol-type-parser" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce13ff37285b0870d0a0746992a4ae48efaf34b766ae4c2640fa15e5305f8e73" +checksum = "6d162f8524adfdfb0e4bd0505c734c985f3e2474eb022af32eef0d52a4f3935c" dependencies = [ "serde", - "winnow 0.6.18", + "winnow", ] [[package]] name = "alloy-sol-types" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1174cafd6c6d810711b4e00383037bdb458efc4fe3dbafafa16567e0320c54d8" +checksum = "d43d5e60466a440230c07761aa67671d4719d46f43be8ea6e7ed334d8db4a9ab" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -626,9 +621,9 @@ dependencies = [ [[package]] name = "alloy-transport" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf656f983e14812df65b5aee37e7b37535f68a848295e6ed736b2054a405cb7" +checksum = "538a04a37221469cac0ce231b737fd174de2fdfcdd843bdd068cb39ed3e066ad" dependencies = [ "alloy-json-rpc", "base64 0.22.1", @@ -636,9 +631,9 @@ dependencies = [ "futures-utils-wasm", "serde", "serde_json", - "thiserror 2.0.7", + "thiserror 2.0.17", "tokio", - "tower 0.5.2", + "tower", "tracing", "url", "wasmtimer", @@ -646,24 +641,24 @@ dependencies = [ [[package]] name = "alloy-transport-http" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec938d51a47b7953b1c0fd8ddeb89a29eb113cd4908dfc4e01c7893b252d669f" +checksum = "2ed40eb1e1265b2911512f6aa1dcece9702d078f5a646730c45e39e2be00ac1c" dependencies = [ "alloy-json-rpc", "alloy-transport", "reqwest", "serde_json", - "tower 0.5.2", + "tower", "tracing", "url", ] [[package]] name = "alloy-transport-ws" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fabdf2d18c0c87b6cfcf6a067f1d5a7db378f103faeb16130d6d174c73d006b" +checksum = "fba0e39d181d13c266dbb8ca54ed584a2c66d6e9279afca89c7a6b1825e98abb" dependencies = [ "alloy-pubsub", "alloy-transport", @@ -679,26 +674,20 @@ dependencies = [ [[package]] name = "alloy-trie" -version = "0.7.6" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a5fd8fea044cc9a8c8a50bb6f28e31f0385d820f116c5b98f6f4e55d6e5590b" +checksum = "d95a94854e420f07e962f7807485856cde359ab99ab6413883e15235ad996e8b" dependencies = [ "alloy-primitives", "alloy-rlp", "arrayvec", - "derive_more", + "derive_more 1.0.0", "nybbles", "serde", "smallvec", "tracing", ] -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - [[package]] name = "android_system_properties" version = "0.1.5" @@ -710,9 +699,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a" dependencies = [ "anstyle", "anstyle-parse", @@ -725,43 +714,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" [[package]] name = "ark-ff" @@ -797,7 +787,27 @@ dependencies = [ "num-bigint", "num-traits", "paste", - "rustc_version 0.4.0", + "rustc_version 0.4.1", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a177aba0ed1e0fbb62aa9f6d0502e9b46dad8c2eab04c14258a1212d2557ea70" +dependencies = [ + "ark-ff-asm 0.5.0", + "ark-ff-macros 0.5.0", + "ark-serialize 0.5.0", + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "educe", + "itertools 0.13.0", + "num-bigint", + "num-traits", + "paste", "zeroize", ] @@ -821,6 +831,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-asm" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62945a2f7e6de02a31fe400aa489f0e0f5b2502e69f95f853adb82a96c7a6b60" +dependencies = [ + "quote", + "syn 2.0.106", +] + [[package]] name = "ark-ff-macros" version = "0.3.0" @@ -846,6 +866,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "ark-ff-macros" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09be120733ee33f7693ceaa202ca41accd5653b779563608f1234f78ae07c4b3" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "ark-serialize" version = "0.3.0" @@ -867,6 +900,18 @@ dependencies = [ "num-bigint", ] +[[package]] +name = "ark-serialize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f4d068aaf107ebcd7dfb52bc748f8030e0fc930ac8e360146ca54c1203088f7" +dependencies = [ + "ark-std 0.5.0", + "arrayvec", + "digest 0.10.7", + "num-bigint", +] + [[package]] name = "ark-std" version = "0.3.0" @@ -874,7 +919,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -884,7 +929,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "246a225cc6131e9ee4f24619af0f19d67761fff15d7ccc22e42b80846e69449a" +dependencies = [ + "num-traits", + "rand 0.8.5", ] [[package]] @@ -898,9 +953,9 @@ dependencies = [ [[package]] name = "async-stream" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" dependencies = [ "async-stream-impl", "futures-core", @@ -909,24 +964,24 @@ dependencies = [ [[package]] name = "async-stream-impl" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "async-trait" -version = "0.1.81" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] @@ -937,7 +992,7 @@ checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" dependencies = [ "futures", "pharos", - "rustc_version 0.4.0", + "rustc_version 0.4.1", ] [[package]] @@ -948,34 +1003,34 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "autocfg" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide 0.7.4", + "miniz_oxide", "object", "rustc-demangle", + "windows-link 0.2.1", ] [[package]] @@ -998,9 +1053,9 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bimap" @@ -1019,18 +1074,18 @@ dependencies = [ [[package]] name = "bit-set" -version = "0.5.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ "bit-vec", ] [[package]] name = "bit-vec" -version = "0.6.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" @@ -1040,9 +1095,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394" [[package]] name = "bitvec" @@ -1067,9 +1122,9 @@ dependencies = [ [[package]] name = "blst" -version = "0.3.13" +version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4378725facc195f1a538864863f6de233b500a8862747e7f165078a419d5e874" +checksum = "dcdb4c7013139a150f9fc55d123186dbfaba0d912817466282c73ac49e71fb45" dependencies = [ "cc", "glob", @@ -1079,15 +1134,15 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byte-slice-cast" -version = "1.2.2" +version = "1.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" +checksum = "7575182f7272186991736b70173b0ea045398f984bf5ebbb3804736ce1330c9d" [[package]] name = "byteorder" @@ -1097,9 +1152,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.7.1" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" dependencies = [ "serde", ] @@ -1116,43 +1171,43 @@ dependencies = [ [[package]] name = "bzip2-sys" -version = "0.1.11+1.0.8" +version = "0.1.13+1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" dependencies = [ "cc", - "libc", "pkg-config", ] [[package]] name = "c-kzg" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf100c4cea8f207e883ff91ca886d621d8a166cb04971dfaa9bb8fd99ed95df" +checksum = "f0307f72feab3300336fb803a57134159f6e20139af1357f36c54cb90d8e8928" dependencies = [ "blst", "cc", "glob", "hex", "libc", + "once_cell", "serde", ] [[package]] name = "camino" -version = "1.1.9" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +checksum = "276a59bf2b2c967788139340c9f0c5b12d7fd6630315c15c217e559de85d2609" dependencies = [ - "serde", + "serde_core", ] [[package]] name = "cargo-platform" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" dependencies = [ "serde", ] @@ -1165,18 +1220,19 @@ checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" dependencies = [ "camino", "cargo-platform", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] name = "cc" -version = "1.1.13" +version = "1.2.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" dependencies = [ + "find-msvc-tools", "jobserver", "libc", "shlex", @@ -1184,22 +1240,21 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" dependencies = [ - "android-tzdata", "iana-time-zone", "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -1214,18 +1269,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.16" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6719fffa43d0d87e5fd8caeab59be1554fb028cd30edc88fc4369b17971019" +checksum = "e2134bb3ea021b78629caa971416385309e0131b351b25e01dc16fb54e1b5fae" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.15" +version = "4.5.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216aec2b177652e3846684cbfe25c9964d18ec45234f0f5da5157b207ed1aab6" +checksum = "c2ba64afa3c0a6df7fa517765e31314e983f51dda798ffba27b988194fb65dc9" dependencies = [ "anstream", "anstyle", @@ -1235,9 +1290,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "coins-ledger" @@ -1249,13 +1304,13 @@ dependencies = [ "byteorder", "cfg-if", "const-hex", - "getrandom", + "getrandom 0.2.16", "hidapi-rusb", "js-sys", "log", "nix 0.26.4", "once_cell", - "thiserror 1.0.63", + "thiserror 1.0.69", "tokio", "tracing", "wasm-bindgen", @@ -1264,9 +1319,9 @@ dependencies = [ [[package]] name = "color-eyre" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" +checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d" dependencies = [ "backtrace", "color-spantrace", @@ -1279,9 +1334,9 @@ dependencies = [ [[package]] name = "color-spantrace" -version = "0.2.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427" dependencies = [ "once_cell", "owo-colors", @@ -1291,21 +1346,20 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "const-hex" -version = "1.14.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0485bab839b018a8f1723fc5391819fea5f8f0f32288ef8a735fd096b6160c" +checksum = "b6407bff74dea37e0fa3dc1c1c974e5d46405f0c987bf9997a0762adce71eda6" dependencies = [ "cfg-if", "cpufeatures", - "hex", "proptest", - "serde", + "serde_core", ] [[package]] @@ -1314,6 +1368,26 @@ version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" +[[package]] +name = "const_format" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7faa7469a93a566e9ccc1c73fe783b4a65c274c5ace346038dca9c39fe0030ad" +dependencies = [ + "const_format_proc_macros", +] + +[[package]] +name = "const_format_proc_macros" +version = "0.2.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + [[package]] name = "constant_time_eq" version = "0.1.5" @@ -1338,42 +1412,42 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.13" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" @@ -1382,7 +1456,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ "generic-array", - "rand_core", + "rand_core 0.6.4", "subtle", "zeroize", ] @@ -1422,15 +1496,15 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "zeroize", @@ -1438,9 +1512,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" dependencies = [ "powerfmt", ] @@ -1462,7 +1536,16 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" dependencies = [ - "derive_more-impl", + "derive_more-impl 1.0.0", +] + +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl 2.0.1", ] [[package]] @@ -1473,7 +1556,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", + "unicode-xid", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", "unicode-xid", ] @@ -1519,6 +1614,17 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "dunce" version = "1.0.5" @@ -1539,11 +1645,23 @@ dependencies = [ "spki", ] +[[package]] +name = "educe" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7bc049e1bd8cdeb31b68bbd586a9464ecf9f3944af3958a7a9d0f8b9799417" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "either" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "elliptic-curve" @@ -1558,7 +1676,7 @@ dependencies = [ "generic-array", "group", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sec1", "subtle", "zeroize", @@ -1566,27 +1684,47 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1601,13 +1739,13 @@ dependencies = [ "hex", "hmac", "pbkdf2", - "rand", + "rand 0.8.5", "scrypt", "serde", "serde_json", "sha2", "sha3", - "thiserror 1.0.63", + "thiserror 1.0.69", "uuid", ] @@ -1623,9 +1761,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fastrlp" @@ -1638,16 +1776,33 @@ dependencies = [ "bytes", ] +[[package]] +name = "fastrlp" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce8dba4714ef14b8274c371879b175aa55b16b30f269663f19d576f380018dc4" +dependencies = [ + "arrayvec", + "auto_impl", + "bytes", +] + [[package]] name = "ff" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +checksum = "c0b50bfb653653f9ca9095b427bed08ab8d75a137839d9ad64eb11810d5b6393" dependencies = [ - "rand_core", + "rand_core 0.6.4", "subtle", ] +[[package]] +name = "find-msvc-tools" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" + [[package]] name = "fixed-hash" version = "0.8.0" @@ -1655,19 +1810,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" dependencies = [ "byteorder", - "rand", + "rand 0.8.5", "rustc-hex", "static_assertions", ] [[package]] name = "flate2" -version = "1.0.32" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c0596c1eac1f9e04ed902702e9878208b336edc9d6fddc8a48387349bab3666" +checksum = "dc5a4e564e38c699f2880d3fda590bedc2e69f3f84cd48b457bd892ce61d0aa9" dependencies = [ "crc32fast", - "miniz_oxide 0.8.0", + "miniz_oxide", ] [[package]] @@ -1678,9 +1833,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "foreign-types" @@ -1699,9 +1854,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -1723,9 +1878,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -1738,9 +1893,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -1748,15 +1903,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -1765,38 +1920,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -1829,22 +1984,34 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.7+wasi-0.2.4", +] + [[package]] name = "gimli" -version = "0.28.1" +version = "0.32.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" [[package]] name = "git2" @@ -1852,7 +2019,7 @@ version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "232e6a7bfe35766bf715e55a88b39a700596c0ccfd88cd3680b4cdb40d66ef70" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "libc", "libgit2-sys", "log", @@ -1863,9 +2030,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "group" @@ -1874,15 +2041,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" dependencies = [ "ff", - "rand_core", + "rand_core 0.6.4", "subtle", ] [[package]] name = "h2" -version = "0.4.6" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" dependencies = [ "atomic-waker", "bytes", @@ -1908,21 +2075,25 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", -] [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ + "allocator-api2", + "equivalent", "foldhash", "serde", ] +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" + [[package]] name = "heck" version = "0.5.0" @@ -1931,24 +2102,15 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -dependencies = [ - "serde", -] - -[[package]] -name = "hex-literal" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" [[package]] name = "hidapi-rusb" @@ -1973,9 +2135,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -1994,12 +2156,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", + "futures-core", "http", "http-body", "pin-project-lite", @@ -2007,25 +2169,27 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hyper" -version = "1.4.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "h2", "http", "http-body", "httparse", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -2033,11 +2197,10 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.2" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", "http", "hyper", "hyper-util", @@ -2066,29 +2229,35 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.7" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" +checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", "http", "http-body", "hyper", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", "socket2", + "system-configuration", "tokio", - "tower 0.4.13", "tower-service", "tracing", + "windows-registry", ] [[package]] name = "hyperware_process_lib" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6be2438db0ae3a32f56bad480822df88fb01e201138d36ffd9faa8244e16f143" +checksum = "3f3abd008d22c3b96ee43300c4c8dffbf1d072a680a13635b5f9da11a0ce9395" dependencies = [ "alloy", "alloy-primitives", @@ -2097,28 +2266,31 @@ dependencies = [ "anyhow", "base64 0.22.1", "bincode", + "hex", "http", "mime_guess", - "rand", + "rand 0.8.5", "regex", "rmp-serde", "serde", "serde_json", - "thiserror 1.0.63", + "sha3", + "thiserror 1.0.69", "url", - "wit-bindgen", + "wit-bindgen 0.42.1", ] [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", "windows-core", ] @@ -2132,6 +2304,92 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +dependencies = [ + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" + +[[package]] +name = "icu_provider" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" +dependencies = [ + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "id-arena" version = "2.2.1" @@ -2140,12 +2398,23 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.5.0" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -2159,46 +2428,68 @@ dependencies = [ [[package]] name = "impl-trait-for-tuples" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +checksum = "a0eb5a3343abf848c0984fe4604b2b105da9539376e24fc0a3b0007411ae4fd9" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] name = "indenter" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" +checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5" [[package]] name = "indexmap" -version = "2.7.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "generic-array", ] +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.4", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" -version = "2.9.0" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] [[package]] name = "is_terminal_polyfill" @@ -2226,33 +2517,35 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ + "getrandom 0.3.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.70" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" +checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" dependencies = [ + "once_cell", "wasm-bindgen", ] [[package]] name = "k256" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ff9b67e26e1a6a866cb758f12c6f8746208489e3e4a4b5580802f2f0a587b" +checksum = "f6e3919bbaa2945715f0bb6d3934a173d1e9a59ac23767fbaaef277265a7411b" dependencies = [ "cfg-if", "ecdsa", @@ -2272,9 +2565,9 @@ dependencies = [ [[package]] name = "keccak-asm" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422fbc7ff2f2f5bdffeb07718e5a5324dca72b0c9293d50df4026652385e3314" +checksum = "505d1856a39b200489082f90d897c3f07c455563880bc5952e38eabf731c83b6" dependencies = [ "digest 0.10.7", "sha3-asm", @@ -2303,23 +2596,23 @@ dependencies = [ "regex", "reqwest", "rpassword", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_json", "sha2", "sha3", - "syn 2.0.90", + "syn 2.0.106", "tempfile", - "thiserror 1.0.63", + "thiserror 1.0.69", "tokio", "toml", - "toml_edit 0.22.20", + "toml_edit 0.22.27", "tracing", "tracing-appender", "tracing-error", "tracing-subscriber", "walkdir", - "wit-bindgen", + "wit-bindgen 0.42.1", "zip", ] @@ -2337,9 +2630,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.158" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libgit2-sys" @@ -2357,25 +2650,25 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "libc", ] [[package]] name = "libssh2-sys" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +checksum = "220e4f05ad4a218192533b300327f5150e809b54c4ec83b5a1d91833601811b9" dependencies = [ "cc", "libc", @@ -2399,9 +2692,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.19" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc53a7799a7496ebc9fd29f31f7df80e83c9bda5299768af5f9e59eeea74647" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" dependencies = [ "cc", "libc", @@ -2411,49 +2704,65 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" + +[[package]] +name = "litemap" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" dependencies = [ - "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.22" +version = "0.4.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" [[package]] name = "lru" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.5", +] + +[[package]] +name = "macro-string" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b27834086c65ec3f9387b096d66e99f221cf081c2b738042aa252bcd41204e3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" [[package]] name = "memoffset" @@ -2482,39 +2791,30 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - -[[package]] -name = "miniz_oxide" -version = "0.8.0" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", + "simd-adler32", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "hermit-abi", "libc", - "wasi", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" dependencies = [ "libc", "log", @@ -2546,19 +2846,18 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "cfg-if", "libc", ] [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -2598,9 +2897,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ "hermit-abi", "libc", @@ -2608,29 +2907,30 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ "num_enum_derive", + "rustversion", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "nybbles" -version = "0.2.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95f06be0417d97f81fe4e5c86d7d01b392655a9cac9c19a848aa033e18937b23" +checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ "alloy-rlp", "const-hex", @@ -2641,26 +2941,32 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.37.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "cfg-if", "foreign-types", "libc", @@ -2677,20 +2983,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -2704,49 +3010,45 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "owo-colors" -version = "3.5.0" +version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" +checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" [[package]] name = "parity-scale-codec" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "306800abfa29c7f16596b5970a588435e3d5b3149683d00c12b699cc19f895ee" +checksum = "799781ae679d79a948e13d4824a40970bfa500058d245760dd857301059810fa" dependencies = [ "arrayvec", "bitvec", "byte-slice-cast", + "const_format", "impl-trait-for-tuples", "parity-scale-codec-derive", + "rustversion", "serde", ] [[package]] name = "parity-scale-codec-derive" -version = "3.6.12" +version = "3.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d830939c76d294956402033aee57a6da7b438f2294eb94864c37b0569053a42c" +checksum = "34b4653168b563151153c9e4c08ebed57fb8262bebfa79711552fa983c623e7a" dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.106", ] [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" dependencies = [ "lock_api", "parking_lot_core", @@ -2754,15 +3056,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.6", + "windows-link 0.2.1", ] [[package]] @@ -2772,7 +3074,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", - "rand_core", + "rand_core 0.6.4", "subtle", ] @@ -2796,18 +3098,17 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pest" -version = "2.7.11" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" +checksum = "989e7521a040efde50c3ab6bbadafbe15ab6dc042686926be59ac35d74607df4" dependencies = [ "memchr", - "thiserror 1.0.63", "ucd-trie", ] @@ -2818,34 +3119,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" dependencies = [ "futures", - "rustc_version 0.4.0", + "rustc_version 0.4.1", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -2865,9 +3166,18 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "potential_utf" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" +dependencies = [ + "zerovec", +] [[package]] name = "powerfmt" @@ -2877,21 +3187,21 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ "zerocopy", ] [[package]] name = "prettyplease" -version = "0.2.25" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] @@ -2907,11 +3217,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" dependencies = [ - "toml_edit 0.21.1", + "toml_edit 0.23.7", ] [[package]] @@ -2933,33 +3243,33 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.5.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" +checksum = "2bb0be07becd10686a0bb407298fb425360a5c44a663774406340c59a22de4ce" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.6.0", + "bitflags 2.9.4", "lazy_static", "num-traits", - "rand", - "rand_chacha", + "rand 0.9.2", + "rand_chacha 0.9.0", "rand_xorshift", - "regex-syntax 0.8.5", + "regex-syntax", "rusty-fork", "tempfile", "unarray", @@ -2973,7 +3283,7 @@ checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190" dependencies = [ "once_cell", "protobuf-support", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -2982,7 +3292,7 @@ version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c" dependencies = [ - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] @@ -2993,13 +3303,19 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.36" +version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "radium" version = "0.7.0" @@ -3013,11 +3329,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "serde", ] +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -3025,7 +3351,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -3034,25 +3370,34 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", ] [[package]] name = "rand_xorshift" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" dependencies = [ - "rand_core", + "rand_core 0.9.3", ] [[package]] name = "redox_syscall" -version = "0.5.3" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", ] [[package]] @@ -3061,66 +3406,50 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.16", "libredox", - "thiserror 1.0.63", + "thiserror 1.0.69", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", -] - -[[package]] -name = "regex-automata" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - -[[package]] -name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "reqwest" -version = "0.12.7" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", "futures-core", - "futures-util", "h2", "http", "http-body", @@ -3129,28 +3458,26 @@ dependencies = [ "hyper-rustls", "hyper-tls", "hyper-util", - "ipnet", "js-sys", "log", "mime", "native-tls", - "once_cell", "percent-encoding", "pin-project-lite", - "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", "tokio-native-tls", + "tower", + "tower-http", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows-registry", ] [[package]] @@ -3165,15 +3492,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.16", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -3212,45 +3538,49 @@ dependencies = [ [[package]] name = "rpassword" -version = "7.3.1" +version = "7.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +checksum = "66d4c8b64f049c6721ec8ccec37ddfc3d641c4a7fca57e8f2a89de509c73df39" dependencies = [ "libc", "rtoolbox", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "rtoolbox" -version = "0.0.2" +version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +checksum = "a7cc970b249fbe527d6e02e0a227762c9108b2f49d81094fe357ffc6d14d7f6f" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "ruint" -version = "1.12.3" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3cc4c2511671f327125da14133d0c5c5d137f006a1017a16f557bc85b16286" +checksum = "a68df0380e5c9d20ce49534f292a36a7514ae21350726efe1865bdb1fa91d278" dependencies = [ "alloy-rlp", "ark-ff 0.3.0", "ark-ff 0.4.2", + "ark-ff 0.5.0", "bytes", - "fastrlp", + "fastrlp 0.3.1", + "fastrlp 0.4.0", "num-bigint", + "num-integer", "num-traits", "parity-scale-codec", "primitive-types", "proptest", - "rand", + "rand 0.8.5", + "rand 0.9.2", "rlp", "ruint-macro", - "serde", + "serde_core", "valuable", "zeroize", ] @@ -3273,15 +3603,15 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc-hex" @@ -3300,31 +3630,31 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.23", + "semver 1.0.27", ] [[package]] name = "rustix" -version = "0.38.34" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "rustls" -version = "0.23.12" +version = "0.23.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" +checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" dependencies = [ "once_cell", "ring", @@ -3335,26 +3665,19 @@ dependencies = [ ] [[package]] -name = "rustls-pemfile" -version = "2.1.3" +name = "rustls-pki-types" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "base64 0.22.1", - "rustls-pki-types", + "zeroize", ] -[[package]] -name = "rustls-pki-types" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" - [[package]] name = "rustls-webpki" -version = "0.102.6" +version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6b52d4fda176fd835fdc55a835d4a89b8499cad995885a21149d5ad62f852e" +checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ "ring", "rustls-pki-types", @@ -3363,15 +3686,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "rusty-fork" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +checksum = "cc6bf79ff24e648f6da1f8d1f011e9cac26491b619e6b9280f2b47f1774e6ee2" dependencies = [ "fnv", "quick-error", @@ -3381,9 +3704,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "salsa20" @@ -3405,18 +3728,18 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] name = "schnellru" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8ef13a93c54d20580de1e5c413e624e53121d42fc7e2c11d10ef7f8b02367" +checksum = "356285bbf17bea63d9e52e96bd18f039672ac92b55b8cb997d6162a2a37d1649" dependencies = [ "ahash", "cfg-if", @@ -3461,7 +3784,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "core-foundation", "core-foundation-sys", "libc", @@ -3470,9 +3793,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.1" +version = "2.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" +checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" dependencies = [ "core-foundation-sys", "libc", @@ -3489,18 +3812,19 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" dependencies = [ "serde", + "serde_core", ] [[package]] name = "semver-parser" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +checksum = "9900206b54a3527fdc7b8a938bffd94a568bac4f4aa8113b209df75a09c0dec2" dependencies = [ "pest", ] @@ -3513,41 +3837,52 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.208" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" dependencies = [ "itoa", "memchr", "ryu", "serde", + "serde_core", ] [[package]] name = "serde_spanned" -version = "0.6.7" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -3577,9 +3912,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -3598,9 +3933,9 @@ dependencies = [ [[package]] name = "sha3-asm" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d79b758b7cb2085612b11a235055e485605a5103faccdd633f35bd7aee69dd" +checksum = "c28efc5e327c837aa837c59eae585fc250715ef939ac32881bcc11677cd02d46" dependencies = [ "cc", "cfg-if", @@ -3623,9 +3958,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -3637,43 +3972,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", - "rand_core", + "rand_core 0.6.4", ] +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + [[package]] name = "slab" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] [[package]] name = "socket2" -version = "0.5.7" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - [[package]] name = "spki" version = "0.7.3" @@ -3684,6 +4016,12 @@ dependencies = [ "der", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + [[package]] name = "static_assertions" version = "1.1.0" @@ -3698,24 +4036,23 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "strum" -version = "0.26.3" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.26.4" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" dependencies = [ "heck", "proc-macro2", "quote", - "rustversion", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] @@ -3737,9 +4074,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.90" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -3748,32 +4085,43 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.15" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219389c1ebe89f8333df8bdfb871f6631c552ff399c23cac02480b6088aad8f0" +checksum = "4560533fbd6914b94a8fb5cc803ed6801c3455668db3b810702c57612bac9412" dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] [[package]] -name = "system-configuration" -version = "0.6.0" +name = "synstructure" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bc6ee10a9b4fcf576e9b0819d95ec16f4d2c02d39fd83ac1c8789785c4a42" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ - "bitflags 2.6.0", + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.9.4", "core-foundation", "system-configuration-sys", ] @@ -3796,65 +4144,64 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.12.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.63", + "thiserror-impl 1.0.69", ] [[package]] name = "thiserror" -version = "2.0.7" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93605438cbd668185516ab499d589afb7ee1859ea3d5fc8f6b0755e1c7443767" +checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" dependencies = [ - "thiserror-impl 2.0.7", + "thiserror-impl 2.0.17", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "thiserror-impl" -version = "2.0.7" +version = "2.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d8749b4531af2117677a5fcd12b1348a3fe2b81e36e61ffeac5c4aa3273e36" +checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -3868,9 +4215,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", @@ -3883,15 +4230,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" dependencies = [ "num-conv", "time-core", @@ -3907,46 +4254,43 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.8.0" +name = "tinystr" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" -version = "1.39.3" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "pin-project-lite", "signal-hook-registry", + "slab", "socket2", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] @@ -3961,20 +4305,19 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -3995,14 +4338,14 @@ dependencies = [ "tokio", "tokio-rustls", "tungstenite", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -4013,74 +4356,104 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ "serde", "serde_spanned", - "toml_datetime", - "toml_edit 0.22.20", + "toml_datetime 0.6.11", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] [[package]] -name = "toml_edit" -version = "0.21.1" +name = "toml_datetime" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", + "serde_core", ] [[package]] name = "toml_edit" -version = "0.22.20" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ "indexmap", "serde", "serde_spanned", - "toml_datetime", - "winnow 0.6.18", + "toml_datetime 0.6.11", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", ] +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tower" -version = "0.4.13" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "pin-project", "pin-project-lite", + "sync_wrapper", "tokio", "tower-layer", "tower-service", ] [[package]] -name = "tower" -version = "0.5.2" +name = "tower-http" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "futures-core", + "bitflags 2.9.4", + "bytes", "futures-util", + "http", + "http-body", + "iri-string", "pin-project-lite", - "sync_wrapper", + "tower", "tower-layer", "tower-service", ] @@ -4099,9 +4472,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -4115,27 +4488,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror 1.0.63", + "thiserror 1.0.69", "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -4143,9 +4516,9 @@ dependencies = [ [[package]] name = "tracing-error" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +checksum = "8b1581020d7a273442f5b45074a6a57d5757ad0a47dac0e9f0bd57b81936f3db" dependencies = [ "tracing", "tracing-subscriber", @@ -4164,9 +4537,9 @@ dependencies = [ [[package]] name = "tracing-serde" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" dependencies = [ "serde", "tracing-core", @@ -4174,14 +4547,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "serde", "serde_json", "sharded-slab", @@ -4203,7 +4576,7 @@ dependencies = [ "hex", "protobuf", "rusb", - "thiserror 1.0.63", + "thiserror 1.0.69", "tracing", ] @@ -4225,25 +4598,25 @@ dependencies = [ "http", "httparse", "log", - "rand", + "rand 0.8.5", "rustls", "rustls-pki-types", "sha1", - "thiserror 1.0.63", + "thiserror 1.0.69", "utf-8", ] [[package]] name = "typenum" -version = "1.17.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uint" @@ -4265,39 +4638,21 @@ checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" -dependencies = [ - "tinyvec", -] +checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d" [[package]] name = "unicode-xid" -version = "0.2.5" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "untrusted" @@ -4307,13 +4662,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.2" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -4322,6 +4678,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -4334,15 +4696,15 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", + "getrandom 0.2.16", "serde", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "vcpkg" @@ -4358,9 +4720,9 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +checksum = "09ac3b126d3914f9849036f826e054cbabdc8519970b8998ddaf3b5bd3c65f11" dependencies = [ "libc", ] @@ -4386,53 +4748,73 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasi" +version = "0.14.7+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" +dependencies = [ + "wasip2", +] + +[[package]] +name = "wasip2" +version = "1.0.1+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" +dependencies = [ + "wit-bindgen 0.46.0", +] [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", + "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "7e038d41e478cc73bae0ff9b36c60cff1c98b8f38f8d7e8061e79ee63608ac5c" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4440,22 +4822,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" +dependencies = [ + "unicode-ident", +] [[package]] name = "wasm-encoder" @@ -4485,17 +4870,17 @@ version = "0.230.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "808198a69b5a0535583370a51d459baa14261dfab04800c4864ee9e1a14346ed" dependencies = [ - "bitflags 2.6.0", - "hashbrown 0.15.2", + "bitflags 2.9.4", + "hashbrown 0.15.5", "indexmap", - "semver 1.0.23", + "semver 1.0.27", ] [[package]] name = "wasmtimer" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0048ad49a55b9deb3953841fa1fc5858f0efbcb7a18868c899a360269fac1b23" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" dependencies = [ "futures", "js-sys", @@ -4507,9 +4892,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" dependencies = [ "js-sys", "wasm-bindgen", @@ -4517,81 +4902,123 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "rustls-pki-types", + "webpki-roots 1.0.3", ] [[package]] -name = "winapi" -version = "0.3.9" +name = "webpki-roots" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", + "rustls-pki-types", ] [[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" +name = "winapi-util" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] [[package]] -name = "winapi-util" -version = "0.1.9" +name = "windows-core" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ - "windows-sys 0.59.0", + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", ] [[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" +name = "windows-implement" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] [[package]] -name = "windows-core" -version = "0.52.0" +name = "windows-interface" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ - "windows-targets 0.52.6", + "proc-macro2", + "quote", + "syn 2.0.106", ] +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + [[package]] name = "windows-registry" -version = "0.2.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ - "windows-result", - "windows-strings", - "windows-targets 0.52.6", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result", - "windows-targets 0.52.6", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", ] [[package]] @@ -4621,6 +5048,24 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -4645,13 +5090,30 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -4664,6 +5126,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -4676,6 +5144,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -4688,12 +5162,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -4706,6 +5192,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -4718,6 +5210,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -4730,6 +5228,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -4743,19 +5247,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "winnow" -version = "0.5.40" +name = "windows_x86_64_msvc" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winnow" -version = "0.6.18" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -4770,6 +5271,12 @@ dependencies = [ "wit-bindgen-rust-macro", ] +[[package]] +name = "wit-bindgen" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" + [[package]] name = "wit-bindgen-core" version = "0.42.1" @@ -4787,7 +5294,7 @@ version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "051105bab12bc78e161f8dfb3596e772dd6a01ebf9c4840988e00347e744966a" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.4", "futures", "once_cell", ] @@ -4802,7 +5309,7 @@ dependencies = [ "heck", "indexmap", "prettyplease", - "syn 2.0.90", + "syn 2.0.106", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -4818,7 +5325,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -4830,7 +5337,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b607b15ead6d0e87f5d1613b4f18c04d4e80ceeada5ffa608d8360e6909881df" dependencies = [ "anyhow", - "bitflags 2.6.0", + "bitflags 2.9.4", "indexmap", "log", "serde", @@ -4852,7 +5359,7 @@ dependencies = [ "id-arena", "indexmap", "log", - "semver 1.0.23", + "semver 1.0.27", "serde", "serde_derive", "serde_json", @@ -4860,20 +5367,26 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + [[package]] name = "ws_stream_wasm" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +checksum = "6c173014acad22e83f16403ee360115b38846fe754e735c5d9d3803fe70c6abc" dependencies = [ "async_io_stream", "futures", "js-sys", "log", "pharos", - "rustc_version 0.4.0", + "rustc_version 0.4.1", "send_wrapper", - "thiserror 1.0.63", + "thiserror 2.0.17", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -4888,32 +5401,76 @@ dependencies = [ "tap", ] +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" dependencies = [ - "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", + "synstructure", ] [[package]] name = "zeroize" -version = "1.8.1" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" dependencies = [ "zeroize_derive", ] @@ -4926,7 +5483,40 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.90", + "syn 2.0.106", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", ] [[package]] @@ -4970,9 +5560,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.16+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" dependencies = [ "cc", "pkg-config", diff --git a/src/main.rs b/src/main.rs index fa0c07ee..57ba1005 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1163,7 +1163,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .short('t') .long("template") .help("Template to create") - .value_parser(["blank", "chat", "echo", "fibonacci", "file-transfer"]) + .value_parser(["blank", "chat", "echo", "fibonacci", "file-transfer", "hyperapp-skeleton"]) .default_value("chat") ) .arg(Arg::new("UI") diff --git a/src/new/mod.rs b/src/new/mod.rs index 1b5f1e82..534e3550 100644 --- a/src/new/mod.rs +++ b/src/new/mod.rs @@ -23,6 +23,7 @@ pub enum Template { Echo, Fibonacci, FileTransfer, + HyperappSkeleton } impl Language { @@ -44,6 +45,7 @@ impl Template { Template::Echo => "echo", Template::Fibonacci => "fibonacci", Template::FileTransfer => "file-transfer", + Template::HyperappSkeleton => "hyperapp-skeleton", } .to_string() } @@ -68,7 +70,8 @@ impl From<&String> for Template { "echo" => Template::Echo, "fibonacci" => Template::Fibonacci, "file-transfer" => Template::FileTransfer, - _ => panic!("kit: template must be 'blank', 'chat', 'echo', or 'fibonacci'; not '{s}'"), + "hyperapp-skeleton" => Template::HyperappSkeleton, + _ => panic!("kit: template must be 'blank', 'chat', 'echo', 'fibonacci', or 'hyperapp-skeleton'; not '{s}'"), } } } From e8dea4da43827333847456a7ee657270a82fd7bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Juki=C4=87?= Date: Fri, 10 Oct 2025 14:31:58 +0200 Subject: [PATCH 10/52] template --- .../rust/ui/hyperapp-skeleton/Cargo.toml | 12 + .../rust/ui/hyperapp-skeleton/README.md | 251 ++ .../rust/ui/hyperapp-skeleton/api/app.wit | 27 + .../api/skeleton-app-dot-os-v0.wit | 4 + .../api/types-skeleton-app-dot-os-v0.wit | 4 + .../rust/ui/hyperapp-skeleton/metadata.json | 18 + .../ui/hyperapp-skeleton/pkg/manifest.json | 19 + .../pkg/ui/assets/index-DyyLjcO9.js | 56 + .../pkg/ui/assets/index-_rEXckFr.css | 1 + .../ui/hyperapp-skeleton/pkg/ui/index.html | 18 + .../hyperapp-skeleton/skeleton-app/Cargo.toml | 38 + .../hyperapp-skeleton/skeleton-app/src/icon | 1 + .../hyperapp-skeleton/skeleton-app/src/lib.rs | 163 + .../ui/hyperapp-skeleton/ui/index.html | 17 + .../ui/hyperapp-skeleton/ui/package-lock.json | 3674 +++++++++++++++++ .../ui/hyperapp-skeleton/ui/package.json | 31 + .../ui/hyperapp-skeleton/ui/src/App.css | 154 + .../ui/hyperapp-skeleton/ui/src/App.tsx | 149 + .../ui/hyperapp-skeleton/ui/src/index.css | 131 + .../ui/hyperapp-skeleton/ui/src/main.tsx | 12 + .../ui/src/store/skeleton.ts | 101 + .../hyperapp-skeleton/ui/src/types/global.ts | 32 + .../ui/src/types/skeleton.ts | 41 + .../ui/hyperapp-skeleton/ui/src/utils/api.ts | 90 + .../ui/hyperapp-skeleton/ui/src/vite-env.d.ts | 1 + .../ui/hyperapp-skeleton/ui/tsconfig.json | 25 + .../hyperapp-skeleton/ui/tsconfig.node.json | 11 + .../ui/hyperapp-skeleton/ui/vite.config.ts | 67 + 28 files changed, 5148 insertions(+) create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/Cargo.toml create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/README.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/api/app.wit create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/api/skeleton-app-dot-os-v0.wit create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/api/types-skeleton-app-dot-os-v0.wit create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/metadata.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/pkg/manifest.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/assets/index-DyyLjcO9.js create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/assets/index-_rEXckFr.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/index.html create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/Cargo.toml create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/src/icon create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/src/lib.rs create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/index.html create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/package-lock.json create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/package.json create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/App.css create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/App.tsx create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/index.css create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/main.tsx create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/store/skeleton.ts create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/types/global.ts create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/types/skeleton.ts create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/utils/api.ts create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/src/vite-env.d.ts create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/tsconfig.json create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/tsconfig.node.json create mode 100644 src/new/templates/ui/hyperapp-skeleton/ui/vite.config.ts diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/Cargo.toml b/src/new/templates/rust/ui/hyperapp-skeleton/Cargo.toml new file mode 100644 index 00000000..3e915247 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/Cargo.toml @@ -0,0 +1,12 @@ +[profile.release] +lto = true +opt-level = "s" +panic = "abort" + +[workspace] +members = [ + "skeleton-app", + "target/hyperapp-skeleton-caller-utils", + "target/hyperapp-skeleton-caller-util?", +] +resolver = "2" diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/README.md b/src/new/templates/rust/ui/hyperapp-skeleton/README.md new file mode 100644 index 00000000..de6f8908 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/README.md @@ -0,0 +1,251 @@ +# Hyperware Skeleton App + +A minimal, well-commented skeleton application for the Hyperware platform using the Hyperapp framework. +This skeleton provides a starting point for building Hyperware applications with a React/TypeScript frontend and Rust backend. + +Either prompt your favorite LLM directly with instructions on how to build your app or add them to `instructions.md`! + +Recommended usage: +- Clone this repo & clean up git-related stuff: + ```bash + git clone https://github.com/humanizersequel/hyperapp-skeleton.git + cd hyperapp-skeleton + rm -rf .git + ``` +- Write a detailed document describing what you want your app to do. + Save this in `instructions.md`. +- Prompt your LLM agent (i.e. Claude Code) with something like: + ``` + ## GOAL + + + + ## Instructions + + Read the README.md and follow the Instructions > Create an implementation plan + ``` + +- After creating an implementation plan, clear your LLM agent's context and then prompt it again with something like: + + ``` + ## GOAL + + + + ## Instructions + + Read the README.md and follow the Instructions > Implement the plan + ``` + +The rest of this document is aimed at *LLMs* not *humans*. + +## Quick Start + +### Prerequisites + +- Hyperware development environment (`kit` command) +- Rust toolchain +- Node.js and npm + +### Building + +Always build with +```bash +kit build --hyperapp +``` + +## Project Structure + +``` +hyperapp-skeleton/ +├── Cargo.toml # Workspace configuration +├── metadata.json # App metadata +├── skeleton-app/ # Main Rust process +│ ├── Cargo.toml # Process dependencies +│ └── src/ +│ ├── lib.rs # Main app logic (well-commented) +│ └── icon # App icon file +├── ui/ # Frontend application +│ ├── package.json # Node dependencies +│ ├── index.html # Entry point (includes /our.js) +│ ├── vite.config.ts # Build configuration +│ └── src/ +│ ├── App.tsx # Main React component +│ ├── store/ # Zustand state management +│ ├── types/ # TypeScript type definitions +│ └── utils/ # API utilities +├── api/ # Generated WIT files (after build) +└── pkg/ # The final build product, including manifest.json, scripts.json and built package output +``` + +## Key Concepts + +### 1. The Hyperprocess Macro + +The `#[hyperprocess]` macro is the core of the Hyperapp framework. It provides: +- Async/await support without tokio +- Automatic WIT generation +- State persistence +- HTTP/WebSocket endpoint configuration + +### 2. Required Patterns + +#### HTTP Endpoints +ALL HTTP endpoints MUST be tagged with `#[http]`: +```rust +#[http] +async fn my_endpoint(&self) -> String { + // Implementation +} +``` + +#### Frontend API Calls +Parameters must be sent as tuples for multi-parameter methods: +```typescript +// Single parameter +{ "MethodName": value } + +// Multiple parameters +{ "MethodName": [param1, param2] } +``` + +#### The /our.js Script +MUST be included in index.html: +```html + +``` + +### 3. State Persistence + +Your app's state is automatically persisted based on the `save_config` option: +- `OnDiff`: Save when state changes (strongly recommended) +- `Never`: No automatic saves +- `EveryMessage`: Save after each message (safest; slowest) +- `EveeyNMessage(u64)`: Save every N messages received +- `EveeyNSeconds(u64)`: Save every N seconds + +## Customization Guide + +### 1. Modify App State + +Edit `AppState` in `skeleton-app/src/lib.rs`: +```rust +#[derive(Default, Serialize, Deserialize)] +pub struct AppState { + // Add your fields here + my_data: Vec, +} +``` + +### 2. Add HTTP Endpoints + +For UI interaction: +```rust +#[http] +async fn my_method(&mut self, request_body: String) -> Result { + // Parse request, update state, return response +} +``` + +### 3. Add Capabilities + +Add system permissions in `pkg/manifest.json`: +```json +"request_capabilities": [ + "homepage:homepage:sys", + "http-server:distro:sys", + "vfs:distro:sys" // Add as needed +] +``` + +These are required to message other local processes. +They can also be granted so other local processes can message us. +There is also a `request_networking` field that must be true to send messages over the network p2p. + +### 4. Update Frontend + +1. Add types in `ui/src/types/skeleton.ts` +2. Add API calls in `ui/src/utils/api.ts` +3. Update store in `ui/src/store/skeleton.ts` +4. Modify UI in `ui/src/App.tsx` + +### 5. Rename as appropriate + +Change names throughout from `skeleton-app` (and variants) as appropriate if user describes app name. + +## Common Issues and Solutions + +### "Failed to deserialize HTTP request" +- Check parameter format (tuple vs object) + +### "Node not connected" +- Verify `/our.js` is included in index.html +- Check that the app is running in Hyperware environment + +### WIT Generation Errors +- Use simple types or return JSON strings +- No HashMap (use Vec<(K,V)>) +- No fixed arrays (use Vec) +- Add #[derive(PartialEq)] to structs + +### Import Errors +- Don't add `hyperware_process_lib` to Cargo.toml +- Use imports from `hyperprocess_macro` + +## Testing Your App + +1. Deploy app to a Hyperware node (after building, if requested): + ```bash + kit start-packages + ``` +2. Your app will be automatically installed and available at `http://localhost:8080` +3. Check the Hyperware homepage for your app icon + +## Instructions + +### Create an implementation plan + +Carefully read the prompt; look carefully at `instructions.md` (if it exists) and in the resources/ directory. +In particular, note the example applications `resources/example-apps/sign/`, `resources/example-apps/id/`, and `resources/example-apps/file-explorer`. +`sign` and `id` demonstrate local messaging. +`file-explorer` demonstrates VFS interactions. + +Expand the prompt and/or `instructions.md` into a detailed implementation plan. +The implementor will be starting from this existing template that exists at `skeleton-app/` and `ui/`. + +Note in particular that bindings for the UI will be generated when the app is built with `kit build --hyperapp`. +As such, first design and implement the backend; the interface will be generated from the backend; finally design and implement the frontend to consume the interface. +Subsequent changes to the interface must follow this pattern as well: start in backend, generate interface, finish in frontend + +Do NOT create the API. +The API is machine generated. +You create types that end up in the API by defining and using them in functions in the Rust backend "hyperapp" + +Do NOT write code: just create a detailed `IMPLEMENTATION_PLAN.md` that will be used by the implementor. +The implementor will have access to `resources/` but will be working from `IMPLEMENTATION_PLAN.md`, so include all relevant context in the PLAN. +You can refer the implementor to `resources/` but do not assume the implementor has read them unless you refer them there. + +### Implement the plan + +Look carefully at `IMPLEMENTATION_PLAN.md` and in the `resources/` directory, if relevant. +In particular, note the example applications `resources/example-apps/sign/`, `resources/example-apps/id/`, and `resources/example-apps/file-explorer`. +Use them if useful. + +Work from the existing template that exists at `skeleton-app/` and `ui/`. + +Note in particular that bindings for the UI will be generated when the app is built with `kit build --hyperapp`. +As such, first design and implement the backend; the interface will be generated from the backend; finally design and implement the frontend to consume the interface. +Subsequent changes to the interface must follow this pattern as well: start in backend, generate interface, finish in frontend + +Do NOT create the API. +The API is machine generated. +You create types that end up in the API by defining and using them in functions in the Rust backend "hyperapp" + +Do not worry about serialization/deserialization when using `send` and `send_rmp` functions for p2p communication. +Notice that this all happens within those functions: just take the rust types as args and return rust types as return values. + +If you create a GUI for the app you MUST use target/ui/caller-utils.ts for HTTP requests to the backend. +Do NOT edit this file: it is machine generated. +Do NOT do `fetch` or other HTTP requests manually to the backend: use the functions in this machine generated interface. + +Implement the application described in the `IMPLEMENTATION_PLAN.md`. diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/api/app.wit b/src/new/templates/rust/ui/hyperapp-skeleton/api/app.wit new file mode 100644 index 00000000..fefaa626 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/api/app.wit @@ -0,0 +1,27 @@ +interface app { +use standard.{address}; + + // Function signature for: get-messages (http) + // HTTP: POST /api/get-messages + record get-messages-signature-http { + target: string, + request-body: string, + returning: string + } + + // Function signature for: get-status (http) + // HTTP: POST /api/get-status + record get-status-signature-http { + target: string, + request-body: string, + returning: string + } + + // Function signature for: increment-counter (http) + // HTTP: POST /api/increment-counter + record increment-counter-signature-http { + target: string, + request-body: string, + returning: result + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/api/skeleton-app-dot-os-v0.wit b/src/new/templates/rust/ui/hyperapp-skeleton/api/skeleton-app-dot-os-v0.wit new file mode 100644 index 00000000..ada1ee65 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/api/skeleton-app-dot-os-v0.wit @@ -0,0 +1,4 @@ +world skeleton-app-dot-os-v0 { + import app; + include process-v1; +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/api/types-skeleton-app-dot-os-v0.wit b/src/new/templates/rust/ui/hyperapp-skeleton/api/types-skeleton-app-dot-os-v0.wit new file mode 100644 index 00000000..a02d74f1 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/api/types-skeleton-app-dot-os-v0.wit @@ -0,0 +1,4 @@ +world types-skeleton-app-dot-os-v0 { + import app; + include lib; +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/metadata.json b/src/new/templates/rust/ui/hyperapp-skeleton/metadata.json new file mode 100644 index 00000000..73173a9e --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/metadata.json @@ -0,0 +1,18 @@ +{ + "name": "SkeletonApp", + "description": "A minimal skeleton app for the Hyperware platform using the Hyperapp framework - demonstrates basic state management and HTTP endpoints", + "image": "", + "properties": { + "package_name": "skeleton-app", + "current_version": "0.1.0", + "publisher": "skeleton.os", + "mirrors": [], + "code_hashes": { + "0.1.0": "" + }, + "wit_version": 1, + "dependencies": [] + }, + "external_url": "", + "animation_url": "" +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/pkg/manifest.json b/src/new/templates/rust/ui/hyperapp-skeleton/pkg/manifest.json new file mode 100644 index 00000000..b400f8b7 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/pkg/manifest.json @@ -0,0 +1,19 @@ +[ + { + "process_name": "skeleton-app", + "process_wasm_path": "/skeleton-app.wasm", + "on_exit": "Restart", + "request_networking": false, + "request_capabilities": [ + "homepage:homepage:sys", + "http-server:distro:sys", + "vfs:distro:sys" + ], + "grant_capabilities": [ + "homepage:homepage:sys", + "http-server:distro:sys", + "vfs:distro:sys" + ], + "public": false + } +] diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/assets/index-DyyLjcO9.js b/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/assets/index-DyyLjcO9.js new file mode 100644 index 00000000..857f48a5 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/assets/index-DyyLjcO9.js @@ -0,0 +1,56 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))r(l);new MutationObserver(l=>{for(const u of l)if(u.type==="childList")for(const o of u.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&r(o)}).observe(document,{childList:!0,subtree:!0});function n(l){const u={};return l.integrity&&(u.integrity=l.integrity),l.referrerPolicy&&(u.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?u.credentials="include":l.crossOrigin==="anonymous"?u.credentials="omit":u.credentials="same-origin",u}function r(l){if(l.ep)return;l.ep=!0;const u=n(l);fetch(l.href,u)}})();function Ji(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var qi={exports:{}},tl={},bi={exports:{}},L={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Gn=Symbol.for("react.element"),yc=Symbol.for("react.portal"),gc=Symbol.for("react.fragment"),wc=Symbol.for("react.strict_mode"),Sc=Symbol.for("react.profiler"),kc=Symbol.for("react.provider"),Ec=Symbol.for("react.context"),xc=Symbol.for("react.forward_ref"),Cc=Symbol.for("react.suspense"),_c=Symbol.for("react.memo"),Nc=Symbol.for("react.lazy"),Uo=Symbol.iterator;function Pc(e){return e===null||typeof e!="object"?null:(e=Uo&&e[Uo]||e["@@iterator"],typeof e=="function"?e:null)}var es={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},ts=Object.assign,ns={};function un(e,t,n){this.props=e,this.context=t,this.refs=ns,this.updater=n||es}un.prototype.isReactComponent={};un.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};un.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function rs(){}rs.prototype=un.prototype;function Vu(e,t,n){this.props=e,this.context=t,this.refs=ns,this.updater=n||es}var Bu=Vu.prototype=new rs;Bu.constructor=Vu;ts(Bu,un.prototype);Bu.isPureReactComponent=!0;var $o=Array.isArray,ls=Object.prototype.hasOwnProperty,Hu={current:null},us={key:!0,ref:!0,__self:!0,__source:!0};function os(e,t,n){var r,l={},u=null,o=null;if(t!=null)for(r in t.ref!==void 0&&(o=t.ref),t.key!==void 0&&(u=""+t.key),t)ls.call(t,r)&&!us.hasOwnProperty(r)&&(l[r]=t[r]);var i=arguments.length-2;if(i===1)l.children=n;else if(1>>1,G=x[W];if(0>>1;Wl(Sl,T))vtl(tr,Sl)?(x[W]=tr,x[vt]=T,W=vt):(x[W]=Sl,x[ht]=T,W=ht);else if(vtl(tr,T))x[W]=tr,x[vt]=T,W=vt;else break e}}return z}function l(x,z){var T=x.sortIndex-z.sortIndex;return T!==0?T:x.id-z.id}if(typeof performance=="object"&&typeof performance.now=="function"){var u=performance;e.unstable_now=function(){return u.now()}}else{var o=Date,i=o.now();e.unstable_now=function(){return o.now()-i}}var s=[],c=[],m=1,h=null,p=3,g=!1,w=!1,S=!1,F=typeof setTimeout=="function"?setTimeout:null,f=typeof clearTimeout=="function"?clearTimeout:null,a=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function d(x){for(var z=n(c);z!==null;){if(z.callback===null)r(c);else if(z.startTime<=x)r(c),z.sortIndex=z.expirationTime,t(s,z);else break;z=n(c)}}function v(x){if(S=!1,d(x),!w)if(n(s)!==null)w=!0,gl(E);else{var z=n(c);z!==null&&wl(v,z.startTime-x)}}function E(x,z){w=!1,S&&(S=!1,f(N),N=-1),g=!0;var T=p;try{for(d(z),h=n(s);h!==null&&(!(h.expirationTime>z)||x&&!Ne());){var W=h.callback;if(typeof W=="function"){h.callback=null,p=h.priorityLevel;var G=W(h.expirationTime<=z);z=e.unstable_now(),typeof G=="function"?h.callback=G:h===n(s)&&r(s),d(z)}else r(s);h=n(s)}if(h!==null)var er=!0;else{var ht=n(c);ht!==null&&wl(v,ht.startTime-z),er=!1}return er}finally{h=null,p=T,g=!1}}var C=!1,_=null,N=-1,H=5,j=-1;function Ne(){return!(e.unstable_now()-jx||125W?(x.sortIndex=T,t(c,x),n(s)===null&&x===n(c)&&(S?(f(N),N=-1):S=!0,wl(v,T-W))):(x.sortIndex=G,t(s,x),w||g||(w=!0,gl(E))),x},e.unstable_shouldYield=Ne,e.unstable_wrapCallback=function(x){var z=p;return function(){var T=p;p=z;try{return x.apply(this,arguments)}finally{p=T}}}})(ds);fs.exports=ds;var Uc=fs.exports;/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var $c=Ct,ye=Uc;function y(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Gl=Object.prototype.hasOwnProperty,Ac=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,Vo={},Bo={};function Vc(e){return Gl.call(Bo,e)?!0:Gl.call(Vo,e)?!1:Ac.test(e)?Bo[e]=!0:(Vo[e]=!0,!1)}function Bc(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Hc(e,t,n,r){if(t===null||typeof t>"u"||Bc(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function se(e,t,n,r,l,u,o){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=u,this.removeEmptyString=o}var ee={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){ee[e]=new se(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];ee[t]=new se(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){ee[e]=new se(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){ee[e]=new se(e,2,!1,e,null,!1,!1)});"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){ee[e]=new se(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){ee[e]=new se(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){ee[e]=new se(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){ee[e]=new se(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){ee[e]=new se(e,5,!1,e.toLowerCase(),null,!1,!1)});var Qu=/[\-:]([a-z])/g;function Ku(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(Qu,Ku);ee[t]=new se(t,1,!1,e,null,!1,!1)});"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(Qu,Ku);ee[t]=new se(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)});["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(Qu,Ku);ee[t]=new se(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){ee[e]=new se(e,1,!1,e.toLowerCase(),null,!1,!1)});ee.xlinkHref=new se("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){ee[e]=new se(e,1,!1,e.toLowerCase(),null,!0,!0)});function Yu(e,t,n,r){var l=ee.hasOwnProperty(t)?ee[t]:null;(l!==null?l.type!==0:r||!(2i||l[o]!==u[i]){var s=` +`+l[o].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=o&&0<=i);break}}}finally{xl=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?wn(e):""}function Wc(e){switch(e.tag){case 5:return wn(e.type);case 16:return wn("Lazy");case 13:return wn("Suspense");case 19:return wn("SuspenseList");case 0:case 2:case 15:return e=Cl(e.type,!1),e;case 11:return e=Cl(e.type.render,!1),e;case 1:return e=Cl(e.type,!0),e;default:return""}}function bl(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case It:return"Fragment";case Ot:return"Portal";case Zl:return"Profiler";case Xu:return"StrictMode";case Jl:return"Suspense";case ql:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case hs:return(e.displayName||"Context")+".Consumer";case ms:return(e._context.displayName||"Context")+".Provider";case Gu:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Zu:return t=e.displayName||null,t!==null?t:bl(e.type)||"Memo";case Ze:t=e._payload,e=e._init;try{return bl(e(t))}catch{}}return null}function Qc(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return bl(t);case 8:return t===Xu?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ct(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function ys(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Kc(e){var t=ys(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,u=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(o){r=""+o,u.call(this,o)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(o){r=""+o},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function lr(e){e._valueTracker||(e._valueTracker=Kc(e))}function gs(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=ys(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function jr(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function eu(e,t){var n=t.checked;return V({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Wo(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=ct(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ws(e,t){t=t.checked,t!=null&&Yu(e,"checked",t,!1)}function tu(e,t){ws(e,t);var n=ct(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?nu(e,t.type,n):t.hasOwnProperty("defaultValue")&&nu(e,t.type,ct(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Qo(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function nu(e,t,n){(t!=="number"||jr(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Sn=Array.isArray;function Qt(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=ur.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function On(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var xn={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Yc=["Webkit","ms","Moz","O"];Object.keys(xn).forEach(function(e){Yc.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),xn[t]=xn[e]})});function xs(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||xn.hasOwnProperty(e)&&xn[e]?(""+t).trim():t+"px"}function Cs(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=xs(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Xc=V({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function uu(e,t){if(t){if(Xc[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(y(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(y(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(y(61))}if(t.style!=null&&typeof t.style!="object")throw Error(y(62))}}function ou(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var iu=null;function Ju(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var su=null,Kt=null,Yt=null;function Xo(e){if(e=qn(e)){if(typeof su!="function")throw Error(y(280));var t=e.stateNode;t&&(t=ol(t),su(e.stateNode,e.type,t))}}function _s(e){Kt?Yt?Yt.push(e):Yt=[e]:Kt=e}function Ns(){if(Kt){var e=Kt,t=Yt;if(Yt=Kt=null,Xo(e),t)for(e=0;e>>=0,e===0?32:31-(uf(e)/of|0)|0}var or=64,ir=4194304;function kn(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Mr(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,u=e.pingedLanes,o=n&268435455;if(o!==0){var i=o&~l;i!==0?r=kn(i):(u&=o,u!==0&&(r=kn(u)))}else o=n&~l,o!==0?r=kn(o):u!==0&&(r=kn(u));if(r===0)return 0;if(t!==0&&t!==r&&!(t&l)&&(l=r&-r,u=t&-t,l>=u||l===16&&(u&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function Zn(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-je(t),e[t]=n}function ff(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=_n),ri=" ",li=!1;function Ks(e,t){switch(e){case"keyup":return $f.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ys(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Mt=!1;function Vf(e,t){switch(e){case"compositionend":return Ys(t);case"keypress":return t.which!==32?null:(li=!0,ri);case"textInput":return e=t.data,e===ri&&li?null:e;default:return null}}function Bf(e,t){if(Mt)return e==="compositionend"||!uo&&Ks(e,t)?(e=Ws(),Er=no=et=null,Mt=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=si(n)}}function Js(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Js(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function qs(){for(var e=window,t=jr();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=jr(e.document)}return t}function oo(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function Jf(e){var t=qs(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Js(n.ownerDocument.documentElement,n)){if(r!==null&&oo(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,u=Math.min(r.start,l);r=r.end===void 0?u:Math.min(r.end,l),!e.extend&&u>r&&(l=r,r=u,u=l),l=ai(n,u);var o=ai(n,r);l&&o&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==o.node||e.focusOffset!==o.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),u>r?(e.addRange(t),e.extend(o.node,o.offset)):(t.setEnd(o.node,o.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Dt=null,mu=null,Pn=null,hu=!1;function ci(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;hu||Dt==null||Dt!==jr(r)||(r=Dt,"selectionStart"in r&&oo(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Pn&&$n(Pn,r)||(Pn=r,r=Ur(mu,"onSelect"),0$t||(e.current=ku[$t],ku[$t]=null,$t--)}function I(e,t){$t++,ku[$t]=e.current,e.current=t}var ft={},le=pt(ft),fe=pt(!1),_t=ft;function qt(e,t){var n=e.type.contextTypes;if(!n)return ft;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},u;for(u in n)l[u]=t[u];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function de(e){return e=e.childContextTypes,e!=null}function Ar(){D(fe),D(le)}function yi(e,t,n){if(le.current!==ft)throw Error(y(168));I(le,t),I(fe,n)}function ia(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(y(108,Qc(e)||"Unknown",l));return V({},n,r)}function Vr(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||ft,_t=le.current,I(le,e),I(fe,fe.current),!0}function gi(e,t,n){var r=e.stateNode;if(!r)throw Error(y(169));n?(e=ia(e,t,_t),r.__reactInternalMemoizedMergedChildContext=e,D(fe),D(le),I(le,e)):D(fe),I(fe,n)}var Ae=null,il=!1,Ul=!1;function sa(e){Ae===null?Ae=[e]:Ae.push(e)}function ad(e){il=!0,sa(e)}function mt(){if(!Ul&&Ae!==null){Ul=!0;var e=0,t=O;try{var n=Ae;for(O=1;e>=o,l-=o,Ve=1<<32-je(t)+l|n<N?(H=_,_=null):H=_.sibling;var j=p(f,_,d[N],v);if(j===null){_===null&&(_=H);break}e&&_&&j.alternate===null&&t(f,_),a=u(j,a,N),C===null?E=j:C.sibling=j,C=j,_=H}if(N===d.length)return n(f,_),U&&yt(f,N),E;if(_===null){for(;NN?(H=_,_=null):H=_.sibling;var Ne=p(f,_,j.value,v);if(Ne===null){_===null&&(_=H);break}e&&_&&Ne.alternate===null&&t(f,_),a=u(Ne,a,N),C===null?E=Ne:C.sibling=Ne,C=Ne,_=H}if(j.done)return n(f,_),U&&yt(f,N),E;if(_===null){for(;!j.done;N++,j=d.next())j=h(f,j.value,v),j!==null&&(a=u(j,a,N),C===null?E=j:C.sibling=j,C=j);return U&&yt(f,N),E}for(_=r(f,_);!j.done;N++,j=d.next())j=g(_,f,N,j.value,v),j!==null&&(e&&j.alternate!==null&&_.delete(j.key===null?N:j.key),a=u(j,a,N),C===null?E=j:C.sibling=j,C=j);return e&&_.forEach(function(an){return t(f,an)}),U&&yt(f,N),E}function F(f,a,d,v){if(typeof d=="object"&&d!==null&&d.type===It&&d.key===null&&(d=d.props.children),typeof d=="object"&&d!==null){switch(d.$$typeof){case rr:e:{for(var E=d.key,C=a;C!==null;){if(C.key===E){if(E=d.type,E===It){if(C.tag===7){n(f,C.sibling),a=l(C,d.props.children),a.return=f,f=a;break e}}else if(C.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Ze&&ki(E)===C.type){n(f,C.sibling),a=l(C,d.props),a.ref=vn(f,C,d),a.return=f,f=a;break e}n(f,C);break}else t(f,C);C=C.sibling}d.type===It?(a=xt(d.props.children,f.mode,v,d.key),a.return=f,f=a):(v=Lr(d.type,d.key,d.props,null,f.mode,v),v.ref=vn(f,a,d),v.return=f,f=v)}return o(f);case Ot:e:{for(C=d.key;a!==null;){if(a.key===C)if(a.tag===4&&a.stateNode.containerInfo===d.containerInfo&&a.stateNode.implementation===d.implementation){n(f,a.sibling),a=l(a,d.children||[]),a.return=f,f=a;break e}else{n(f,a);break}else t(f,a);a=a.sibling}a=Kl(d,f.mode,v),a.return=f,f=a}return o(f);case Ze:return C=d._init,F(f,a,C(d._payload),v)}if(Sn(d))return w(f,a,d,v);if(fn(d))return S(f,a,d,v);mr(f,d)}return typeof d=="string"&&d!==""||typeof d=="number"?(d=""+d,a!==null&&a.tag===6?(n(f,a.sibling),a=l(a,d),a.return=f,f=a):(n(f,a),a=Ql(d,f.mode,v),a.return=f,f=a),o(f)):n(f,a)}return F}var en=da(!0),pa=da(!1),Wr=pt(null),Qr=null,Bt=null,co=null;function fo(){co=Bt=Qr=null}function po(e){var t=Wr.current;D(Wr),e._currentValue=t}function Cu(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Gt(e,t){Qr=e,co=Bt=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(ce=!0),e.firstContext=null)}function Ce(e){var t=e._currentValue;if(co!==e)if(e={context:e,memoizedValue:t,next:null},Bt===null){if(Qr===null)throw Error(y(308));Bt=e,Qr.dependencies={lanes:0,firstContext:e}}else Bt=Bt.next=e;return t}var St=null;function mo(e){St===null?St=[e]:St.push(e)}function ma(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,mo(t)):(n.next=l.next,l.next=n),t.interleaved=n,Ke(e,r)}function Ke(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Je=!1;function ho(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function ha(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function He(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function ot(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,R&2){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,Ke(e,n)}return l=r.interleaved,l===null?(t.next=t,mo(r)):(t.next=l.next,l.next=t),r.interleaved=t,Ke(e,n)}function Cr(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,bu(e,n)}}function Ei(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,u=null;if(n=n.firstBaseUpdate,n!==null){do{var o={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};u===null?l=u=o:u=u.next=o,n=n.next}while(n!==null);u===null?l=u=t:u=u.next=t}else l=u=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:u,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Kr(e,t,n,r){var l=e.updateQueue;Je=!1;var u=l.firstBaseUpdate,o=l.lastBaseUpdate,i=l.shared.pending;if(i!==null){l.shared.pending=null;var s=i,c=s.next;s.next=null,o===null?u=c:o.next=c,o=s;var m=e.alternate;m!==null&&(m=m.updateQueue,i=m.lastBaseUpdate,i!==o&&(i===null?m.firstBaseUpdate=c:i.next=c,m.lastBaseUpdate=s))}if(u!==null){var h=l.baseState;o=0,m=c=s=null,i=u;do{var p=i.lane,g=i.eventTime;if((r&p)===p){m!==null&&(m=m.next={eventTime:g,lane:0,tag:i.tag,payload:i.payload,callback:i.callback,next:null});e:{var w=e,S=i;switch(p=t,g=n,S.tag){case 1:if(w=S.payload,typeof w=="function"){h=w.call(g,h,p);break e}h=w;break e;case 3:w.flags=w.flags&-65537|128;case 0:if(w=S.payload,p=typeof w=="function"?w.call(g,h,p):w,p==null)break e;h=V({},h,p);break e;case 2:Je=!0}}i.callback!==null&&i.lane!==0&&(e.flags|=64,p=l.effects,p===null?l.effects=[i]:p.push(i))}else g={eventTime:g,lane:p,tag:i.tag,payload:i.payload,callback:i.callback,next:null},m===null?(c=m=g,s=h):m=m.next=g,o|=p;if(i=i.next,i===null){if(i=l.shared.pending,i===null)break;p=i,i=p.next,p.next=null,l.lastBaseUpdate=p,l.shared.pending=null}}while(!0);if(m===null&&(s=h),l.baseState=s,l.firstBaseUpdate=c,l.lastBaseUpdate=m,t=l.shared.interleaved,t!==null){l=t;do o|=l.lane,l=l.next;while(l!==t)}else u===null&&(l.shared.lanes=0);zt|=o,e.lanes=o,e.memoizedState=h}}function xi(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Al.transition;Al.transition={};try{e(!1),t()}finally{O=n,Al.transition=r}}function Ra(){return _e().memoizedState}function pd(e,t,n){var r=st(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Oa(e))Ia(t,n);else if(n=ma(e,t,n,r),n!==null){var l=oe();Re(n,e,r,l),Ma(n,t,r)}}function md(e,t,n){var r=st(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Oa(e))Ia(t,l);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var o=t.lastRenderedState,i=u(o,n);if(l.hasEagerState=!0,l.eagerState=i,Oe(i,o)){var s=t.interleaved;s===null?(l.next=l,mo(t)):(l.next=s.next,s.next=l),t.interleaved=l;return}}catch{}finally{}n=ma(e,t,l,r),n!==null&&(l=oe(),Re(n,e,r,l),Ma(n,t,r))}}function Oa(e){var t=e.alternate;return e===A||t!==null&&t===A}function Ia(e,t){zn=Xr=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Ma(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,bu(e,n)}}var Gr={readContext:Ce,useCallback:te,useContext:te,useEffect:te,useImperativeHandle:te,useInsertionEffect:te,useLayoutEffect:te,useMemo:te,useReducer:te,useRef:te,useState:te,useDebugValue:te,useDeferredValue:te,useTransition:te,useMutableSource:te,useSyncExternalStore:te,useId:te,unstable_isNewReconciler:!1},hd={readContext:Ce,useCallback:function(e,t){return Me().memoizedState=[e,t===void 0?null:t],e},useContext:Ce,useEffect:_i,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Nr(4194308,4,Pa.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Nr(4194308,4,e,t)},useInsertionEffect:function(e,t){return Nr(4,2,e,t)},useMemo:function(e,t){var n=Me();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Me();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=pd.bind(null,A,e),[r.memoizedState,e]},useRef:function(e){var t=Me();return e={current:e},t.memoizedState=e},useState:Ci,useDebugValue:xo,useDeferredValue:function(e){return Me().memoizedState=e},useTransition:function(){var e=Ci(!1),t=e[0];return e=dd.bind(null,e[1]),Me().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=A,l=Me();if(U){if(n===void 0)throw Error(y(407));n=n()}else{if(n=t(),J===null)throw Error(y(349));Pt&30||wa(r,t,n)}l.memoizedState=n;var u={value:n,getSnapshot:t};return l.queue=u,_i(ka.bind(null,r,u,e),[e]),r.flags|=2048,Yn(9,Sa.bind(null,r,u,n,t),void 0,null),n},useId:function(){var e=Me(),t=J.identifierPrefix;if(U){var n=Be,r=Ve;n=(r&~(1<<32-je(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Qn++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=o.createElement(n,{is:r.is}):(e=o.createElement(n),n==="select"&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,n),e[De]=t,e[Bn]=r,Qa(e,t,!1,!1),t.stateNode=e;e:{switch(o=ou(n,r),n){case"dialog":M("cancel",e),M("close",e),l=r;break;case"iframe":case"object":case"embed":M("load",e),l=r;break;case"video":case"audio":for(l=0;lrn&&(t.flags|=128,r=!0,yn(u,!1),t.lanes=4194304)}else{if(!r)if(e=Yr(o),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),yn(u,!0),u.tail===null&&u.tailMode==="hidden"&&!o.alternate&&!U)return ne(t),null}else 2*Q()-u.renderingStartTime>rn&&n!==1073741824&&(t.flags|=128,r=!0,yn(u,!1),t.lanes=4194304);u.isBackwards?(o.sibling=t.child,t.child=o):(n=u.last,n!==null?n.sibling=o:t.child=o,u.last=o)}return u.tail!==null?(t=u.tail,u.rendering=t,u.tail=t.sibling,u.renderingStartTime=Q(),t.sibling=null,n=$.current,I($,r?n&1|2:n&1),t):(ne(t),null);case 22:case 23:return To(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?me&1073741824&&(ne(t),t.subtreeFlags&6&&(t.flags|=8192)):ne(t),null;case 24:return null;case 25:return null}throw Error(y(156,t.tag))}function xd(e,t){switch(so(t),t.tag){case 1:return de(t.type)&&Ar(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return tn(),D(fe),D(le),go(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return yo(t),null;case 13:if(D($),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(y(340));bt()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return D($),null;case 4:return tn(),null;case 10:return po(t.type._context),null;case 22:case 23:return To(),null;case 24:return null;default:return null}}var vr=!1,re=!1,Cd=typeof WeakSet=="function"?WeakSet:Set,k=null;function Ht(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){B(e,t,r)}else n.current=null}function Ou(e,t,n){try{n()}catch(r){B(e,t,r)}}var Di=!1;function _d(e,t){if(vu=Dr,e=qs(),oo(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,u=r.focusNode;r=r.focusOffset;try{n.nodeType,u.nodeType}catch{n=null;break e}var o=0,i=-1,s=-1,c=0,m=0,h=e,p=null;t:for(;;){for(var g;h!==n||l!==0&&h.nodeType!==3||(i=o+l),h!==u||r!==0&&h.nodeType!==3||(s=o+r),h.nodeType===3&&(o+=h.nodeValue.length),(g=h.firstChild)!==null;)p=h,h=g;for(;;){if(h===e)break t;if(p===n&&++c===l&&(i=o),p===u&&++m===r&&(s=o),(g=h.nextSibling)!==null)break;h=p,p=h.parentNode}h=g}n=i===-1||s===-1?null:{start:i,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(yu={focusedElem:e,selectionRange:n},Dr=!1,k=t;k!==null;)if(t=k,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,k=e;else for(;k!==null;){t=k;try{var w=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(w!==null){var S=w.memoizedProps,F=w.memoizedState,f=t.stateNode,a=f.getSnapshotBeforeUpdate(t.elementType===t.type?S:ze(t.type,S),F);f.__reactInternalSnapshotBeforeUpdate=a}break;case 3:var d=t.stateNode.containerInfo;d.nodeType===1?d.textContent="":d.nodeType===9&&d.documentElement&&d.removeChild(d.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(y(163))}}catch(v){B(t,t.return,v)}if(e=t.sibling,e!==null){e.return=t.return,k=e;break}k=t.return}return w=Di,Di=!1,w}function Tn(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var u=l.destroy;l.destroy=void 0,u!==void 0&&Ou(t,n,u)}l=l.next}while(l!==r)}}function cl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Iu(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function Xa(e){var t=e.alternate;t!==null&&(e.alternate=null,Xa(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[De],delete t[Bn],delete t[Su],delete t[id],delete t[sd])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Ga(e){return e.tag===5||e.tag===3||e.tag===4}function Fi(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||Ga(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Mu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=$r));else if(r!==4&&(e=e.child,e!==null))for(Mu(e,t,n),e=e.sibling;e!==null;)Mu(e,t,n),e=e.sibling}function Du(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Du(e,t,n),e=e.sibling;e!==null;)Du(e,t,n),e=e.sibling}var q=null,Te=!1;function Ge(e,t,n){for(n=n.child;n!==null;)Za(e,t,n),n=n.sibling}function Za(e,t,n){if(Fe&&typeof Fe.onCommitFiberUnmount=="function")try{Fe.onCommitFiberUnmount(nl,n)}catch{}switch(n.tag){case 5:re||Ht(n,t);case 6:var r=q,l=Te;q=null,Ge(e,t,n),q=r,Te=l,q!==null&&(Te?(e=q,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):q.removeChild(n.stateNode));break;case 18:q!==null&&(Te?(e=q,n=n.stateNode,e.nodeType===8?Fl(e.parentNode,n):e.nodeType===1&&Fl(e,n),Fn(e)):Fl(q,n.stateNode));break;case 4:r=q,l=Te,q=n.stateNode.containerInfo,Te=!0,Ge(e,t,n),q=r,Te=l;break;case 0:case 11:case 14:case 15:if(!re&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var u=l,o=u.destroy;u=u.tag,o!==void 0&&(u&2||u&4)&&Ou(n,t,o),l=l.next}while(l!==r)}Ge(e,t,n);break;case 1:if(!re&&(Ht(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(i){B(n,t,i)}Ge(e,t,n);break;case 21:Ge(e,t,n);break;case 22:n.mode&1?(re=(r=re)||n.memoizedState!==null,Ge(e,t,n),re=r):Ge(e,t,n);break;default:Ge(e,t,n)}}function Ui(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Cd),t.forEach(function(r){var l=Id.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Pe(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=o),r&=~u}if(r=l,r=Q()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Pd(r/1960))-r,10e?16:e,tt===null)var r=!1;else{if(e=tt,tt=null,qr=0,R&6)throw Error(y(331));var l=R;for(R|=4,k=e.current;k!==null;){var u=k,o=u.child;if(k.flags&16){var i=u.deletions;if(i!==null){for(var s=0;sQ()-Po?Et(e,0):No|=n),pe(e,t)}function lc(e,t){t===0&&(e.mode&1?(t=ir,ir<<=1,!(ir&130023424)&&(ir=4194304)):t=1);var n=oe();e=Ke(e,t),e!==null&&(Zn(e,t,n),pe(e,n))}function Od(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),lc(e,n)}function Id(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(y(314))}r!==null&&r.delete(t),lc(e,n)}var uc;uc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||fe.current)ce=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return ce=!1,kd(e,t,n);ce=!!(e.flags&131072)}else ce=!1,U&&t.flags&1048576&&aa(t,Hr,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Pr(e,t),e=t.pendingProps;var l=qt(t,le.current);Gt(t,n),l=So(null,t,r,e,l,n);var u=ko();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,de(r)?(u=!0,Vr(t)):u=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,ho(t),l.updater=al,t.stateNode=l,l._reactInternals=t,Nu(t,r,e,n),t=Tu(null,t,r,!0,u,n)):(t.tag=0,U&&u&&io(t),ue(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Pr(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=Dd(r),e=ze(r,e),l){case 0:t=zu(null,t,r,e,n);break e;case 1:t=Oi(null,t,r,e,n);break e;case 11:t=ji(null,t,r,e,n);break e;case 14:t=Ri(null,t,r,ze(r.type,e),n);break e}throw Error(y(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),zu(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),Oi(e,t,r,l,n);case 3:e:{if(Ba(t),e===null)throw Error(y(387));r=t.pendingProps,u=t.memoizedState,l=u.element,ha(e,t),Kr(t,r,null,n);var o=t.memoizedState;if(r=o.element,u.isDehydrated)if(u={element:r,isDehydrated:!1,cache:o.cache,pendingSuspenseBoundaries:o.pendingSuspenseBoundaries,transitions:o.transitions},t.updateQueue.baseState=u,t.memoizedState=u,t.flags&256){l=nn(Error(y(423)),t),t=Ii(e,t,r,n,l);break e}else if(r!==l){l=nn(Error(y(424)),t),t=Ii(e,t,r,n,l);break e}else for(he=ut(t.stateNode.containerInfo.firstChild),ve=t,U=!0,Le=null,n=pa(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(bt(),r===l){t=Ye(e,t,n);break e}ue(e,t,r,n)}t=t.child}return t;case 5:return va(t),e===null&&xu(t),r=t.type,l=t.pendingProps,u=e!==null?e.memoizedProps:null,o=l.children,gu(r,l)?o=null:u!==null&&gu(r,u)&&(t.flags|=32),Va(e,t),ue(e,t,o,n),t.child;case 6:return e===null&&xu(t),null;case 13:return Ha(e,t,n);case 4:return vo(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=en(t,null,r,n):ue(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),ji(e,t,r,l,n);case 7:return ue(e,t,t.pendingProps,n),t.child;case 8:return ue(e,t,t.pendingProps.children,n),t.child;case 12:return ue(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,u=t.memoizedProps,o=l.value,I(Wr,r._currentValue),r._currentValue=o,u!==null)if(Oe(u.value,o)){if(u.children===l.children&&!fe.current){t=Ye(e,t,n);break e}}else for(u=t.child,u!==null&&(u.return=t);u!==null;){var i=u.dependencies;if(i!==null){o=u.child;for(var s=i.firstContext;s!==null;){if(s.context===r){if(u.tag===1){s=He(-1,n&-n),s.tag=2;var c=u.updateQueue;if(c!==null){c=c.shared;var m=c.pending;m===null?s.next=s:(s.next=m.next,m.next=s),c.pending=s}}u.lanes|=n,s=u.alternate,s!==null&&(s.lanes|=n),Cu(u.return,n,t),i.lanes|=n;break}s=s.next}}else if(u.tag===10)o=u.type===t.type?null:u.child;else if(u.tag===18){if(o=u.return,o===null)throw Error(y(341));o.lanes|=n,i=o.alternate,i!==null&&(i.lanes|=n),Cu(o,n,t),o=u.sibling}else o=u.child;if(o!==null)o.return=u;else for(o=u;o!==null;){if(o===t){o=null;break}if(u=o.sibling,u!==null){u.return=o.return,o=u;break}o=o.return}u=o}ue(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Gt(t,n),l=Ce(l),r=r(l),t.flags|=1,ue(e,t,r,n),t.child;case 14:return r=t.type,l=ze(r,t.pendingProps),l=ze(r.type,l),Ri(e,t,r,l,n);case 15:return $a(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:ze(r,l),Pr(e,t),t.tag=1,de(r)?(e=!0,Vr(t)):e=!1,Gt(t,n),Da(t,r,l),Nu(t,r,l,n),Tu(null,t,r,!0,e,n);case 19:return Wa(e,t,n);case 22:return Aa(e,t,n)}throw Error(y(156,t.tag))};function oc(e,t){return Os(e,t)}function Md(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ee(e,t,n,r){return new Md(e,t,n,r)}function jo(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Dd(e){if(typeof e=="function")return jo(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Gu)return 11;if(e===Zu)return 14}return 2}function at(e,t){var n=e.alternate;return n===null?(n=Ee(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Lr(e,t,n,r,l,u){var o=2;if(r=e,typeof e=="function")jo(e)&&(o=1);else if(typeof e=="string")o=5;else e:switch(e){case It:return xt(n.children,l,u,t);case Xu:o=8,l|=8;break;case Zl:return e=Ee(12,n,t,l|2),e.elementType=Zl,e.lanes=u,e;case Jl:return e=Ee(13,n,t,l),e.elementType=Jl,e.lanes=u,e;case ql:return e=Ee(19,n,t,l),e.elementType=ql,e.lanes=u,e;case vs:return dl(n,l,u,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ms:o=10;break e;case hs:o=9;break e;case Gu:o=11;break e;case Zu:o=14;break e;case Ze:o=16,r=null;break e}throw Error(y(130,e==null?e:typeof e,""))}return t=Ee(o,n,t,l),t.elementType=e,t.type=r,t.lanes=u,t}function xt(e,t,n,r){return e=Ee(7,e,r,t),e.lanes=n,e}function dl(e,t,n,r){return e=Ee(22,e,r,t),e.elementType=vs,e.lanes=n,e.stateNode={isHidden:!1},e}function Ql(e,t,n){return e=Ee(6,e,null,t),e.lanes=n,e}function Kl(e,t,n){return t=Ee(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Fd(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Nl(0),this.expirationTimes=Nl(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Nl(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function Ro(e,t,n,r,l,u,o,i,s){return e=new Fd(e,t,n,i,s),t===1?(t=1,u===!0&&(t|=8)):t=0,u=Ee(3,null,null,t),e.current=u,u.stateNode=e,u.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},ho(u),e}function Ud(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(cc)}catch(e){console.error(e)}}cc(),cs.exports=ge;var Hd=cs.exports,Ki=Hd;Xl.createRoot=Ki.createRoot,Xl.hydrateRoot=Ki.hydrateRoot;const Wd={},Yi=e=>{let t;const n=new Set,r=(m,h)=>{const p=typeof m=="function"?m(t):m;if(!Object.is(p,t)){const g=t;t=h??(typeof p!="object"||p===null)?p:Object.assign({},t,p),n.forEach(w=>w(t,g))}},l=()=>t,s={setState:r,getState:l,getInitialState:()=>c,subscribe:m=>(n.add(m),()=>n.delete(m)),destroy:()=>{(Wd?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},c=t=e(r,l,s);return s},Qd=e=>e?Yi(e):Yi;var fc={exports:{}},dc={},pc={exports:{}},mc={};/** + * @license React + * use-sync-external-store-shim.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ln=Ct;function Kd(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var Yd=typeof Object.is=="function"?Object.is:Kd,Xd=ln.useState,Gd=ln.useEffect,Zd=ln.useLayoutEffect,Jd=ln.useDebugValue;function qd(e,t){var n=t(),r=Xd({inst:{value:n,getSnapshot:t}}),l=r[0].inst,u=r[1];return Zd(function(){l.value=n,l.getSnapshot=t,Yl(l)&&u({inst:l})},[e,n,t]),Gd(function(){return Yl(l)&&u({inst:l}),e(function(){Yl(l)&&u({inst:l})})},[e]),Jd(n),n}function Yl(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!Yd(e,n)}catch{return!0}}function bd(e,t){return t()}var ep=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?bd:qd;mc.useSyncExternalStore=ln.useSyncExternalStore!==void 0?ln.useSyncExternalStore:ep;pc.exports=mc;var tp=pc.exports;/** + * @license React + * use-sync-external-store-shim/with-selector.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var yl=Ct,np=tp;function rp(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var lp=typeof Object.is=="function"?Object.is:rp,up=np.useSyncExternalStore,op=yl.useRef,ip=yl.useEffect,sp=yl.useMemo,ap=yl.useDebugValue;dc.useSyncExternalStoreWithSelector=function(e,t,n,r,l){var u=op(null);if(u.current===null){var o={hasValue:!1,value:null};u.current=o}else o=u.current;u=sp(function(){function s(g){if(!c){if(c=!0,m=g,g=r(g),l!==void 0&&o.hasValue){var w=o.value;if(l(w,g))return h=w}return h=g}if(w=h,lp(m,g))return w;var S=r(g);return l!==void 0&&l(w,S)?(m=g,w):(m=g,h=S)}var c=!1,m,h,p=n===void 0?null:n;return[function(){return s(t())},p===null?void 0:function(){return s(p())}]},[t,n,r,l]);var i=up(e,u[0],u[1]);return ip(function(){o.hasValue=!0,o.value=i},[i]),ap(i),i};fc.exports=dc;var cp=fc.exports;const fp=Ji(cp),hc={},{useDebugValue:dp}=ss,{useSyncExternalStoreWithSelector:pp}=fp;let Xi=!1;const mp=e=>e;function hp(e,t=mp,n){(hc?"production":void 0)!=="production"&&n&&!Xi&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),Xi=!0);const r=pp(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return dp(r),r}const Gi=e=>{(hc?"production":void 0)!=="production"&&typeof e!="function"&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");const t=typeof e=="function"?Qd(e):e,n=(r,l)=>hp(t,r,l);return Object.assign(n,t),n},vp=e=>e?Gi(e):Gi,yp=()=>{var e;return((e=window.our)==null?void 0:e.node)||null};async function Do(e){const t=typeof window<"u"?(()=>{const[n]=window.location.pathname.split("/").filter(Boolean);return n?`/${n}`:""})():"";try{const n=await fetch(`${t}/api`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!n.ok){const l=await n.text();throw new Error(`API call failed: ${n.status} - ${l}`)}const r=await n.json();if(r&&typeof r=="object"){if("Ok"in r)return r.Ok;if("Err"in r)throw new Error(`API returned an error: ${r.Err}`)}return r}catch(n){throw console.error("API call error:",n),n}}async function gp(){const e=await Do({GetStatus:""});return JSON.parse(e)}async function wp(e=1){return Do({IncrementCounter:JSON.stringify(e)})}async function Sp(){const e=await Do({GetMessages:""});return JSON.parse(e)}function kp(e){return e instanceof Error}function Zi(e){return kp(e)?e.message:"An unknown error occurred"}const Ep=vp((e,t)=>({nodeId:null,isConnected:!1,counter:0,messages:[],isLoading:!1,error:null,initialize:()=>{const n=yp();e({nodeId:n,isConnected:n!==null}),n&&t().fetchStatus()},fetchStatus:async()=>{e({isLoading:!0,error:null});try{const n=await gp();e({counter:n.counter,isLoading:!1}),await t().fetchMessages()}catch(n){e({error:Zi(n),isLoading:!1})}},incrementCounter:async(n=1)=>{e({isLoading:!0,error:null});try{const r=await wp(n);e({counter:r,isLoading:!1})}catch(r){e({error:Zi(r),isLoading:!1})}},fetchMessages:async()=>{try{const n=await Sp();e({messages:n})}catch(n){console.error("Failed to fetch messages:",n)}},setError:n=>e({error:n}),clearError:()=>e({error:null})}));function xp(){const{nodeId:e,isConnected:t,counter:n,messages:r,isLoading:l,error:u,initialize:o,fetchStatus:i,incrementCounter:s,clearError:c}=Ep();return Ct.useEffect(()=>{o()},[o]),Ct.useEffect(()=>{if(!t)return;const m=setInterval(()=>{i()},3e4);return()=>clearInterval(m)},[t,i]),P.jsxs("div",{className:"app",children:[P.jsxs("header",{className:"app-header",children:[P.jsx("h1",{className:"app-title",children:"🦴 Skeleton App"}),P.jsx("div",{className:"node-info",children:t?P.jsxs(P.Fragment,{children:["Connected as ",P.jsx("span",{className:"node-id",children:e})]}):P.jsx("span",{className:"not-connected",children:"Not connected to Hyperware"})})]}),u&&P.jsxs("div",{className:"error error-message",children:[u,P.jsx("button",{onClick:c,style:{marginLeft:"1rem"},children:"Dismiss"})]}),t&&P.jsxs(P.Fragment,{children:[P.jsxs("section",{className:"section",children:[P.jsx("h2",{className:"section-title",children:"Counter Demo"}),P.jsx("p",{children:"This demonstrates basic state management and HTTP endpoints."}),P.jsxs("div",{className:"counter-section",children:[P.jsx("div",{className:"counter-display",children:n}),P.jsxs("div",{className:"button-group",children:[P.jsx("button",{onClick:()=>s(1),disabled:l,children:"+1"}),P.jsx("button",{onClick:()=>s(5),disabled:l,children:"+5"}),P.jsx("button",{onClick:()=>s(10),disabled:l,children:"+10"})]})]})]}),P.jsxs("section",{className:"section",children:[P.jsx("h2",{className:"section-title",children:"Messages"}),P.jsx("p",{children:"Messages received by this node:"}),P.jsx("div",{className:"messages-list",children:r.length>0?r.map((m,h)=>P.jsx("div",{className:"message-item",children:m},h)):P.jsx("div",{className:"no-messages",children:"No messages yet"})}),P.jsx("button",{onClick:i,disabled:l,children:l?P.jsx("span",{className:"spinner"}):"Refresh"})]}),P.jsxs("section",{className:"section",children:[P.jsx("h2",{className:"section-title",children:"How to Use This Skeleton"}),P.jsxs("div",{style:{textAlign:"left",maxWidth:"600px",margin:"0 auto"},children:[P.jsx("p",{children:"This skeleton app demonstrates:"}),P.jsxs("ul",{children:[P.jsx("li",{children:"Basic state management with a counter"}),P.jsx("li",{children:"HTTP communication between frontend and backend"}),P.jsx("li",{children:"Error handling and loading states"}),P.jsx("li",{children:"Persistent state across app restarts"})]}),P.jsx("p",{children:"To customize this app:"}),P.jsxs("ol",{children:[P.jsxs("li",{children:["Modify ",P.jsx("code",{children:"AppState"})," in ",P.jsx("code",{children:"lib.rs"})]}),P.jsxs("li",{children:["Add new HTTP endpoints with ",P.jsx("code",{children:"#[http]"})]}),P.jsx("li",{children:"Update the UI components and API calls"}),P.jsxs("li",{children:["Build with ",P.jsx("code",{children:"kit b --hyperapp"})]}),P.jsxs("li",{children:["Test with ",P.jsx("code",{children:"kit s"})]})]})]})]})]})]})}Xl.createRoot(document.getElementById("root")).render(P.jsx(ss.StrictMode,{children:P.jsx(xp,{})})); diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/assets/index-_rEXckFr.css b/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/assets/index-_rEXckFr.css new file mode 100644 index 00000000..b9e1c661 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/assets/index-_rEXckFr.css @@ -0,0 +1 @@ +.app{text-align:center}.app-header{margin-bottom:3rem}.app-title{margin-bottom:.5rem}.node-info{color:var(--text-secondary);font-size:.9em;margin-bottom:2rem}.node-id{color:var(--primary-color);font-weight:600}.not-connected{color:var(--error-color)}.section{margin:2rem 0;padding:2rem;background-color:var(--surface);border-radius:8px;border:1px solid var(--border-color)}.section-title{font-size:1.5em;margin-bottom:1rem;color:var(--text-primary)}.counter-section{display:flex;align-items:center;justify-content:center;gap:1rem;margin:1rem 0}.counter-display{font-size:2em;font-weight:700;color:var(--primary-color);min-width:3em}.button-group{display:flex;gap:.5rem}.messages-list{max-height:300px;overflow-y:auto;text-align:left;padding:1rem;background-color:var(--background);border-radius:4px;margin:1rem 0}.message-item{padding:.5rem;margin:.25rem 0;background-color:var(--surface);border-radius:4px;font-size:.9em}.no-messages{text-align:center;color:var(--text-secondary);font-style:italic}.p2p-form{display:flex;flex-direction:column;gap:1rem;max-width:500px;margin:0 auto}.form-group{display:flex;flex-direction:column;gap:.5rem;text-align:left}.form-group label{font-weight:500;color:var(--text-secondary)}.send-button{background-color:var(--primary-color);color:#fff;margin-top:1rem}.send-button:hover{background-color:var(--primary-hover)}.spinner{display:inline-block;width:20px;height:20px;border:3px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color);animation:spin 1s ease-in-out infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-message{margin-top:1rem}@media (max-width: 768px){#root,.section{padding:1rem}.counter-section{flex-direction:column}}:root{--primary-color: #646cff;--primary-hover: #535bf2;--background: #242424;--surface: #1a1a1a;--text-primary: rgba(255, 255, 255, .87);--text-secondary: rgba(255, 255, 255, .6);--border-color: rgba(255, 255, 255, .1);--error-color: #ff6b6b;--success-color: #51cf66;font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:var(--text-primary);background-color:var(--background);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}#root{max-width:1280px;width:100%;margin:0 auto;padding:2rem}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--surface);cursor:pointer;transition:border-color .25s}button:hover{border-color:var(--primary-color)}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}button:disabled{opacity:.5;cursor:not-allowed}input,textarea{padding:.6em;font-size:1em;border-radius:4px;border:1px solid var(--border-color);background-color:var(--surface);color:var(--text-primary);font-family:inherit}input:focus,textarea:focus{outline:none;border-color:var(--primary-color)}.error{color:var(--error-color);padding:1em;border-radius:4px;background-color:#ff6b6b1a;border:1px solid var(--error-color)}.success{color:var(--success-color);padding:1em;border-radius:4px;background-color:#51cf661a;border:1px solid var(--success-color)}.loading{opacity:.6;pointer-events:none}@media (prefers-color-scheme: light){:root{--background: #ffffff;--surface: #f5f5f5;--text-primary: #213547;--text-secondary: #646464;--border-color: rgba(0, 0, 0, .1);color:var(--text-primary);background-color:var(--background)}button{background-color:#f9f9f9}} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/index.html b/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/index.html new file mode 100644 index 00000000..90e7b6b0 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/pkg/ui/index.html @@ -0,0 +1,18 @@ + + + + + + + + + + + Skeleton App - Hyperware + + + + +
+ + \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/Cargo.toml b/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/Cargo.toml new file mode 100644 index 00000000..cdae75dd --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/Cargo.toml @@ -0,0 +1,38 @@ +[dependencies] +anyhow = "1.0" +process_macros = "0.1" +serde_json = "1.0" +wit-bindgen = "0.42.1" + +[dependencies.hyperapp_skeleton_caller_utils] +optional = true +path = "../target/hyperapp-skeleton-caller-utils" + +[dependencies.hyperprocess_macro] +git = "https://github.com/hyperware-ai/hyperprocess-macro" +rev = "aaf7e02" + +[dependencies.hyperware_process_lib] +features = ["hyperapp"] +git = "https://github.com/hyperware-ai/process_lib" +rev = "e8b065179ce5d15893a23142416e59c87e0f31f6" + +[dependencies.serde] +features = ["derive"] +version = "1.0" + +[features] +caller-utils = ["hyperapp_skeleton_caller_utils"] +default = ["caller-utils"] +simulation-mode = [] + +[lib] +crate-type = ["cdylib"] + +[package] +edition = "2021" +name = "skeleton-app" +version = "0.1.0" + +[package.metadata.component] +package = "hyperware:process" diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/src/icon b/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/src/icon new file mode 100644 index 00000000..fa667bae --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/src/icon @@ -0,0 +1 @@ +data:image/png;base64,/9j/4QAWRXhpZgAATU0AKgAAAAgAAAAAAAD/4QmsaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+IDxkYzpzdWJqZWN0PiA8cmRmOkJhZz4gPHJkZjpsaT5QaG90byBCb290aDwvcmRmOmxpPiA8L3JkZjpCYWc+IDwvZGM6c3ViamVjdD4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/PgD/7QBYUGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAB8cAVoAAxslRxwCAAACAAIcAhkAC1Bob3RvIEJvb3RoADhCSU0EJQAAAAAAEHF5ZEINOMhfMjjWlM7FIcr/4g/QSUNDX1BST0ZJTEUAAQEAAA/AYXBwbAIQAABtbnRyUkdCIFhZWiAH6AABABYAEQAfADBhY3NwQVBQTAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFkZXNjAAABUAAAAGJkc2NtAAABtAAABJxjcHJ0AAAGUAAAACN3dHB0AAAGdAAAABRyWFlaAAAGiAAAABRnWFlaAAAGnAAAABRiWFlaAAAGsAAAABRyVFJDAAAGxAAACAxhYXJnAAAO0AAAACB2Y2d0AAAO8AAAADBuZGluAAAPIAAAAD5tbW9kAAAPYAAAACh2Y2dwAAAPiAAAADhiVFJDAAAGxAAACAxnVFJDAAAGxAAACAxhYWJnAAAO0AAAACBhYWdnAAAO0AAAACBkZXNjAAAAAAAAAAhEaXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAmAAAADGhySFIAAAAUAAAB2GtvS1IAAAAMAAAB7G5iTk8AAAASAAAB+GlkAAAAAAASAAACCmh1SFUAAAAUAAACHGNzQ1oAAAAWAAACMGRhREsAAAAcAAACRm5sTkwAAAAWAAACYmZpRkkAAAAQAAACeGl0SVQAAAAYAAACiGVzRVMAAAAWAAACoHJvUk8AAAASAAACtmZyQ0EAAAAWAAACyGFyAAAAAAAUAAAC3nVrVUEAAAAcAAAC8mhlSUwAAAAWAAADDnpoVFcAAAAKAAADJHZpVk4AAAAOAAADLnNrU0sAAAAWAAADPHpoQ04AAAAKAAADJHJ1UlUAAAAkAAADUmVuR0IAAAAUAAADdmZyRlIAAAAWAAADim1zAAAAAAASAAADoGhpSU4AAAASAAADsnRoVEgAAAAMAAADxGNhRVMAAAAYAAAD0GVuQVUAAAAUAAADdmVzWEwAAAASAAACtmRlREUAAAAQAAAD6GVuVVMAAAASAAAD+HB0QlIAAAAYAAAECnBsUEwAAAASAAAEImVsR1IAAAAiAAAENHN2U0UAAAAQAAAEVnRyVFIAAAAUAAAEZnB0UFQAAAAWAAAEemphSlAAAAAMAAAEkABMAEMARAAgAHUAIABiAG8AagBpzuy37AAgAEwAQwBEAEYAYQByAGcAZQAtAEwAQwBEAEwAQwBEACAAVwBhAHIAbgBhAFMAegDtAG4AZQBzACAATABDAEQAQgBhAHIAZQB2AG4A/QAgAEwAQwBEAEwAQwBEAC0AZgBhAHIAdgBlAHMAawDmAHIAbQBLAGwAZQB1AHIAZQBuAC0ATABDAEQAVgDkAHIAaQAtAEwAQwBEAEwAQwBEACAAYQAgAGMAbwBsAG8AcgBpAEwAQwBEACAAYQAgAGMAbwBsAG8AcgBMAEMARAAgAGMAbwBsAG8AcgBBAEMATAAgAGMAbwB1AGwAZQB1AHIgDwBMAEMARAAgBkUGRAZIBkYGKQQaBD4EOwRMBD4EQAQ+BDIEOAQ5ACAATABDAEQgDwBMAEMARAAgBeYF0QXiBdUF4AXZX2mCcgBMAEMARABMAEMARAAgAE0A4AB1AEYAYQByAGUAYgBuAP0AIABMAEMARAQmBDIENQRCBD0EPgQ5ACAEFgQaAC0ENAQ4BEEEPwQ7BDUEOQBDAG8AbABvAHUAcgAgAEwAQwBEAEwAQwBEACAAYwBvAHUAbABlAHUAcgBXAGEAcgBuAGEAIABMAEMARAkwCQIJFwlACSgAIABMAEMARABMAEMARAAgDioONQBMAEMARAAgAGUAbgAgAGMAbwBsAG8AcgBGAGEAcgBiAC0ATABDAEQAQwBvAGwAbwByACAATABDAEQATABDAEQAIABDAG8AbABvAHIAaQBkAG8ASwBvAGwAbwByACAATABDAEQDiAOzA8cDwQPJA7wDtwAgA78DuAPMA70DtwAgAEwAQwBEAEYA5AByAGcALQBMAEMARABSAGUAbgBrAGwAaQAgAEwAQwBEAEwAQwBEACAAYQAgAGMAbwByAGUAczCrMOkw/ABMAEMARHRleHQAAAAAQ29weXJpZ2h0IEFwcGxlIEluYy4sIDIwMjQAAFhZWiAAAAAAAADzUQABAAAAARbMWFlaIAAAAAAAAIPfAAA9v////7tYWVogAAAAAAAASr8AALE3AAAKuVhZWiAAAAAAAAAoOAAAEQsAAMi5Y3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA2ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKMAqACtALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t//9wYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW3ZjZ3QAAAAAAAAAAQABAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAAAAAAEAAG5kaW4AAAAAAAAANgAArhQAAFHsAABD1wAAsKQAACZmAAAPXAAAUA0AAFQ5AAIzMwACMzMAAjMzAAAAAAAAAABtbW9kAAAAAAAABhAAAKBQ/WJtYgAAAAAAAAAAAAAAAAAAAAAAAAAAdmNncAAAAAAAAwAAAAJmZgADAAAAAmZmAAMAAAACZmYAAAACMzM0AAAAAAIzMzQAAAAAAjMzNAD/wAARCAPABaADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAQwACAgICAgIDAgIDBQMDAwUGBQUFBQYIBgYGBgYICggICAgICAoKCgoKCgoKDAwMDAwMDg4ODg4PDw8PDw8PDw8P/9sAQwECAgIEBAQHBAQHEAsJCxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ/90ABABa/9oADAMBAAIRAxEAPwD4jTtWjERiqCnAGauRHtXyLPvUy1RQKTBqR3LVrjzlHqa9J0xCJEjPHFeaW6lpk9Aa9UtF/epJ0XHFZVldGtF6nUWpEUisvXI6/WvbLJlYKw6EV47DE7osi8HqK9Ks7h1CbjyQM4rzah6lHQ7hVBjBqjcLujZT6j9Kmt3YW+5xnHNZlxNO3yheGNYNnSRRgBz2NarqdikdCKzUjYyYXrWshITDdqzkUiuoxxiqEoTecitXco6isa5uFEh+XgUolt3MDUo4iw9cfpXM3McbZQ4/GuovZYJvnUkEDuOlcreMOtdcJbHHNnnOq24892Xuelc467T81dNrD7ZSB9a5KWbLGvQgzgluOoqHzPU9advrQm485ph6UFqYTmmQ2ROahPWpHPpUJ9aBCk1GxFONRHr70hEgIHPenZqMZ71IB6UDHgcUKacoHSmkVTAmiPzVs2gPmKO1YkZwwretRjDVkXEuXX3MelY/TitOds8Vnkc0makS57dqQ46U4DBzim9KBNgODUi4zzTBT1HOamQJj9vPNTDA4pg6U4cnNQ0MdT1WmjlsVNipaAeozxWhCuBVJFJIxWmgG3mpbNYoTPNMyKl2gfjUbdemKm5aQ0jjpWXPgMBWq7HbWU/zNzWsRNCKv3c9q3rVSVrGjXkZrorNN0DHvzSqPQUUcxOd8rSepNaXh1c6k7HtGf1NZ7Dg1s+GUzcXE3oAv51pB+6RLc7ReKsKDioF64q0vSsWzUaxIrwt9S/4Rr4qlHJW3vlG5iOMueP1r3RxmvC/jBo0hNlrNoCJziLjtt+YVrTIme/YGa5fxrpf9qeGb2KJS80SmSPHXcvNR+DNcj1/w9bXisGljHlyjuGXg/nXWjawKuMqwwR6itmZxOQ8A61/bXh+3Lf623UI478dK7bpxXhGkXEng/xvNp7jZbXsmdpPG3sffFe77g43qflPQ1hU7ljenNQzNtUkVKetU7tgqVnBEyOI8SeEbPxRAzkeVeIfkf1A7H2rySFda8MCX7E/nQjIntj0XH8QFfQSXKRAsSFAzkk4Arxjxv4p0u11COfS5VuLpRtkGNyMvoTXXSkzCoktQvdasdf0iIwPtkgG3YxztLda8dnciV1YYZSQfrTLy+U3T3cWIXmJZgmQo9hVDzdxLHkk55rdo5JyuWd3vS+YRVbcaaXzwalRM2yyZcdaYSWxiq2/n1qzbAySbe3WtLCL8QKrircfX61GFqYcGs5SGTg4pw5qOpUBNQFyZBVgDFMQYHNSUBcepxUy/NUccbueBxWjFauRjpVFJESDJAFaUSHpinw2sa9a0lSNcc1LdykQxQM3bNaMVqx+8CMURyon3an+0HvispGsUTLCRxitGGAFcCsyOVic1bErY6kUtBmgluc8tVuO3XuazUmbA5zVmNiwznNJ2QrGmEjUcGnqF+tVEBq2h28VCYyyuBU681UQk81fRTSbGhyKetWUX0pFUmrCqRxUsY5BVlRjHao0XFWUXJwelZXLTNCOMog3DmnKM9atvgxKcdqhCnGc0mzRItRZNr05yfypijA+lWT8lsijgnNDQkorjoaExNCgDy0AHPepQmSvGRnt1pCMADpxV2JB8pHak2UkafnYwM8HHPetk4u1VGHCjHHSsBGAYZ5xWjDO0TjHIJrnkjpiakUsI2pHwT1PuKkPIKt0PWqKMhZsDknIFaAbIHesZI1TIMNC22QH2IHBFdV4UMUt3LZyyfuZUzg9jWNGoeFyT8w4H0q1pe23vI7iMASDhgPQ1m0XBly7tVt5Hg2hosnI7A9j7Vp2sk39mrcu/mJC4RgOwzxVmW2nvFZmUs6jII747VteDLKC9l1DSpFBNxHuXPQMp9KykdCdlc17bUFlhWznO/cMqT6dufWtWWeRND1ABd4RUGehAzXnULSW00lpKQzKx4zxn0r0XT1STRmEknlI4GVPYjnr+lZRWtzVyVjkIp2mh+0284zGBkH+RFd74V1QXl4iSuIkiAaULkNtU8kHBzXD3emzwuL6yAAH3gAOPf6GrNrdywX0M6bQQ2GwMbgeoPrmrkrkcrPQPi/cxWyWNnbbXgnzMp65I4I/EHNeg22vAQ2c0rYEsS8BSWBxzx04NeUfEFRNo2mSowzayEZPHykZXrXomm6bN5llPjEUtrv46ZwD0/GoqtqTuZezj7NKT7lt9e065VpDYiUhyrlsA/XGDU1jqrWMxhggeIN/Cr/ypPDVlFcTTukfnebnIzkAqehz3qW7ubbzTK1m0U0fDA5U47Hgf0rGLe6OecYX5LXO3svEt23DWLy4HUCvTtEv/tKeVNB5RHIBHP615Poer6TIzKsyxdiGOOnTrXqejz2g2yKyNu+6VIOR7V6OET5k7nyea0oxulGx2CEBcDtT80wBVG4cU0yAcGvsYYhxSTPl3G5aQrUlU0bPSra8ivYwmI50ZyjYWiiivQJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//Q+Ix2q3EefrVMHNWEODXyDPvDRFKPSmKcqDTxxSK6FqBSCSteuWKiS2gJ7qteR2/LgevFes6RhrKAnnGB+RrOrsa0NzsrVXjjUE8Gu1sHLsqg7S2K5E4IHPFdFYHc8aHocGvKluepA9LB/c4AxgU1PLZQSAQKfHGq56HcuOtZ7w/uioJxyTWDOosSG3Ri2NtWGKsm4HisyNHcQxkYEnQ9hgVrGEiIIBj3rO5SRTYjYaypjDjAH4mtI2sqCRSp571h3aPG53A0eY2ZF5tKlT3rmrsbMqela2pMT93PArKuMvHk8Gt4yOacTzPxA2yY46t0ri3PzEV2/iRW3pJjjpiuHm+/716VGWh51Xcbk0CSmnpTK6LmJYEmKN+eDVbcaUMe9FxXJS3pTc0zdxSbj60hXJOtIByabyeadz3oGOqUDjAFRAmng5poZPs4xUZUipF6UhFO4DUGWH1rft/lUqe1YajJ4rYj4XisramkB0rZNVzzRI2DnrTN4IpGgbs9qYTzSgnpTWoIYvQVKtQVPGeuaTQImGelOAFM3YpwyT6VBZOoxUg61B075NSowJ6VDKSLcfUVdHSqMW4n5RV0A/Ss5GsRT700kYyTUu3IGeTSbAPvCpRpYqs+eB0rLkLBq13HBxWZLwwrVMTRPD2robfMVg7njgmsa3UEjFbVy4TTWJ6ZAqZPWwKOhyz5JIFdJ4bTCTMO5AP1rmz8qk4rrPDaYs5JD1Zz+groXwmH2jo161aHSq6LzU/asEah1rk/G1mbvw/OygloMSADrx1rrgOaiuoBcWs0JOPMRl/MVUZakzWh8+eBNTPhjxH9kumIstTUEcHCuTwTX0fxnjpXzbrGj3eo+HzPaMPtGkOwbt8g6nFeseD/ABhpereGYtTnuFQ26Yn3HG0ge/rWr1MYuxzvxY0dns7fXrXHnW37sjHUMeD+FdL4I1k32ioJmCm1GyQse4FcV4s+KXhmewm0u1jkuWlHD4wgI6HmvF/+Envo2Y2zBdwwcdG9yO9VFNrUidZI+pdV8c6TpyMID58g98L+ff8ACvDPFPxS1uedo9PnEIHHyAcfia8vvNbvbpmE8nzd8cViZySc5Jq4Ujlq129jbvPEWuX4Zb2/mlRjkqWIX8hWaJ3IxniqbE0KePpXQlY5029y3vJ61aQ8Cs7ntVxXGBikg2LQamE4pByPekALHjrVAPRWd8LW/DbiJc9SetVLOAKdzDmtbGBipkwQgUfU0oXnPengZGe1PVc9KxGIF9easIMHpTo4CeTVtI0Xtk0DSIo4nf2rQitwuN3NIpAHHFPD07oq1y4pRRUqsT06VRQM59RWjGp4qOYslTJqyFIHWmKAOPWpdvPrQSSKxxyakUEninovHIzVqJMtUyRqiWJMVaVKci4FTouTxSaSASOIdTV6JewpETPFXI04wKzkyrDlXaAB1qVVLHgVIsfqKuw25B3YqGwURsEWD9KvhccdKFHarAT8qlyK5REXipQOaeq1ZROKGwsNijz24q2EA9qkii4zVlYS+B271jLyNIotMvyIO22kVPzNWWXKjHQDFNiX5lLdqm5skS3J+4ByAMfjVuBGNsoPO3monTcR7Vp2cDSxSY6AjnpUthYq20AuJGJ6IMmpooxnAFWYlMZcDjsafHGB25pc2g+UjjUb+RVxBk/SmiPPNXIoyT9ai9xNiKW3A+hrUiAZCerf0qoIsc1dtGVJAj8KxFQ0VGRMQ8aq4GRjPFTwtnEsfEg596uPaoC687e3rVOGGRriNUyAW5+lRym8ZHeaZdloI5NuJB1464rTjD6Vrllq1kp/eSKdvQNvOCM1k2k8fmosIwmRxjqB3rs9dsftelC5twN1uysCMfdrmlE7oyujnfF1lb23iCeUKUG4SH0yeeDWtaTxzQRXLyeWrHGw8gr+HFZvii7/ALTu40jG8LEp4Hf+tRwu9pFCF+ZFAznrjvVulfVGabR0jRzac3l4MtoeeeSmefxFF9ZMgiuLZAzdQV6EGn2jwSQo275wcRuehU/wmumt9NkNo72sbSIDiSA9j/eQ9a502nY29ocxeXz6lpDWNzCN4AIY9flPcV9AaKrxaVpLv/rBAishGOoxkV4pc2trbC31OOQY8wIVI+bB4O4e3evcTKbRtCDNguGjwOB8uMDn0Gaucla55+Ok7JI4qxW88NeIpop4zH85ZFH3WDHP5Y/Kug8RX95bXFrqURd7Cf7425UdiCex9u9dbrVtDqwjuB+7mTo2BnA/DpU+lE3aGw1IpJbyfIwwMBj0YGsKe/Kjz5YtNKo1qtzhpr6C1uMXNqs0TgFZBhScjPIrptN1DQIrfdGrjDZAXOM+h9Kvar4Rls4U+0FXh5jV9vK/3TXKC3kts2s6hApxnPBraalHdD56deGjPbtOmbULBI1l+4M7e5U9M1qaeiByOrD0GRXn/h3UII7mJn+UkbG2njngceldukWpWV0yWjK8Mh3BT2z179q9nCtSSbPk8ZQ5JOJ1KKBgAVZHAqjbvOUBuECv3wePrV4HIr7TL+Xl0PFnuLRRRXqIgKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/0fiBasrVVDVla+PPvDQj+6Kk6VDGSFqagZNDkPnvXqfh5w+kIrH5lkOPXFeUqeRXpOgv/oKSDu2CKzqLQ1ovU9XsY1mjyx5H611OjQxmdYW75wfTFcrph2QEnkYyv4112iHDrM33hn9a86qepTOy3IjqhPFTDBVgx49Ky78lZoiv3WXP41LAcg7+cYrkZ1F+FNqYHatEORDyMAHOazs7ATVhwRGc9OKykWiaWUmMnGcDORXNXkzyrwhI9a2MShGVTkMMfhXOyyNEzBenTnmqiwaMucQsPWsO8jj8vjitiXIbJHXkVg3kh2nA4q0ZSOF122QpuHrzXnN1bgOcGvSdcDm3DkkDPSvObpGEhOa78PI86utSm8WF61CVxVwA7KrMSOa7jmG+UaQpxipQeKQ07AQEY96Q8VLimgetSS4iAZwRSjp6U6jpQNIOOvWnjimcnp0py+hpKQyZSOlOJ4xUYyOlOocuwD061qjheazYlya0+QtSmawRXl5xioqe+elMpFMUZzSsuKkUYpf5UBYhAJqYDApQwFCsSeRSbBIl28cU7aKcmD+FKRzWbKQ2p0GBUYGTipwRioLLUJwOlXRnFUI2q6uccVDNEiXpwaUE54FNHIpw60jQgn+VST3rJYhpAe9al7jYOcGslOXz61USWaEHDZrXv8LYLG38R4P0rPt1BIHrV3WGzFbRHjbk1HUs55wcZFdn4fQppMORguWY/ieK4uU5XHrXZaHeQz2sduG+eIYx049a63scy3OjQHFSfSolYAVMDXO2aC08HGTULOF69q8q+IXxMtvCcBsbAC41KUfKv8Mf+03+FOCuyZyUVdmH4n1638Javq1s0XnJfxB9n+2cjH09a8Ke+kWOSNG2pIMlFyFyOnHSqLa1f6pPLdajKZppTks3JqsxJOeld0Y23PMqVLvQx5Xm8w+YTu9zV62lwu0VcaNJFG4c0xIQh46U3IySI2jDHNMaA9qtFT2FJgjrQpCaIFhOeacUAqWgqCM1RBEFFSAYPtQBipFU5oESp7c1o2tud25qggTjNa0a4AoGTwpzVrbk1HEuatKPaobLSFVeKsoqgciol5OOlW1XA5pFJDlGRUgHakqRVzx3qZMY3HYCrMcLSAelPiiHetONdq1JQ2OAIAB1qysfrT0XI5FWFQk4FJyKUe5EEyRirscWKlitscmrQjy3FLmKsQogPUVcjjxgVIkeBVxIwBmm2KwxYxVlExwKciA9BVtIuaybuUJFHmr6R8DjOKWNB6Vdji71Iwjj9RVsAUqrzxU6Jn6Vm2aCKhIHFWFjp6oPSrCpnBFCiA1I+atLH7U6NB+VW0QZwBSbGkCIcYHNXFUjAxQq9zVpVBwcVlJmkUCodvzdakRMDp0qwiZFTonOCOtJM0SK+xetalnkRkL90moVhBNaKKu0AdqhlNEYTCnGKeiZIJ/CpME1PEu7tmouQM8oc44q1GgGBShADgVNGuOTQ2Q2PKc5xSpGC3vUvAqZEwm5hzSiykTxzPvG88D9a0lQDCjhmwcjsKoQxgtvf7vvWpCer9jx9BSkbQHsCPkXgkYBrufDeoxy2lzaXLtIfLK4J4I9a492UcKcjHFTWOI3b1buOtZuCvc3jOxclSOOSDY+Wxt9eelatpcQI7xXK7wANuR375rPiZPMjMg/eJVsLtn88cnuKEgc7mw0MlrEkgOYGOOeeDzXRafql3pDRzbt8OQM56D0PqPSsaxC3FvJG/Py/dPp2NNtd1ur203zxt/D1H1z2rNpdTZO6Ot8SRWmp2S6lZIUZTuf0Yepr0bRE/4SHwJDcElrjT7gnOcng88nrkNXnDljpb2sPdMA5/Suq+Gt5cR29/YADapWQKec7hg4/Ks5QX3nJjISdO66M9F1OWUQW7Ku5LXhpFP3lIGD+FOns5omW7tJD5UnzMAehx1qmwlg0qZLYFsEuBnqO4/z1q74W1AXRCTLtaPJAB+8p9PpXJKOp5Mk1ByXQ9C0q8j1W2/su+G4eWMnPOR7+tcvrPhovIqQyBiOAx6Fff3rr4oFjK3FvhwCM4H6Gqd+y6deLuXda3PLcfdPevTjeULSPBp13CpemYFpok8MIjukUknkIcce1d7FY/bLCNUeSKSLABPDAiuOuYJbO4CGd/s8mCjA5GPxrtdFuS0bRSTecw5BOM4rrwEY8/LIzxtSUlzXLNlNdREw3L+cBxuwO3qRWzHKrjjiqTR28ZMoXBPUipUZTjbX02FxE6b5W7o8iok9S9RTFORT6+ihO6OcKKKK0AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//0vh2PNWkNU4zzVta+ObPvC8nSp6gTmp+lTcByY3V6D4cYm0ZfQ5xXnuTkGu78LOGSdScHAx+FHQ0ps9d09wdNgdgQSMc+orsdFLiBi3RWrirHcdNg7FQQR711ugCVrWdWOAjAjPfIrz629j1KLO1vVMojlj6N09qiZmUgL2xTV85rZGwMKucfSqwMghVs/ePX05rjkdkdjpZHV+VGARSlyY2BPpVYMDGpx1qRSdpDDr0NZFobLIyLnPaudnbcxwMmtO6wSexYYrIIKrxzimkBTkcE4btWRMqBSfSrNxLIpJArMnnPkOfTGf6VrT1Mp+RzGubJYDER715ddgBytej3zPJuL9MdPavN78/vm+td1E4K6K4A7VG0anqaVeM1ESd1dkUcg4oAOKjpxJPWm57UpSYEZ468U1qe3Soqm4D16c0Y7g5FNFAouA7kg09epqMelSAYpASL71IozTQKlXigCaMYOKvA5WqadRVnJ6VN9TaJA+QeaAvenMOaaSR04plEneg+neouc80bqEwEHWpFPPNRVKq5xmpAmLHOBUiZ71HgggDrUqxv1zmkNEoPaplxUS4zg1Lz25qZFxRbjGMZNW0I6VTiDE81dUADqM1lI2iKWA5PSo1nBbCjNPLLgioVI3E/hSKKl9IXKqBwKrwKM7qt3RypNV4htXJoF1Nax2mUZ6UutZNxHzxt4FGn8ktj6VXv3L3RDcbQBULVlPYynViwA78Vs32h3IgjvdLJiu4lHGevt9azSN0qKBnLAfma9HkMcSF3YIi9STgAD3rsb0OVM57QfEkOrbrOdfIvoeHQ8ZI7iummnitY/OunESDuxwK8S8c3tqk0esaQxiuLZsvMp2xuOw/2iT6V5b4q8b6hr9usU87s4PIBwv4D/GpVFyFOsonq3jb4rWlhDJZ6A6T3TEqHJyE9T/hXzBM0t1PJd3cjTTSsWZmOSSaY+Qx3daaWx3rrpU0kedVquT1LMJCEGre8NWerY5qYOOtXJEJmgrds06qytnmpFY9KxcSiWlwT0pVGeamCZ9qElcnUr7eafgVL5eaaVNakkWzNSKu5hTgtXII880rhYmt48EZ6VpAZqGNMVbjQ1EpDUSzGpx05qUA9BSqnGOlWI0xyajcsWNMcnrUwGT60KCTirSRjrTbsFhip61bijpVTNWo1x0qSiSNAtWlFMRDV2KFm7VDZaHxRbhV9IwvakjTaMYqYVLZY9eOPWrAXvTIxk/SrgT2xS5hpDo4gatqo4FMiTIAq8kWOcZpNjsLHEOp6VaVDkADFPjjAHIqyq9zSJFSMLV1BxUaIKtouTUtjQipk8VcRcdqciACplWpLBV5qwsZH0ojjPWrarx05oKSERCflFXoY/SmIo71ejj55rORdhoTPNW0iIxmnrGOuKsqvtUNFLyCKMMCBVkR89M4qSNflAwasRxjOelZtjI0j+bmrSoCeKdt9OlSKB3qQTAR85qVUwMgU8AYx2qdQcUrAIoxyFwakVSTxT1BxzTwuDSFYcqjPNTCMk4pEU8AiraIT06CgaFQHGztV1FAG3NQoCOnNWlAHvQ2aJir23VdRSMYyPfvUaBRyBV+MqyA4xUsq5KymYb0+97VehB2BXG0jHNJaFFPI4rQ8rPK96B3Ldqrw3EbbcKDg/Q1dUOHIAyFJAx6VUgYuMMeV9a1IfVqykWpGnp7Bl+zS4AY4AHv2q1pM8mjays6f8syQeeq1mq2Rwv5VYUO84ZwS/B9CcVm2WnfQ96dZLqziu7ZtobDkeoPUGseJJNOk3xj+Isp789RmovD15cQgW8zh4+wxzg/4V1l1FavCsxGQTjis5aniTk6cuV7M6zRLuQfZ5SQ8NwAHPocen1re1SyWWzkjYZx8ye2K5HQ7hYraWAD54vm+o9a7A3KXdmofIOAfSu+hOPLZnzOKi41Lo5fT5i4ayu18yLgLnqv41oRaVPZTJcW8gZAcnHBx9KR7VEXcnVDuFacIeNo8crLxkHoRWULpjqVeqN1CWAPYip1C/lVeNdgq4oBr6rAJztc8mehImDUlNUAU6vpqStHUwCiiiugAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//T+Go+tWkqpH1FXE4r4x7n3hfiAIzUw6VBD69KnFIBRXX+F5D55jJwMHk1yS471vaTKYJC46kYqkOL1Pb9OlaS1RcYIYivRtPVfshyuN/JrzXQsXNsgB5yM4r0yyBaJk/ujmuGstT1qWxr2wuJYE3D93twCOtMIb7OsRGTz9eK1dMZRZRxpnCZHNMuraNYmkB2kd/rXDLc7YhCx8qIMOVHerf8IWqcGZbSJwOc4z64q06sqAmpHYzbw5PpgVnlQy46gg5rSulLKwXqRWfgj5cYNIaMS6j2pwM54rn7kDy5B/DwT+FdbMvFc/MGCupHUGrgRNHF3SsVLbcgZNebakMSA9c5r1V1Hl7GGARXmOqIVnYYxg8fSuyhqzhr7GWc44qLjvVnbkVFtAOK772OIaV44pu0+lWApxxSEc1m3cCBkOKjMZzxVrNMI9KQFfaR0pxXPSpQMZpaYEIUg08DmnZpR70gAce9ToDjmo1GSPapVOOM0FRROvFTqarBvTinbveoTNUK5OcUzqadmii4xtPVcjJphqRT70RAj2jdkmrKjp3qBsZyKmjPaquBMuCeRnFTj6VGFyfarAHFQ2V5DfenAZo/pUyAdazbNUiVBxU4A7VGoqZQSc4rM0sAyflpoUk4xzU+0454pn3O9Fy7aGZcu3mFOw60LIBjHepJ2G/Jqo8iqd3YUMg6mzCiNTWTesJL2VugJ4/DirNrcDyRIjBlI6iuT1fWltC/kL505OFXsD6n2FRST5hzehPd6ta6VJDcTks28FEUZZz2AFV9e1G4MDar4vuDZ2IwUskPL9wG9T61wl3qVxpKtrt7MDcqDtbAJ3eig8D+leQapq+o63ctdajM0rMcgMcgfSvRjA82pWtobvirxZc+IrpRGv2exh4iiH829652Obd1FS2WmvduPMby4u57/QVaurTR9PUlZC8h6LuyfqccCtkckm3qzCuM+aSKqlmzyatzHd8ycYqqBmmjNsUMexq7AxIwapBTViPKnimwRqR5xUo61VRulWV55qGjQup0q4i1RjJ9K0YxlfWs7DQ8Jup32fjFSqrCrCrTTE0ZpgweKtxJgYq2I91PENAJCRoTV2Nec02OPAq5GoHNStWMcEFTouTimgVchTnNO6BJkkceKshKWNanC1Nh2EVatxx5pY4z1q7GgHJobKSFiiz16VeUBRioRkVMoJPFYtmliYAmp0SiND3q/FEBzUDFii454qyiZoAParcUdBQ+OLB5q4immAZ7dKtRKOKBNj0XHNWUQHFMVQTirscfPWkIcie1W0HrTVWp0GagB4qwiZpsaDFW0Xnilc0HomMVaVAMYqNVz+FXUjA602apD4kzjjFXY159aZEmMYq4qDtWTZokKFxj0q3GnQ4qFRz0rRiUAY71LY7WBE4zUy+gpwSpI0B/Cs2g0FC89OasIgHbpSqhwPSpgOMGkJiBBUirjrQBUwHpSENGQeanC7utNCD14qdeKlopIdGuD9KsKpPAqNAB7mpkHIpDsTKMDip0z0qIdhU6nsTiqUbhexOAT7VbiXAwTx3qCMAHJ/CrSL3zwaGrFI0ogp+bOPatOFxge9ZUR6DpmtOBgPlI+hqGMvRNtfI6mtCIZYEdDWfGpKg571pI3zBlHSoaC5pIASMdDxV6NFbHTd6mqMbMx4rQhkKHKgCsuS402dhpcr7Y504ZPbjH4V6PpF5anzYLhQRKMBvftxXmmiypho3wCTxnpW9Hef6QoUjGRuGKFCxy4ulzqx6HZxSW7mVcbwMEeorWsLyWNSjcqDwPSsaLVIgnnjJxww9a0BfQGATRgZHoM/zrVJI+arQb3R1Yt2aLf0BHen2abA0Mo4Y5GD6VmQa4Z4P9SfTOcA1JDPLK+QpWtVJXujzJQkrpnRxtn5e696upzVGFXxlhgmrqAivpcsburnDULAGKWkGe9LX1MDAKKKK1AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//U+GU681aSqinkVaSvjGfeFyM81bXpVSOra9KEBKpG4Vp2rYIPcVmoKuQHnNUgW57L4EujI7RN8u4rz9K9m05TskbpkH9K8M8CSBZZg3YA17rpnzRO3qK48Qj1MO9DY0iQfZoyD1YhgexFal2m+xnHHG3B/GqOlf8AHuyHHDEj8a1tqy2s0ZGMgfpXls9GKMDTXDWm7OU3kY9D3rSfdt3Z6VQsBGtvKhb7spP4kVobfkx1B/rSkUilLJkCs5piASOlak0YUDFYD5BIFLmCwSTg84zWXO6FySmRg/nVhwQKozcjFUmQzDu5bdoWwgDLXl+sJG10SRggV3V0+WdQT8pP6Vwerxu07MeldmHepxYhaGI20d6iCjORQ3AOO1NVgetehJnEkSgYpGUHrSk8VEHJ61BQ2QBRmoA4PSrTdDVJ+DTTIaJPxp2Oarg+/FSA8UNiJMH1oximDPapM0gHqMcmpQO9MTOOakAFBaFHFOxSAdqkrMuIwj0p45pwFShV70FEITJxjNSiCTHAqXdGgyMZpPtJ5wMH86aHYg8mbPIwPepY4uctSeazdcnNSp64pAiZcelTcYzVdeScVYPTAqZMuKAc1KlQirUWKhs1RMvT0qccjimKMmrAHGKybNEiIKWOacVAO70FSCmScL9alDbMK7JLVVHzNirV1y3FMhiO7J5rZGXUxL77foga6tZAYJDgoefmPpWNbXtlHbTXl5KDLyzk9h7Cuq1q6gsrNp71gkKjHzfyFeA6jfx3M8jQHbGTkDPOPetKcHe5jiKlkRa9enXLgMGMUCfdU/zNSxv4esbThVuJ8ckgnFY8kisMYrMYMWypruR5cpX1Ld5qz3I8mKMRoPTrWMYyWyx5q5tUHLGmlAWpEjVB6UhiPapwAOKdT5hFXyiOtTomBT6cBSY0PjAzzVxFzUKDirkYNMbJ40zV6BCtQRCr6VMikTotWQg+lRKKtIM9akaFVcDipVXNAAHSpUX1qeYrlHqtTLgUgGKeoycCpBIljXNaUcXH1qKCE9TWiFAoHYRU4zVqOMdTQg4AqxxQ2FhwqYVEKnjAJ55rMsljVjxV+KMAZqONQB0qxzjis2MnTFXoxkdKoxqavqMDFAiyigc1bRTmqqZI46VaQkCgq5cRNnIqRSQ31qspA5HFWoxuOaBFxRzxV2MADnqagXAqZWFKwFgEVOgqupz0q0g7VA0WoxirajnNVovSridsClbUpMnjUmr8QwmO9V4lwM1bjBNKRtFk0YPfmrS8VAOvtU6+lZtGsWWokydx4q8mMccVVj6VOtCQmy4MYFLEfn54FR5JHvT06jNS0Jl8Hinjr9ahDZHFSKSeKnlJ5iZQMVMgAqMAACpR7Umg5iQYNPXkjjmoxinikCkTipUHPrVdTnrUtTylpk4OSCOtXEOetUVbnirSPz9KqxVzRGMZNWI855qirZPJq9Gx6npUyHc0EOGANXkCqQB3rLj+brWjGNx5PWpIbNJPl6dK0YH4xn/69ZaBhxjIrRg4G4d6lofMa8TMBk8irqucAD+VZ0OSML+NaMaNjJH40kgjJG5bMysSOq/1rYgdy+8jisS3fYyFmwcda20kby8jBz3pOJopHbadd2rWxS45TH45/CtKwlzujRsI2SAetcjaspwSg3gdCK6O0hkeNZ8/UVXIeViaSV2dXZuVXYT9K660uIgqh8cYI9jXC2zMuC4II6ZroLOZZF+ZeQauDszwMTTudojqwDLVlWFYdtcEKFAyP89610J/CvocDiex41SFi6CDS1AlT19RQqOSucwUUUV1AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/V+F1zVpM96qKOlW1r42S1PvC5GeauKOM1RjI4q6nIqQJkxzVuBgDVdRgVLGSGzVdCb6np/g/mRmTg8A/SvfrAlYYyRhWFfOvhB2F2dh4CnivonTebKDuNorlr6o9TCm5YBo5ZCOma6AMTay7R820kfhVCyTMEjEfN1HvWhbEYOeCQfwry5I9OBz1jFvguA4IbfnP1rRgDoSr4wagtQBJdRHuFOKsjIBPUDFRc0W5HepmPYPvHoa5piQWUjnODXTyMWwe2KwrpQH+XmknqOSKqRowYNnFZEqRhmXfWuXKYX1rGYZkbI71pYwsc3fwQbjg/Meo71xGqWpOShru9QwsmD3rktUzsZxXTR0Zz1UcJJD2NQeTjp1rQmAPSqZV88V3nFyh5RqIxsO1TkOB1qEGTNRITQAZHNVJk9q0gCRzVaVecGrJZRUN3p4FO281Iq8YppEEYFS4xS4ApVqtgHpyKlx70i8DAFSZ9qzZcdhoAB5p34U05FKKgtEyrxzUmMj2pgpSaC0IEXPrS4x0FBJI46UnWgbEJNTx5x1qNVHepl64pXBIkjBPNTsCMZ78U2Mc8cYqRgeAazkzSI0AdDVpKqjrVyMH86g0iWYxmrGPWokGKnAycnrWbNEhSABk9qqyvuHHanzkjjNUpHwpzQgkzJupVicc5qlca3aWEPmgh37L6mpblo13OxAAGSTXjPiLxHbyzvBZMNqnG4d/XFddOFzlrVOUyfFPiLUdaut95KBHGcJGgwq+/ufeuQWc78CpLiYuT3rLYndxxXXGNjy6lRtm2+QM5qCo4nZl+Y1JVyMyPaScnigpzxUlFSAgGBT1ptOWmkNEq4zipAo7Ui9KlUZoKY9F5q4ietRoMVYX0FLmBImQVeQZ4qqgzV1AelTe4yxFgGraYqsnWrKcUhpko61OtRKtWFFZljx7VbgTPJqBFyeK0YlCigCzGAMVYqFBmrC56A4oGiYcAVMPWogCKmByPWhoLig1ciHvVSrUR9qhoo0UGABVlBnvVVCKuIePapsMtIQoFSb1HFVt2OafGNxzScRGjHwOuanB71VUnGPSp+cUiWWFbNaMIOAe9Z8S557VfU4GBTKRfzUiHmqce4tmra5JxUkl6PmriD0qnFzgVaXkg0rFNlxcYrQhHGTxVSFeM+1XEJx16UWKRZU8kdquRHA/rVJcE1bQ7alxNUW48bjuORUqnLYqsCSMjoKnT5ee9TYq5bBwdtWY26YFUFOT1q5GeM0uUC6CMetSIcNVZTjvU6tnmoaG0XUIPuKscZ44qnGcn0qzn06VBLJAcd6nU44quPzqwvNS5AiZakBqP6VIDUjHjPanjdTV65qQYzz1pJjRJGGPfFXEAHI4NVUIqwpqrGiLyBavR4rPU5q5G4xjvS5BuRoRLzitBNvAxyDmsyOQduDV6NsEE1DRm2aSMDnPHvWpETwDWNHJhskZq+jsG3A8GhkJm3F6Y685q8kpAJPFZET46HjtV+HcRk/jmpsM2VOVrfgfzF25yR0GOtcxF8qgVuWVxHF8xXLEYzTaNYs6aw4uESQ7UbJOPpXqGg2MJVfNbIP3c9K8jsrk723L8w5U9q7/SdcKwrvXYYzgFf65pQ3ODMqcpR907DVII4mCEAMuNuOMg1FbXCDAVQAfT1qTUrtZbBrmZclRxt9656z1C3QFJTgHkHB6960qLXQ8ClCUou53dlJkhecVvq1cHBqawsp3Db1yOetdZFfW7AZkXPfBrow9blZ5+Iota2NhGqwDkVnrIvVTkVaWQCvrMDjYtWbOCUSeimh1PenZzXsxmmZhRRRWgBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf/9b4WU/pVpaqrVhK+OkfeFpK0IzxWfH1FaMYqALanFOU800Z7U5eatkxO38NSvEWkj619K6QA2mwzIeJBmvmbw8xWKRAMuOce1fTWhHOkpH2ABHtkVw1T1MLsdJpczN5inoF4rQidwynuQRWNpLEOwPXbjHrWr0Kn0rz6m56cNiEIftrkD+AZ/OrP3iD69qp+Ywuzu4U/wA6uRuA3HoazuaXI9pKkdOazLm2PX1raBj5FQS4KHB5FJpDbORZgTsPIzWW4KzFc5Fb9wsLsCeGHWso+W7NzhhW0Uc8nY5XU1IY56da5W+BMT9+M11uqZ8xlY1y92pYEL3GK6I6HPM4Z2z261XGN5q7cRbcn0NZ75Vsiu2OxzMnKjFRYANKX+XNVHlbJAFMzbLlQSgkYFQxyMWAp0rccUEsgKnPWpB0qEmnjpTuQPwSeaeNo61GDwTUYOW5pAXgRig8io1NSe5oNBpHcUi8eppxI7U3ODUNDRKKfnjNR08dM0ixRz0qVM4qFSx/hqdAe9JlpCgck0qZB+akpwGTioGXIhk/SpGI9OlEYwu49ajPrUNlpCDk4FXoxgVTQYNW14FSzSKLKvxU4ceuaqAZHHNSIGVTkYrM1I3bc1Y+otIIWZOMfyrYHJrlvEc8b2UsTuUQjBx1x3FXTWpE9Fc8u1/xBc3UE1pARzld+eMd68vlt5M4z0roNUu08zZartjXjnqaxzIGXrXowPIrTuzPCN0NRGLByausOc5pMZOfStGznaK6A54qwM96MelKOBUtkhRRRVIBR7U8UwdakXqKZcScDsKsoO9QqueasqOlTJgSrVlBxx3qAcVZQcVDGWY171aQVCgx0q0gpoCxEuatpGBUUYq2vvQUOVRVhBjr2pi1OuO9KwJkqLyDVtarpzVpAetJxLuWU6VKuM9M5piDIqdQ3Y4+lJoEPGSOBk1Kufb8KRck5JqQDNIQ5c5xV2Pr61XjTnI71fUBRTAkXA5qwrehzVbNTRnmnYCwCc4q6gwKqIBVpeeDSlEpMsxA1YI5qOLH5VZC1FtBMngHHPWrAqBBgVYXORSaGi7EMjpV2JATzVOIdvWtGMYH0pASrkHFXYQQBuAzUKgVOjAVDJLase9To2evSqIkz1q1HlsDNItM0Y8danV8cDmqmcDipELFqdjVM0VIIBpwYjpUSk4+tSAZrNllhW5xVuPJ+bpVFVIOa0EPTFDQyyMA9eanUEjrUC8c1ZUjHtWbAsx8ZqYVCp4xUqjJrJgTLnIqxH+lQipV4GanlFcsfyqQcVCGz3zUwbipaAkXipOO1Q5qUHAosMlGRVhOcVWBJ5NSLzTTK5i+v1q6hxyKzl/OrKNghe1UhcxqI2OQOtXI/n6nBrMSTHsRVmN2424OfXtUyRJsRnb0OQKvxsCOegrEQkHg8Yq5DJhQc9alLoLzOgjZSgGQTVyJgMjpmsJJ0UZFXkucYGAOwqTS1zooZTjkZ96vxvzz+Fc4lw55Y5HpWhDc8gHhelFhxR19s5bay/L2rchumhUpjgnn61yNnIN/znIFacc6Rvy3yiobNVG+jPRdPu/tFv8AZ3YrHIMY9f8APrVe4jWxm8p9x9R7VjQ3EccvlRcgrnFdrMqatpKTIPMngXkjrkdR70K7PKrw9nK/RlOAqqpsJwRkZ7g1vWcmTgkiuMgaSSACFtro38QyMe1btvMI+vGaUjmxFHc7SKYttWM5ya6C3jxggnIrgra9Ax3INdfYXyOVywGeD61th6lmeHiKLR0EYOOanQGq6tnlTke1PRz9K+rwdZK1zy5IuUU1WBFOr6KEk1dGIUUUVoAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf//X+F1xVlKrKOmatLXx7PvC1EOfWtFBnpxWbFWih4FZjSLKmpVODUIpwNWwUdTtPDbotyS3dSK+j/DV0sliyHqgX8sV816AcOJAOeRXvPg2RZGu4s/6tUJ+prjqo7sKz0PTf+Pnpncv5VpllUK2c4PSszTSBeIrHA2kVbIDvjPOa86ruetAkfymkVi2Mk8VKpUHO4DPH51UZNsoQHv1q1wAAOprKxZIyjBGRjFQzQu8eQTgjtUhHJU9qgk3LGBnkd6QHLLG7FlkbknrWZJG6Sleee4ramhw7EVz9yG+0H5jzW1PcxmYuo7gxDdfX1rlLp8ZKmu4vLYOgz+dctc2LAN3xXRbUwkcNdck81kSt2Fb99CUdifSueYHdXVBnNPcTdlBj1qBycZFS7TjpijY1XcyZUibEgqaQk5JpRFzk0rIaEyJFc5pw+7zSlTmnYwCMUySPPFKlAFSRr81AE3QZp5bI6YowSOKf5TtyKDQio4U5NT+Q45IxT1gDY5xSkNEXfNSBcjNTCEBiT2p5CgcioLRCsbYyDU2MACjOelBzikyxtSxAFsVFViNTWbKRdwoHFQ8dKegO0k0YAqDSKADmpBnpTFO45HFSgdhQaItRsAOae7jacVAWVByap3Wo20CEu20D8zUPUphLqaWyHI/xrzTxLfLcBppj5UQGBk9c96d4g8X2VtuFupZgMAH1rxbVdUm1KXfOxbvjNdVGmcVet0IrydHcrEcqKoBqZRXWonmSkP3ntUgkBqvQp5rRRJbLW8UbqrkjrSrJz9KOVCLNFNVs/WnioQIcKmReOaYg5FWVXJobNB6DHWrC+tRqOfapwOwqLdWJEi/rVuEGq6qBVyMYGabixllRzVqMc1XQZq/FHxnFXYaLCAAVOoFNRCevSrCpx0qXEpioO9WFGaREPp0q3HHnqKQJAi1cjTNIkR4q7HEQKGykgX3qVVJINSLFVuOLI5pMdiFUz1qwF9BUyxAcCpBEO9SohykSL6cVPQEqYIKQmiMAnGKsRxkUoXnmrMaZ4qkIdGpq0F4zTY19KtJGT+NACxg5Aq6oPFRKuPrVpE7VLQyRV7mrKKO1RqMcelWkXjiokFyzCueB1FXlX15qtGuOtWwBUgTA0oOTUfSnoCW6c0CLKjjpmr0IAAHc1XRSCCatop9OlQ0WkT/AK4qeIEdahwcVYj4wfWixqWlAqwqkc1AvTFWUBHBqWWPUd8Zq4lQKKnWpbGWF6etWVPSqy+lTr2qJCLS1MnPIqFRlamQZ78is7A2WFqQEiogakHFKwrkq/l6VYUcc1WX6ZqwrDpikNE230p4HpUQY07d60+ULkwxUisB1qtndwKlBNLlEy2rd6mWUA1UXlakUd6ETc0VlGatJKeuazEIzx+dWo3UDB71SByNONmbB6VYXeCOcCs1JRjFWlkOMZzS5bEqRrxkdSetXoXV22E8/wA6xIpcKOc44q0s27jtRKNzRHSxydOOlW4pQDkHjviudjuduAfoavRXCnkmsrWLUjp4pSCcjj1rThlRV3NwR0rlIrkqeec9ATV5blgwOefepaTR0QkdtBd4YSH+Hrn3rtND1KeEtDCcJLyA2MZHFeRxXO5ic9B0PT8K17G+aJWKHG7gjNY2s7irUlONmeh6jIthNt38OMgY6c9OKhtb4ud7HeRxjpj6VxR1SaVjuUbxwWPP04zVy1vpkAUgN7nj8KU5GSw65bM9LtLvC7pF+bPGOa0PNkZ1I55rzmHUyxxtw3fB49q0U1OYIsKMxOeamLscNXAtu6PatL1UxRD7SRsXgn0P/wBetN9bsOPKJcnso5rxjT9QEcxNy5Cyce1bNrrE9pcq+FMakjPTNejRxzjHlZ4lfKvedj1WDUFmP7oMcdyMVoxysw5OK4+z1E6kd9srLgDI6ZJ/pW3bztHJ5E/yseld+FzCcZb6HkVqFtDoFORS1XRiOtWAc19jhq6nE4WgooorqEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFK4BRRkUmRU84C0UUVSYBRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//0PhlOtWVqqh5qyvpXx594Woq0E6Cs6Mc1oR1DQ0TripFHNRA4qZOtEnoWzq9FO1lx2PSvZ/BL5vbs+sQP1weK8U0hsMPrXtPg4CLU4yTgSxup/LIrmmdWGPU7Il7iBicEda1QqKxcDnJrD0ti9/Fbn1Y/kK25vlYqOxrzqiPWpvQeE3sXPbmpXT05I9KiifJye1WZmP31PWsTQYXV9oAJqCYjy1LH72eKckjswOQMVJNKxC8DK+1Fh2MkwKy8nr3rmruICY85xXWXFyApIAx7VzN3dwh9m3kirg7Gc4aGHdrJtyOVHJrnbptykZOc10j3kDFonQ+nWucvvLViqcHrXRzXOdo4fU3/esvTFc7Lgykkcmt/VQDMJBwe9YDHJ5rpg9DmmN5IpvzjqQBTj7VC5UfeNWYSHFgTinngZqsCrNlc1MeRVolkTH5sgUHkcUjKc8U8KSKZFiMDinLjPrTthP8WKeAB71LZSQ9Xx1NWVmUdBUI57VINvpQpFWHPI7DsM0ibs80/cR04oUk8k5qWzSKFPU00Lg8nNOaMkjNL061FjQX5qXPamE0Z5qxWHqMmrakdB0qmvXNW0rMuJYHA4qNxjmpl5FMfnipkaRHRIQMmrQU44qNBhRT/MKjgcCoZqiOSEkfOcfSvMPFt0LNGUS5kb/x0fWuy1HUriRTHAhA9RXgvid52nYzNkZO3mtIxMK9SyOR1C9Esh8skj1Pes4EnlqkkU4NCxuRkjArqgjyZMaGFOz2ppVVphb0rpRiOZj06U3caZk9aKLk3H5JqRRUY7VMBmpKJF5PFWB1qBAOpPSpx1pDRMozVhOtQoOOtWFXPFDRTZOoqxGKiVasxinYUSVFq6i1DGtXo4y3SgomgUE8itKNQcCq8UfYVpRIQOmBQWkSIhPSp1iJ9BUscW7HFXEhApXKUSJIh35q9HB7VLHEeMDiryQk9allKJAkQxjFWlj9asJb96nWE0IvlIEj7VZVD6cVYWIDtVhYye2aB8pUC+tSBCelXVtyetTi2FILGcIzmpREcc1e+z46CpBFilYz5CkIqspHU6xZOKsLDyOOaBcpFHGe9WwntmpFiz+FWfKOMnpRcXKQrEetW0iOM1LEg4BFaAh3Yx0qB2KkcdXEjzjPFTRwgVaWLj2oDlKwHUCpFHGas+UD14NSLCOhrMbK2wnHYVfjj43UCMYxVlR6UAkLGmatqoA5qNFIGDzUy8nmg0SJlUHipkUD/GkjQnFWNh7dKTLiIKsRnLYqEYzzVpM5HrUPUZPtGc1Ko59aaq4p4681LQyZTk1OpyKgUY5qVWrNiLinjipgeOtVVfmpw3NSS0TqalBzgioFYU9W5pegiwvHWpqgVifenhweh6VSiO5YzjFS8Gqobg1IGquURYBwf8KeDzycVW389aPMx2zUtAXEYZPWpQ3AxzVEH9acCfXFKwWNAPxUquuMGs0OAepqUTjGetCTEzTWTPAzVhHOM1jrP26Yp6yvmnysVzfEi9WODUyyqCMHNYKvng81ZjcLg5o5SlI3lnz9atRyseM/nWMkg6k9KspcBG96zaLN+KZ168j0rSWUFgdxOO1csLsZ5+XPpzVmC6LEYJzWbiawkdbFP1UAnPSrsUi52tkCuXjvFVRubBPTI/rV+O/B3B1zxkHPSsZG6kdpamBJI2bDBuOe9TieSCVuAY+2Dk5riYr9yCm78Kn+3cqS2OARzWLKSudr9paQg2zAhuMdGH9Kabx8hXY/Nx+IrmYruKQqI2IcngdOa2bUG53PcsAcjp/OkmVGBsJqVwEEUcgVU4z1P610cWoo9qpilEkgGNpPeuCv1eIKEYPGR6dqoRXvknLEjd70yJ0k90ez6HrN/bXIlwYGXAZc8MPb3r0aPXF1UcgcH5WHB+hr5203U2nkWJ1ba2MEnkH1B9vSvQ9HvZbaX9y6u3c55OOxHrWlOu46HkY/Loy95LU9y0q5nkUwzDO3kMTyc1upgDArjvD+pw6gGMQ8qReHQ9yPSuvSvtcnqtxR8Ri6fLKzRLRRRX0KZyhRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjIpDwKpyzKmdxwK5sRiFTWo0rlrevrS7l9ax3u1Q9Rj+dUJdSwwDDGfzry3myT2NVQbOkd1HemK1c1NfEqDu4qqb4hV53VzzzNOVy1h2dsCCKWuWs9Tdp0HRWIXH1rqByK9nCYqNRXRlUpuL1FooorsMwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/R+GUAzz2qyoqBBirK+1fHn3hPGKvp0qmgxV2Pp9Kh7jW5MtTLUK1OvJoa0LZ0GnfeAFez+Hpwl7ZlQMOCp/KvFtPyHQepr13QyBNZTDpHIM/jxXPUWh1Ybc9X0p9t2JCeA2Mex4rorj/XsnciuatFRpzjqD/KujuCJJfMxyPwrz6h61MrxCRZupx6Vakc7cA1USSRXL9BSPuJwKxZqolyGM5D55p9ypeJ1ztbsRS2+SAO1XGKqjkjOMVJXQ5Lc4jKuScdzWBe580NjOetdhKiMGOMVy9zABIQAc9etWZSZz8rAZOKxb7aUL4+tb8yuGKuu0HOK567wFI65NaIwmclqAVwWA5UVzcgHrXTagpAyorm5cAcda66exyTK4x3prKh60/mo2IrUxkOQQr90nNKxXsahBApSQaqLuSBINPSoTk+1TJVMAxzUgA7U3GTSjI4WsxpEgp1RhSPepE+tBZKuTzipUUjkjmhFx3qbFKwEbe/NNK5qTjPvQd1Mdyu6GgDtTnV26ninLgcZouVccqjqe1W0A6GoU4qZTWUmaJaE/AFIOW5qPdzUiBi3FQaImJwMU37ylex60/YxqK4wkfFBXQ53W7mC0tG8sYJyPc14TrKTzSBmGcngDk/lXud1pb6i6qOg5qKbRbCziPlQLvUcucFj/hW8TnrU7nz1Lps1vH5s67M+vX8qx5Tyc10Wv6vHJdyxxHcFOM9uK5BpGYmuuETyp6aDWOTSU/ZkdeaYw2nFamYfjSg47U3OadtJ6VNxWFBP51KKYFxUgGTSGSpyanHWoFAJxVhaQ0Toexq3HzVSMZPStCNCKpIciZFzV6NM8io4o84FaUUWSBTaFEWKLJrTii7UsMIGK2YLXIFSzdRIIYcYrRigJq5DZ9M1qRW4WpbNFEoxWz+lX0tT3q9HDxxV6OA4zikaKBQjtTwe1XUh5x3FX0t/Wraw4HSnYfKUEhfHSraWx61bRM9RV1LfNFhqJnLbZGanW3YVqxwc5q2sA7ikWoGOsODUwgx2raSAHoOKsC2T0xQx8ph/Z8jjrS/ZTwexrdFvkcU9bb1FJsXIYYtCW4FTrZtmtsW47VMIMnOKhyRPKZC2rAcVILZtorWFualW3LHJqOYnkMuK324JHNaEcXtxVwW4XjGanWLB5FFw5SBEAHSptlWBGOlP2ZNNisU9vPvTwhParXlHPTNSJE2MYxUE8pWEXrVhVx0FTiE9xzUoQDrQUkRImcZqdEUcEVMEHY0oSgpIkjH6VPio1WpR1oHYQJn6VKgIOR1FIPSpEPaoYydWpw9uajHfvUijipYD92OtSKwGKZilBNTYROvr1FWAePSqwbipQcfSosS2WA3eplZT1qnvxS+YuOTTUAuXQ+3inbu4/Ss4yenFHmnPXpV8gjURuuOKlDjGc1lJKTznpUu/PWjlYF/zR2/GjzCOlUd/ofxp3mZ4qXFgXPNz1pwbPeqG9fWnCQA5Bo5QNFZPWnllHtWb5wHB/Ol87mqsKxq+avY9ad5nPBrJE4xUnnZI2nINCFymws5H1FSLcn14NYyy8cHpUiSZwD0pNXEkbazA8k1YS4K9vxrBWQg1MsxGOeKzlE0TOiS5z1yBVlJAOc5BrBimwvJ+vHFTpcYPynGelZtFxZ08T5xnpUxljUcvgnmuZ+0bvvHH0NPW4QH39/5VDiapnV28sJyrNyenerkTbvuAgD1rk0vnTBjjHHrV6PUrxVKkAhgenrWTpmsZM69CAoy+Pwrf06+hiDNc/vA3QdM/lXm0M2o3B2npzjtyO9dBDIZIYoXJV05yDg59awnTNIyPUbWCK+AaxQuD95T29jmmXPhqRSstrESQTuRuoPt7VzGka3faXIZVHyNkFv8a9d0XxMNTiVWt0Eq9HJAyOn41z3s7CrVJRV0rnmZW4jk2BChTuOOlWI5rzzxIk7JICMN0rpfEGmXRk+0ptl35yF4GP8AGvPv7SdGMS/vGHHpWmrKptSVz2PStckaVJGLw3MQBLY4cr0PHevUtP8AiDaXMRhkQfaRxgH7xx1x1r5TivdTj5ikYEYzzu2j1rv9M0+6sli1q3k89wdxbqo9j7e9deGzGrSfunmY7KKVRXlufSOnf2zqDCfUcQwkcIvfPrzXUjpXJ+GvEtrrUHlN8lzGBvT+o9RXW1+g4CopwUlK5+f4qEozcZKwUUUV6KZzhRRRTAKKKKACiiigAooooAKKKKACiiigAooooAhnfZGTXIX2oHABG0DIrrZEcyFs5Qr0968u1m423cyKTt3dK+czmbR3YKnzOw+XUj0JwVqB70SHk1zUl4qOyZzkd/WoPtqsMk4FfPc6PfjgtDpTedRnI7Zpn28gjb+tcxJdhV3Z3+mDmoBe9jx+NRzmscEdra33lyhv4gQR74r03Sr4X9t5uMEHBrwOO7kZtuK6nSfE2pWcJhihVwD1PTH4e1epluM9nLXY4cdlzavHc9morktE8QXWpXHkTwbOM5Ga62vrqNaM1eJ8/UpODtIKKKK1MwooooAKKKKACiiigAooooAKKKKACiiii4BRRRS5gCiiilzAFFFFTzAFFFFUpAf/0vhuPPNWkPQVXXNTpXyDPvEWl/lVuPpVRatJ0rNldSytWI8ZFVlqzF1prYpm/YAbgfSvWvDJjWBHlOAJAa8isD84HrXpmjyMR5K9AQRWdTY6MPuezwti4MsI5PSumnZPM6Ebh+tYOnwBiGDbMqCK6GbLSLIP7uDXmVEetBjECg4bNO8mJU+Vsc0iW3JbP61KIiTXPynQrDIl2jLHNWgAwIJxUTJtGM1IoLybW6EHFKw2Y0qmObbnO7vWHdsjO2Gw6+nWty4t5vN3t09OtYtwiJMZFXqCDVrYxkcxcFi/zOWHPX1rnbtcMSpx9K6eeAKciudvo8lj3rRIxZyF+MrkcVzUynP1rpdSUJH171zEjtuxXVS2OWoQYxTTg9qcQc0wjnpWpi0AyD0pTg9qArjkDil57iriiCElQcVMvSmOgyMdamC8U7ANz6U7OKTy23fWpSpx0qLDTIC5BwBVmP5jUIRieBmrccbD7wxSLJwMDNLTlGVxSFcGgBoHzU456U4AdRQc9KAImHPrTcc479akxmgAZqJFxHDFO5oA56U/aQc1DRqN5zxV2HcDnoKgGcCrCE7eeSelSVElLDNV5U3jAqcISTuNHyryaDVFGe6tNJtHu7twiKOSa8I8UeNrnVvMsNGDxwOcF+jP7D0Fdz4ptJ9UZ7u+nEOnwjKpnlse3qa8dVJTMzRRMkQyd7DAA+tdFJanFipu1kc1NamFgsgwfT/GqjDBP8q1Lr5nJB3H+lUGhfOK7ubQ8pkIfB460/G/kipBCAMmn7fWi9xEQUU4DmpQFHQU8UcoEIU9qlVD9KeMU8VLQAq9hVhE9ajGeMVaQEkUJFkiqAM1owKM81BGoxzWhCF4rVKxBdhiyw962IYMYAqnagE9K6S1hO0ccmkzSCFtbTkE10FvbccCmW8JraiiwOKyZ2QgRxw44q7Fbsx6cVPFDnrWhHGAKg1USKKALVxIhzinKmcYq2iYpj5SFYyasJEe9TImatxRUFchHHB7VbWLj2qdE9KspFzk0rlxiRRxHqKtrFxUqoBU6Jmp5kacpGkXSpxEasLH3qykdK4WKixZ7VYWHI6VbWId6sLEKRPKUBb+1P8As+OlaAQ1II89qmSJ5DPWDgVMIe+KvCH261MsXtU2M2jPEQ61KsOavrCPxqYRgdBQhOJQWCn+TWgEPSneXV3J5CkIqeIsc1ZIA9qAvp0qRqJXI4pVAxz/ACqyIyaUIRSHylfb6U4Kan208JkdKA5SFQc4xUqjHGaeEwOlKFPeiwrAFHFPC460DI4pwOOlDQhSAB6+9OU9qCVx9aZ7A1FgJ8+tJuAPXFQ5qMnHSjlAtCYA4BqUSZ6VmZOc1Mr9MnrRyCLu6jdzUAenZBHJpqIWJcmlDE1BuApfMP8AjTSJaLgJxjOaXdVPzeOKaZeeau5JdMi9M4ppl5x+tUDISc+tJ5nqaTBF7ze+aUSms/fz1pRIcdakZoiQkc5p5f3zWb5mDin+aQKWpHMaIJPelzj8KzhMSPSpPMb1oaC5fEmDyc5qYSnAOc5rL3k9TT1b1qHEpGmJT69anV8d6yN+OhqZZGB4PWlYdzXViOAetTLK4ON1ZKt2PNWE2kdcVDiO5sBpANwOanjR5M7XwRWSqvj5Hxj1NTJvVs7+npWLRrFm6iOo+dtx7dqm3SBcKTWRGZNvDZNPUTNkNIw+nAoLUjeS4uljyz4z6dRUlvcMJcmUvzyM1zwTDhpJDtHatS3dCcRLjPfFTyjudfYahcsxijYYHO1upFdJGLlVUyTiKNWBGM5BrzuC5VHBA+ZfWuj0yeS9maMuPNzxu6H2rhrUzopyPUNB1myubxbTXpZJ8uFjbdtjPpnp+Nela18LZL+ya70wpE+weWqjjPoT3z614sLWS4i+yxw7WXkoe/0Nek+CfGes+FI47S/jN3pTMBkn54wTjv6elRQcb2kcuOp1kuehv2PKJYNQ0qd4bzME0TYwflOR2PpXQ+F/HGp6ZqLLfKJISCHjPGR6jtnvX014k8MeHfG1gl3aeVJPMmYZeQGB6Zx1/GvmjWfBFxp08llKrJPHjKHBdOMgqQcOuO2c/wBOqth3AywmYU8THkno+x7VoclhqU8F9ocyrIfmRlYbkbqY3Hp/kV7Vo+qDUINsg8u4j4kQ9Qf8DXw9pd/d+GrlNpaCYkb16RuPX8K+rfCmuvqGyaZcLIv7uXGAw/ut7125RmLpVOXozxc9y1pc+6PTelJnNMDblpoavvPbLRnx7RNRTQ2adXRCdxBRRRVgFFFFABRRRQAUUUUAFFFFABRRRQAh6GvC/Ely8d/KpYKCSSB1z/8AXr3WvnPxfc+RqcmQNwdzn1rwM/X7tM9jJVerqYct8EO0AuSep6iqst7vGxeneuenvd5fDHLcjtVRrx+5wO1fHKR9koI6OS8wvy1ELvfwwNYS3Rc/McAVLHcLuIJx6E1POx2segeFkjuNSEMq7kxnH0r6Lt7O0jhRY4lAAGOBXzP4RnZdUBzxtPf1NfT8B3QoemVH8q+p4ftK90fLZ85KSHrGicqoH0FPoor6hJLY+dbCiiimAUUUUAFFFFABRRRQAUUUUAFFFFJsAopMikJ9KylMBScUm70phaoy1c8q40ifdRuqHdijccVHtwsSbvegNUGfenA1H1gLE2407cKgBxS5NaxrhY//0/h9MGpkyDgVFH0NTAgc18k0feInWrSVUQ+lW0PPrmspIplhTxVqI84NVVP51MvXmhIo2rI/vBXpOiHE0TjovWvM7U/MO1eoaCFMZLfxA81M9jWgz2lN4jidTg7f6VuzTv8A2fbTAYY/KR6+9cdaXEj6fbxk/Oi7SfWuqE0S6dDGxO4A4z615lVHrUwtr1xIUIOCeK1IrhWl2MDisNZMxqR94HkVqxJEJUJJ6ZrlOlF7I3YB4NSKWV1+hFQqI3IIPKmrHAkznoKCrmbOriXdu78iucvMfaGbJUk9K6WXl8k9eKxNWtFaRZN2Bx0pxIaMG4G4dc1zV7C3zBeSBkV01zEQOPu1z91FIMsOnTrWyZi0cRqhD2/lle/X6VypHO4LyK7TVISE3A9Tz7VyDBssR0rppHHUKmGLYIxT2CoORml+bPvTCZGbB9MVsmZAkisNqrik3FTjZn3qMb+2Kk3PnAFXGRLQFzwSmDR945qItL0Ipw39W4q0SWQcDgUHdjOaqgEHk5qZSAOtQImBIxk80u8bs5qMAY+8BUwWLsdxqZGpZQjZmmkjqaeGG0ADANRM2DgDNSA4U0h85yAKcOnFN7mgBMYo6GkpwXJqZFwJ1yRwPxpSMHnmpFHHAp4iHU9ak1K+cnAqwgIAPrT1jC8kVLtOeOKhloaz7RVWV5ZFKxKSx79quEDvSzsY4S0eAyg4yKlbmjOG1fT4AiGeTdsboR1PoK8p8VXk104s1xHFHyVX+Ijpn/CvTdX0+W6EU88xLID7Dnqe1eP69dW1qzx2beZI3Vuw/wAa6IHBXOVeSKIPhcuT1NUfPbrVTMkrNtyRnrTvLZRzXXHU82TJvNNJuJqH5u1Lh/pWqRBOrY96lByPrVQZ7mn7qLhctBqkFVkJzVlKGhk8a5NaES1SiBrThXJpxjqIsIhPatK3iBOMVHDHkDArfsbXPWrkUkS2lqxPFdXZWrYBbntUFnbA4x0rpYIQorNnZTh1HwwbR0rQjTnpTUWr0adKykdUUSRoPxq2i5ojTuatItI0sKkdWVTsKcidqtovFS2UokaRY571djTvSRp7VdjX0qSuUVEqyqAU5ENWUTJqrDGJHmraR4FSRxirAXnpWdhtjETPQVOFxT0Qn2qcLiiwhqp3qwqikRT3qdRQgAIKlVKeFqQL2FSyGCoMc08KPXNABHapR1qSWgVRUmMUg60uOOtNE8ovbgcUlKRilAOa0KsM2ZOTTgpxjqKfSZPXpQFhMEc9aXGRRkdzQfrQFhMexpwWgfWlJ9TSsDiKART+KjDcU7NMgX60uPSmcUpIFJoTQGk3DNITUZNHKLlHk8ZzTT15phcetMZvSjlJJePWm7sDrUO80m8EnNFgJxJnpTg+e9Vg3pS78dKrlFYth8Ub8HmqvmGk8z1o5Rcpa8zFJ5vSqm+ml+aRNi5vFIXGcZqnvpN9AuUteYoP0pd3HX3qnupQ1KwF0Mw4FPDVTEhODnpUol7DmiwrFkPTt1V8jHWlD56Gk0CLYfinBxVQP607eKhoovK/FPD88VSDDHWn5/WkOxfD9eakWTHSs8ORUyyY6dD60rCNASMflJyKlWZs4BP51n+ZjpTlkByc4qGhmos0u775FSG6uGBDOSD3rOSQYqQNnkGosHMXhdS8gvn6037TMuRvOPY1UyetG8dDzRYHI14b8ABZGbdnhvT610drqgjVFuh5bg4SQd/rXBhgp+bmtG1vtiiKUeZEx6dSKUqaaEqrTPd/DuuXHmKtz+9VeSR6dua9aiS11O3R7B1kZxiRHOG6cZ9D6V8paXrU+isbiAG4tWOGj/iX6da9S0zV1uoEvtImKSeq9Vx2Ze/0NeZVw9ndHpU6vMtD3DRNZbwLcrFcbptPuDlwP4e24D1HfHX8q9suItA8Y6Uquy3MMo+SVDh0PUEHqD7fga+c/DPjG01ydND8RwpDeSHEcuP3Unsc9Ca9Th8N6t4TnN9oa+dZtjzYM8Y7kE1VOrKK1V0fP5phoufNfln+DOC8R6Dc6ExsPEVv9usHPyXCAq6dufcfXmuy+HssunQC0Yi80t87JlzuU46MvJFepr9h8SaaYLtVOR3wcEjuP5ivMbTSdT8K6ncR6ehe3Lbmt8jof4kPcfr60V8O4Wqwd4mEcd7ak6NT4ke228u5Ay/cI4+lTg56Vh6XqSXcK7xgsOD/AEPpWtuxyK+iwuMvBany1WnZtMsq1TA5qoHB9qlVq9vDYpbHO4liimqc06vXhO6JCiiirAKKKKACiiigAooooAKKKKAA9K+V/iBO0WtzRMOFY5GPfg19UV438TfCM1/G2s6em+VVAdB3A7j3rx86w8qlL3eh6uT1owre91PnJ7hixwAR61C0mOp3HoKrz5ViE4P8qoNO6E7jyK+HSsfctGytzgcDOKcLlTyeDWOZiV3ZxT0kLEKOanlJPQfCEztq0bZyoBH419f2jb7aJvVQf0r468G2d1c6nAkCksWC+wB6k/Qc19j28fkwRxddigflX1fDq0Z8txA1eJNRRRX0584FFFFABRRRQAUUUUAFFFFJsAoopC1Q5ALTS1NL1GWzXNVrJbDsOLVGWJ9qT6UmRXnVMQUoi/rS5NR7jRuNc7xBXJ3JMmkqLPvRmodcfKibij6VDnFKCalVtRtEmfaj6UgYd6Xg9K6I1SHHsf/U+Hk9Kn/CoE61YHSvkz7tEqVZjqsBVmOoZo9i0g5qdagTrVhfakM1LU/OPevUvD4wQCcrg5/LivK7X5mFem6DMFVUblnIFQ9jSjuelWNwI7UOBkqcY9a7XzheaepA/wBX+dcTaxebG1tnD7ev412UUX2WDYWG0YJNeZWR69NkI3BG9QMgVpzmZVjcDDDHP9KoYRxvJBUitaQbrdCG9OTz0rlSOhMngJJ80jBIFT+cXbJHAqBG2gnPJHFIh6+9SyireuUYuDwe1Zt6+Z42zwwxWhe4I96oTorIhYZAGfxpoHsZGpTGNChGeorl7hiy56AdPrXR6nhivOc9fpXLu4lXC9B/Otqauc82c/qBPkPuGCRXDO5zjkCu21Bj5Teorh5dwJzXXTRx1Nxm7JxnFRtw2c0ofcwB6VKcA5Iyea1SMiMFvwp+4gZFMOQfSpt2F9acRMoNKwfoTU6scZNMZi7fSlB+U1RAue9P3jbzUIIPBqbblefwoGh2TT4wMjJxUIBqePg8VDZZdGeKQ8nikw3WpAmfxpANApcVII8U7AA9aAK+PWp4o8ncRTVUcnOasqcDk1DZrFD8N26CnKCaZvxSgt1xSLJ1weDzipCcHFVkYF8fjVg8mpaLQw5P1psqOyYK5FWlj2DdVDUr54rJ0tAPNfjce3vUml9DzDxbrrW4ktYAJJBlQo7H1P0ryiPS9Qvg0s8YSEdzxn2FesHREkuYyVaUOTuPVnY9a2bjRoIU2KnEfPPr6VvTaRxVYOR4YdFEVrJLIcEHhQOAK5SdgzmvUvFbLa2TgHa0rbR/M15DK4JO3pXZT1R5tZWdgZyeKYHOcDpTMmlFbdDnJQakFRKKsKopOJV7kkYOc1bWq6LirSAk01EbZciXPSta3TJqhClb9pCTgVS01Bal+0iyRXVWduQBkVTsbQHBxXU21vjFRJs6qUC3ZwbFFbMceBUMEe0CtKNMDPeobOyMQjToTWhGnGahjTJFX0XFQzdIci1aVabGtXEQVEmWkPjWriJ61GimriADipSGKq9hVuNB1pI0I5NW0UVQCqh9KtRqMY6UiirMa96hyKUSRR2FWFX0piirCjjFA0hVFShSaVQBU6jgUmhNCBanVeaQL6VKPSmSL0FKrEUowaNoqWhNDgcmpR/Oo1xmngn6UuUlokAHencVF5mD604NkZPAqkhDwaTI70zf6HJpuW9RVJAS5xwOtJk1FupC3rRygSbqb5nNR7ueKZk9RT5QJTIaTzCaizRmjlAsK/rS7x0FVcmgMO/WnYTRa3nqaTzO1Vy49aTeM+1HKQTlz+FRtLzUDSA03cCKdgJvNH40hkB61WNR5PalYVi2Xppeq27HWkEncU1Edi0Gpd9VN/rTS/rTsBcD9qN/vVLfnjvTt/HHNHKQ0WS1M3HtUG88UwvnqaLE2LO8nvzRnvVTcaUue9IlotbjShu9VdxxzS+Zkc0CLm+n7snHeqIfHFOD46frSaFYvBiKcHI71T80daeJAamwXLe/I+lSCQH2qkHzT1b0pBcuhhniplf3rPD4p4fFS4jTNHd68U4Pg1QD81MGHBrNotMvhw3SnBsd81RDepqYPg5BqQsXg/pUitzkGqSvnrUwepaJsWt5PWl3ZB5xj1qur54pwfnFFhDnbaOKVZSP931ph2spJO33pqqM4DihIzaNS1unRwY3O4Y/IV1+g6obC/W+svkdWy8RPDD2rgRGFbJkGAM4FaVvJDKCkjkuOhFZ1IXNKU7M+gZbq218xT2ihGkUjaP4WHUV7T4G+Keo6PJb+H/FrebBIQkN31A7bZD19Bn168V8h6Rr66SyyMpmQld69GyP4l+le/6fd6B4r0jNg6m6HzyKOpx3weQelefLmg7o669CnXhyTPqWcLBexXFiNiuQSB91h1NdhNaW9/AoYkEDKuPvCvlTwr481DQGisNbjN5p/KtjmSL0Iz29R+Xv73FrqafZxXsEn23TZgDG69Rnt/8Ar+ldeX4qMW1NaM+PzHL6lKSX3Pua8NhNBcFZCQyHKt/C49/etCR/KPPFJp+safqkQ+zygk/wE4YfhV14lZfLkGRW1bCRtzUnoeVObvaaIY5cgNnrVxGrKkt2iUmM5HpUkMgHBPNY4fFTpytIUoJq6NgMRUgeqKSZHpUob1r6fDZh2OdwLgOaWq4Y1IGr2KWKUjNokopAQaWulTEFFFFVzAFFFFFwCiiimAUhAYFWGQexpaKAPIviV4R0VvDl1qNrbR21xb4k3ogUnB5zgc8V8dzyyLIVPGOuetfe/ja2nu/CupW9rGZZZIWVVXkknjivgPUbLULCcx30D28ndXBBz+PWvjM+oxjNOKPrshrylBxk9hyzsvfgV658OvBkfjLzhLL5SQAbiv3uTwPxwea8SLnPJr6Z/Z+uczalbY6ojE/Qn/GvPy2EZ1VCWzPQzKpKFJyjue2+GfBml+GYz5GZpicmR8Zx0AGK6+iivvqNCNNcsUfC1aspvmk7sKKKK1MwooooAKKKKVwCiikJxUSmAtJuFRlqbu7VzTrpBYeWqMue1NPrTC3PFcFXFlqI84600moy3vTd1cFTFJlqI/caSm7jTSfWuSeIRQ4n0ptN3Cm7h61xzrj5SSimFh60m4etQ64+UkpQcUzd6c0oOaqNUTRJuFL0qOnA11062oj/1fh9MYNTjpUCZ/Cp1r5M+7Jk44qeOoAM1Ogwahou+hZU81ZXFVV7VbTmkNbGjbEKw9q9B0dx5sXoSB+ZrzyL5SD1r0PTFBgRxwwIqJbGlHc9d07yEcvuycYP0rp3WOS2aM4IPP5VxOlvuIHRuD+ddqhDQjd2FedU1PWpsLdYzGsRABIxWpKqG1iQnB7j6VQhX5uRx2rT2h4IyvQZzXLax0J6irtJB6EDH5U+Mgng0pTBGGGCMfhTIQFLZ4wRWdzQhnDNuHTPFUp4jHGN/Q9q1325PGVNUrza1spccg4FUiW+hyGqZjJVCQSBz9a5n5kkYAE4rq9S27NuOetc4SNzMP8A9VbUzCZy1/8AMDzwa4m4A3EYrt9QK4fttOT6YrjpgWPTqa6oHHUKW0r7mpGPIHQ0pADKaR/9bjtWhmISc81LuPlnPFM24p+35OapCZnOy7iM1IuccUNGu8kjmnBcVRAsaY6nmrWM8HpUSDkVOKCojlAAp469KTpTl560mUSKT3qXfjtUWQBSbietQBZDZoP3cmq6tg5qUsWHFJjSBRxVwIABuxn2qsh+bpVoY/i6VBuP4Cnb1qNt+3k08YpjGgaH20YLbz1qyDufj1qshwCau2yAkZpMtak05CQE4rHW2a5QjH3uvsKn1C4MriyiBZupx2rUSMRosXTjmoNDGmaDTLfEabpT8qD+ZrJlia3tjPd/KqguxP8AWtlY1lummcZCHA/CvHPit4taBP8AhG7QkSSAPOwPRey/jWlNXZhXqKKPJPFGvf2reFYv9VEWC+/PWuUzkUYB5FPC+1ejBWPBqT5ncAMD60vWpCpxgU9FrUzFRcDmplFNA5qZFpopD1FXoY+eahiXNacKdKGG5ctoiSK6izhyAB3rJtIuhxzXWWMPfFQbQibVjCMAeldJbx9KoWUPHPFb8MNTJndSiTwx1dVfakROMVbVMYB61m2daQ6JPWrSrTUWrUa5IqS0iWOPgGriLTUXGBVlF9qkpIkReKuRp6jmo41q0voBzTuOxIg5wBVlRimRIx5birSJg9KmT0LjEekZ6njNWlXjimKBjmrKgVI2gVasIPlqMe1PUngCmKxOp7VMMVCtTDJNJCJM45xT1JP40z5hxT896YrEtL16VDuPel3Y560EE2QBTSwzUW4ng0ZA6mmkS0Tjjk08FKqB6PM5warlFYs7lFMMh9M1HnJxSniqsIbuJOKTjuabkUm7uBT5QJhilyKrbj60buetVYCfIHFIWA6Coi/vUTSUrEtkpcCml81CW9KaX96dibk+71pCxqsXNG8/jRYCbvS5quXPagE45NOwmSk5pppgbjNNyT0pWEkDtzwajL+lIaj6GpZaY/eelLvqDmgnjFIVyfd60obI64qtmkzTuBa3dqTdUAY0/vzTuQ0S5poJ6mmgijIFJolofk0oaos0bjSsTYm3UoYdKgB70ZNILE+cGnBiKr7jmnBhRYRaD4GO9SB8n61TDYpwfFJoC7vPenh8VRDntUgfip5SbF5XzUoc96oo2Kk3ZOcg1LQ0y6snep1es0Sc81KkvY8is3Es0t2ealR88E8Vno9Tq56VNgLqk9qkDD61RV/U1KG6Z5qWJosMSeKiY4Bpc4GSaqyljn25qkZyRMjcnDcHtU2RnI61mB/enpIQR6UzNM6SG9bZskAx6jn866XR9U1DSLtdQ06dlli5K9AwrhEkwAc8VajlbKhmJ9DXNUpnTTqH0XF4qh8QSJNI3kTqPmYcYA61694L8XXeiwfYLuMXem3LYYqcgMeCQegPtXxxp2p/ZplkHLjnHevWfC/iWe3866tSGjkAEkPY4/iA7V51Wnyu6O5whWhyTR9l2wspLiDUbXKjrG3Qj1VvQ16NYaolzmKfCSL68ZFfLngfxawuPsl1mSznztyeUPp+Vey3EiXEaskm6Fx8jDgqR6msqOMlTbsfLZnl7jLll8mepFQarPFznoax9F1AXUf2aVttzGoGf74Hf/GtNb1UlFtcjDkZyOhr1ZSpzipHz0qcotoWKR+Q3OKthuOOlRtsPtVYTBTtY9CRWMajp9RWuaCvUwYfSsvz/wBOtWA5613UMztoRKmXg3pTg5qlvqQSGvVo5mu5m4FsSY604OKp780of1rshmS2uTyFzcKXIqsGHY0u5q7IY5PcnlZZoqvvpd9bfWoi5SeioPMNJvz0pPGQDlYy9WZ7Z1t38uTBwcZr4s+Jz3Y1BJNRujcS/dAAGOPXp2Nfa24mvD/jP4V0mTwxc64E8u5t2RtwPB5x0/GvFzeg60eaHQ9nJsTGnVtLqfIcjgchRj2r6b+BE1zDBNHHFHLbsfndRiSN25Ct6gj+VfKUt4jRneAfccGvuj4ReGbfRfDo1CO6W6bUmE4dPuhCoCr9Rzn34rxcroydZOPQ9/Oa0VRafU9eopMijIr75TPhhaKTIo3CjnAWik3CmlhUyqIBxNRl6QsKiLCuOtibdRpEhc00scc1EXphbNebUx1jRQJC3pTS1RFqYW9K8yrj3uWokpamlvU1CWNNaVVypNcNTFtlKJKWxTS/pVV5lHSmG4GMd645Yls0VMubjTPMA71TabAyahE4x6Vn7ZlezNLeDRuFUhKD0NL56dCaXtQcC7kGiqAlP3s07zs96XtQ5C7TgxHvVVZTUyuG6da0jVJcScH0qQdqrglTUqmuuhPUiSP/1vh9B39asLUCAYzU618mfdkq9anQnOahXOKnXNTIqOxOp71YQ9KrLVxFHAqSkjRt8Eg9a9C0oAjaTjAGK8/tFG76V6Bopjdz5jY6bfc1E9UbUVqep6XBECknzElRg9s111sQ8bRyAkkZBFcppA+TBOeMV2FvCg+YNlgD7cV501qepAF3K4THNaVu2YD5ikgNjFVVWNiHzzmr0KxIpiY5yeoNc0jcsmJWVcZXio2tlEmVdhx+FWQo2/KcgUxl+fIPFQ1Y0RVLxbGX5lcfkaqzBPs4WRySD+VaxQF1PQ9/eoriJSu7upBoQM47VYkVkVc4K8n1Ncuyosx4yCMHPrXearJhVccqe3vXHzswfcTkcnpW8bGEzib+OQqVxz/OuNnDKduCce1d1f3IEkhc7QM4rjLi4d89811U9jkqLUo7dzDrxRIP3mO1LuO5RTmOSc1Zm0Dx8A07AKA0zzC8YOetKxxGMc1SJK7jLcdaXAzTUOXqRs547VQrAo5qUUwCnUDHE9hTxzUXNTIDnJpMBxoGMZp2PWgn86gBo681Nmol64qUDJqZFwWobivAqxHknnioQh3ZAq+sRxmpNQ7cCmFckYqwFAIzzipOA3SgqxGsXy8jk1pQwiJN2ck+lV4iXbBq4MqeelZSkaxiMEMedyjknPSoyGZ9neroI/SkVVDnI5rPmL5TnNfvY9F0ua9X7yjAz618a6xdy3+o3F5cEtLKxJJ619YeMIJXjZ5WHkqpO0+wr5YmgFxLLdSDYpywAFdlBX0PLxzMLZnmn7cdKePeivQseXyiAYpwGaTFPArSKBIcBmp0Umo0Xt1q5EnrWkgbJ4krYt48kelU4UrctYuhrJscUa1lDnAArqbOLBGaybKM5HFdVZQ5YcdcVCZ1QibtnFgAEVtomOKrW8YAyK0o1qGz0IIkVR0qwiU1F9fwqyiiszZIcidhV2JMVGi4q0gxQWkTIp6CrKDFRoP1qwq5NRcolSr8QBzxVaJfarygCmikiZM49KnUHGKiUHFTqckUpblolUHHWpRzUY9qlXrSK2HDP4VIuTTc9ulSKfSpILCYqXPGOlVw1PDVaRmS5xzRuNRZ5zSgnORVKIEu6k6d80zJoJ9KrlIY/dTS1NzRgnrQoiHZ9sUmcnPWmn1PNJg+lUoCbHg4OelIX7ZqJj6DNN46VaiS2SFhzuNOBBHWosgdeaXex6CjlE2P3dqQsKhLs3bFGfWq5AHs3NM3+1JkDtmk/SnymYu4/Sk3elJ60w0+UB2e1HbFNpm73o5QJM9qKZupd1LlAd9aTIHtTSe1MzxRYB+TUZxQTmm5qJAJgnmmHPpT81GSOhqXEBKPeg49aTj1qeVgPBpd2KiBz0pafKQ2S7qA1Q0Z9KLCJsmm5561Hu9abu4oEyfd70u4Zqtup26mK5PupQahzx604NQO6JM5OaUN61Fnjml3CpcQsTbsU9W96rZxS5pWE0XA5qVZATVHdTg1SyWi9v5qRXxVAOT71IrH1qANJX7ipBKQazw5xzUiuDxWY2zTSUd6sK2ee1ZaOOtWlfGCKloEzQB4z1qs7YOKnSRXXOOO9QzDAyOtQgkikzY5FKHPc1WdwoNRiQetbNHK9zUSbHDcZq/BKBgn5lrCDEjmp45jGcqcVlJFRZ1DTRYVpAeejD+tdNomtwRS+U6lBtzvXrkeorhrWfzFZU6gcqeh+lXkXcjGNDuHXHauWdO52U6ltUfQuj3sV3DHc28ohmzn5DkMB3xXvHhTxbbNBHBdsBKSV28nO0f56/zr4y8Navbx3MMMhME6uArfwn6/Wvc9Ku7a+nbny50+WRScDj0rya1Gzud8oRrR5ZH1PArTW6yWDeU33hznntg+9djo96uq22y6jK3EBG4Hjn1FeOeE9ZVAlnNIZ7aVcxsDyCOqn3r1mMCa3jvbKTY6jGT3+tZ0ppM+OzLCuEnF/Jm3LHcRZaIh19D1FUpZI7iINENsidqvWd7HeIOQk69VJ/l7VSupreVPLnXyps4rsqU1a6Z48b3s0UUnY5BbvVyO6aNdrnpz9ayJ7SdNzr+8A54PP5VX3GNtwbIOM561xqbTOv2Sex06X4PXt61Ot4v3c5x1rlhc4GMZBpy3YXB61qq7Rm8Mdes0bfdanecucZxXLx3YJGDWil0sgHXPetFi2YyoWNwOe9P31ji4fr6VKbuNTtZsE110swaMXSNPfijzKoG5QdxWZdaoluryucIMc1qswl3CNFs6EuAMsQB6mqUuq2MR2mUFvQc14J4i+JMjTmC3faiEgMO9Z+n/ABH0CwKtqEvlsO7cjPvUvMJN6HqQyWpy88j1DxrrnidLDf4RAMoOG3DnBGcjPGR718e+O/GHj3VSIPEF4WihJUxLgJkddwHBNfSV/wDG34c3WnTabdzOFmjKuUXgBuOCDx7V8neL7DwxqF0z+EdVeSB2JKXDHdz169a61iJpfFdM7ssoxV1OFmupx39rhkKPBhj3B6fhXsfw3+NOr+C0TTHtvtemO4Jj/jXOAdp+lcpo/wAGfHOv6e2p6XbxzwrkAiVRkgdAKm8Drf8AhXxQdK8WWqRRx7lkWbGY39R2NL95T/eR0PRqKlVvTep+hmg+I9O8SWC6jpbl4n9Rgg+h+lbW8+tfNWmfEjSNN/daXInljgquFXPrjpXpWh/ETSdSKx3Mixu3Q546d666OdN+7N6nzOKyicG3FaHpe/3oL+9U0mSVBJEwdD0IORSeZit5ZoeX7Mub/ek3VU8w96XzBU/2ndbj5CwXqMtUW/8AGmlia462NuNRHlgKYXP0qB5NpFQTTAD0rzauJZqoFkuO3NMaaNDhjWYJxn61BLLuPB4rl9szVUjRa7ByoNVJJh1znNZzuMepNVy+fYVnztm0aRoG4IOM5qE3Azg9aotKuODmoDISeTUm0aRqfaSe/FIJieorN3+9OEp6HgU7lezNHzWHIpfMyazw+OhpvntnHSgXszUM59akWck81k+YAKlEwqOZkumawnBbBNWEkwc5rGEgNTpJ+Io5zKVM3ftY6VbhcPyO9c8jZ61sWkinC9zXThqjc0YVIWR//9f4eiP6VZU1VjIHXrVlelfKyR90tidTUobnNVx1xVhBntWckXHYsJ2rQj61npV9M5rJsuOxetzhsV2WkMpkTd2zXFKBjI4NdbpDfvoyeMUmtDSnue16E6S2ylW9VPqMV1tsEKYJ5xxnvXDaE8cCkOdhkP4V1Vsyo6LnCk4/OuGZ6sTWiUPtJPTg4rWt4odrsDz6VkR/J5keDuXn261ZhkHmYQ9RyK5HubI24FQjqTjNEkSAD5qoJOytlD1qWVjLhh0pX0NEi0lujnk0tzbs0EgizkkdKzfPaLPNOa4lMRkDn5h680lYbTMC/gkkj2fcKE5z3rn2tyRhjXSXO7BDn72awHUeYEJ4px3IkcDqli5kYk7kfPPSuQkjVPunPWu21gvCzp94Enaa4eUbUwDzmvQpbHBVWpWx8w5pX6kDvTU7GletCGEhwQMcAU6UYQe9JMuNo9ac+PLUd6aRBSXIfNT96Yo5OamA5pgAHpTyDQODS98UANqdB61CBk1aVcLUyAAFFNbINT4A5xSFc9uBUXK5GRLkHJ7VYTJI2ck09VCrnYCasxFsjPH4VLZpGNhVUhsmpByRSHJPFPC85qWzVIeBnmhiW4HQVIAQd2OcUKuXAJ4qWy1ELdWDlj0Iq/wVJpyxrjA7U35sc1my0yRF3c5xT8YOBTYskn2qRsgZqLalLY8/8eMkWlNG/LzMFz3A718t6nMw3IemcD6V9g61DayWs9zcoHESMee2BXxtqT+dOdv3SScenPFeph0ePjtzLAJOBS4bFSgAUYrrSOAYBTwppQtSqOa0TE2OjXvV2NSSBUUaGr8KEmnKRO5et4skV0VrF36Vm2kXr3rpbWLpWEmbwRoWkRGD3rsLGLketY9jDyMiuqs48EGoOukjUgT5QK0EXFRRLxVtRUSZ2xQ9FyatouKjRelWV9fWpTNUOVasopzwKjRc1ajUA0pM0JVHtVmNST7VGoJzirMa+tSOxZQY4AqdKjQADJqReOvSjUtFgDPNWI8dSKjjHep1AppASfSng4pmRgAdqCTUsrccOTUgIFRA09evWqUSWS7yegp67upqMNT96jmtEiJEgNIW5qMv6UbjVWIZIGz14FKW7VCW7Gk3Cr5USyXd3pQ7dQKjBHagsauxNybeajJz3qIt71GWGeBT5SCfGKCQenNRk5+lIRnvTSAduz05oJP5U3OBxS7sdaqwmw57UuT3qMyc5xTS7etFiCXNN3846VCWbHJoL5/Cq5QJck8qab8w53UilaUnIyBRygNxx1pD606mVLQCZOaRW7Up/Kox3pDRLk0HJINRgnPPWkLHHPWgLEhOPamE8cd6QnPFNJ70WHYcCKYWHUUzrR7io5B8odKKQ5oocQFzmgHFNpM0iXAfk9qSm5oycdaVjNoUmmk5oPNNOMc0cogyelOye/NMNJmlyhYmDe1G7tUOTS5PalYVkTZozUQPpRupCsT5OaTdUW7PSlLdqBE+/HvTg/ftVbNG/HFRIC5vBGacGANUtxp4cj6CsmgL4f8ASnrJz1qgsmTUgf0NRYZqK54arKPnnvWWj561bR6GhI2LdlztY4z+tTTDKt9Ky45PlHY1po3mKeOOmaymupdjEnO08jrVPcFOOpPerV/kDI7HFZLE9AelbU3octRWZpRPk4zwasbhjmspH5welW0c8BqmYkzQVnRgyHDKcj1rfgvEuzuL/Z7kDrnCvj+RrmQw4zVuJrUj96WB9hWEkaRZ06Wl1cymWQiJum71IxjmvT/DWrzwRq1+ouDDhd+7HB4ySOeO/tXkNnqF5Chit5PNRf7w5H51u6brdpFMsdwWtskZKjIPrxXHXjc9GhM+q9H1U6TeI0Sh7O6A3AH7p9QfUfrXseia5LpbiMSma1uGB+blcHr9DXy7oksAjRrOcvCQCI3Pyt67e+a9w0qMxxx5QlXGQe3tn3FeJOHvG+Lw8akPePZXvTFi8tDtU4O7rgGtB9Uivo47S+G2XjbMMYP1rz7TNSeBDayMNqgAgnjHqP61rPmaJWt+dp4Un9BThUa0PlauBs7P7za+3XOm3IW6y8fY+3saoXmpzSA+WQOTg45xVWw1yGCYW1/loW4AYZdG79e1T6vZR24+22jebbtzkfw57EU0na4RoJTSkiuby4B8zJ7fT8qmjv8Ac2D8voa56O5MnyxPuHTB74oWfkiUhMflRdHY8Kux2Ed6FOGPNWEvH4IO059a5GO4zjaenOaufbBn5+DxRY5Z4M69dRYHnGDUb3Cqud34VzIum3ZPK9qhkvfmXJI7U4yMFgtTo2us/MHIJwME15f8QPFTW1t9jgchlG446E11gvFBZsg4r5i8a6ybiW4uFbIdjz2ANdEbHoYHBLn5pdDhNd8TSHcxbh88DrkV59c6zNMR5km8jkZ9qqaldAyM+QQudtcy16rkkKVJ/KvUoUtNTvrVDea9Vmzyp7+lNa9jDnIy5/Kuae4OeKYLg9K3UEjBSPZvCXxV8X+EI2g0bU5LeDOREzbo8/7p6VzOteLtX1/VJ9W1a5Nxc3Db3OMc4x06cVwBuCx55pRcNnrW0qrceXoQqcVLmS1PTdK8WQQOFuUO31HvXoul6/pt24FrdmOQdAWxx7V84C44p63G07lAB9a45UkzpVY/QLwX8Sb7QJkt7+Q3NlIeWJzjPGc+1fTVnrllf2qXds26OQBgfUGvyb8P+NLvTJViu3M1qRgq3OPcV9i/CzxrHuWxkm8y0uhugfrhu61yVabWx5mPy+FRc8FqfU7X4A+Xr2oW9PfGP1rnPtiONoPzUn2pQNxNedKpJM8FYc6kXIbpwagOoDoR+NYAvM5Ct+VR+cR0PBqo1mL6sbkt2CeOfSs2W4LtknpVMy5HNVZJlHHWk6hrCiXGuemDUTTt16Cs2SYA8cDtULzsRgGnzHTGgaT3KMMdDUXm+9Y7TdxyT1pnnBehqrmyw5sNN2HFR+cQeazhNnnNRmcdCaSkWqJpiQl+TU3mc81jCc08TNnJp3B0TY83HSl3A85rKFwoIFSiWlzkOiaRfFPQ5rPEu7AzUiyEHFS5mbpmpUqPtqlFJuOCamDjODWd9TCUTRR8jjrWpY5MygnuKw4pFUc10elbG6cnNd2BheokctbRM//Q+G0POauLzVFOtXU5Ar5eoj7mL0JgOeKsLkCok6irFYSLT0JIzxV6M+tUV4q7H0rI0WxoRdsiur0MD7YqnnBHHY1ylvIOhroNPPlv5g4LEYqnsaU9z2KyXevlD+Fs11kXHl7hnaRn35rjNFnEx54PUj2rvVh3WQlDZKkcd+TXFNHqU2aGZN83zBsdB3H1qa1jDyF3YLgEfU1C8WZHJPJABp0LAEJ35rhktTdFlcblAwM8VoKuxRnpWHvKNgdc1qRktGOaSZogkiTlm7mo/LU5VTwajlLlDg4qCOdh0PI4ouVYq3ceDuJDDtXOsMMSDkc10F0rNCQ3X2rnWXBIPXGDREiehyOsbHjZj16CuGm6kGu11Z9qkf5zXDyk7vUV309jz625XAH60hGWB9KUYpcfNgVpchizc7T6U5/uDHelkA+UegFBIIA9KdyCpjnNToOQabt+b2p4IpJgBxmjFA5OKkVSapMY1Rzmr0YOMioFjzxV5FULzUSY46sbjI5pQoIz2qyoXHSoiSufaszWw6MZJHpVgIM5qGHB59Kmz1xQUHA6U9euKizzipVNTIuIOWJ46CnKhJHYimHgnHWrCDaOTUSNDQjGI+maYVY8Hipolyv1qYhQADUAIqhVxQw4xUuMCoT3qU9TQ8+8fahFp+hy2qn99dgqAP7v8Rr5PnX5yTXv3xHeee9FmikyuoCgdAh/xrxTULC5smJulCljwO9enQPFxr94wj1pB1p7DmlArtRwMUDNToueaiUVbUc4p3JsTRrzWpBHyKpxLWxbJ0NTJlxRq2keK6a0jyRisW2TgV0douSPesjeKN+yTA3Eda6W1TjFYtqoBC4rpbZQRn0qWzupR0LyLgYqwgqFetWE61LOpInRatKP0qFBwKsLSuXEkWrUYNV1HrV1B0qC+hKgAq0owAMZqug7mrKmgtE6ZqdRkjNQr61IGNWgLgPpUm7FVFbvUgYUwJ9woBqHNOHNAE+6nA96ipwNAE+fSgMRUY5pe3pVK4mSBvekz703FFapED6XIFRnOPSmlsHjmrUTNsm3AU3J71BvPXpSbyTgnNapEtE270p4Oag3YGTSiXmixJNigsoqs0w6jikzuH1pgWNw6UwsOlM5zwKXGDnvQRYXe2cYpMnOKjO/PtRzkmgfKPJx3ox3qLec461LvbOc4FA7CZPpRnHWl3Kx64xSMVzgHNAmhd1Jk+lJ9aCc0AkIc55pPbtSnPY0zP5iixQHcBjPFN7UhYmkycVPKJjsmkyabnNJv55FLlDmFopCw60bhSC4tBozmkNAnfoNPTgUUUlA0Jk5oz7U3PrSZpNAPzxTST0pN3FIWqbEcoE8UmckUmc/jTGOTU3E4kuRRnPQ1Bml3HpTFYnz60dqgzShuKTQWJM46HFLvOeaiyO9G7PapcRWJdxPeg1FuB4oDY68VDE4k2acGNV91KG4rNoixYD08NzVXOKeGqRF5XzV+N8isdX71aSTacikx3NcMQvvmteFyYcdn5rn0cFt2cA1t2x/c+vpWMzQoXyHZyOKwCcEg10l6AUIPbkVyjvhzzmrpOxjViSlyG4PFWo7lQRvrK385PNSKyke1EkYG8ST83apopXUEIelY8EhiYbenXBrQUj78Z61jIuJs2FwEn+bAPXB4Br0TSr+z1FBE9mkhUEEEDj05615hFdCRTDIVUH+IjkVu2LW0GZFu9jY6qcVz1dTrpSsfRnh6w064tREpaGYYOB0XHpXruj6nLaoLa5kyAuFz0PofrXhnhjxBo9laW0S3iys/wB4tyx7846Yr13TLnStSjX7Jcjf/CDz+RryMRHU9NaxszsJJXR/PYhs9sdfWtW11Z7YfOS0EnoOhPeuNad7ZRFMxIQdD+mKemoM6BScQt0B9R1FcjhbUznRUlZnc31yk8G64YE4PlyL/EPQ+9Yo1OZbb7M0zeS/UViK4mQMG3bOxzVh48Lz0PBouyIYaKVmahuAAPLfJJ3BunPepo7mSUSFyCVA69frXMq6xn5clQenoe9XRI4I28ORjP8As+hpI0dFHRx3D8NwGH8qkE7ry+W4xWSs4RQjcn+lL9oZcgHnA/H/ADmnznPKgbK3LKoAc5IH5/Sle7VRh3HHSsKSUhAVOW96qyzgfezjPSmmJYVMuatdpbWU8oyrsCFGepPTFfO3iK2uHgCoTlwSw68iuz8XeLI7beiEH7OOOehr5t1bxpqE15I0Tjg7s545HWu2lTb2KbUEVb/w7rUfzJA0i8ncOeK5GaK4gYrLGyEdQQRiujT4jaxbux3K3GAMcVHJ8QprgD7ZbxzevGK9OEprSxwycWcs0gxjINQ7j1HFdJL4k0S5jbz7QIT1wKzjdaFIOIymeetbcxnYy2kxyeKaJgMEmtdW8PuOZCmDg5rrL3RPAJ8Ofb7XVv8AiZqcmNjwV6EAVaYjzzzyTjoDU6SmtOx0S3v5AEuhg9xiuh/4QaRgPKvVBP8AeXj8KTkkUot7HJpLtPtXrfw28TSW1w2kM5Bf95D6B1OeK5U/DvXiAYJIXHrkir2l+CPEtnqdtOQiLEwbcGyeOo/GsKrjJbm1KDTP0U0DW49Z0i21BTtZxhh6MvB/Wtp7pcYBzXhPw71uKC7uNFnkADgSRg/3jwwr1x5lU4HJ/SvFrROLEYO0zWS4I5qX7Yy47Vgm4wMtzSib3rFRMnhjf+0h+nGKY8wA4rGM+35Qc003LFMZxiqUCfq/YvPIzAsTVM3BJC54NVWuGUYJzUHmDB55602zohRLokGTg1GZcMAORVIuHHJ/CguoUfNirNlSLplAOAcGl84Gs8MAuaPNHO6gfsTREmSBUgkOazkcDgmnCRj8wpMl0tTREnr2qUSFhgcVnCQ1KJD9KgzdM01kAHNWUlB61lKxOKlVjmk0YSpG1HKOoNWRLnk1joSDxVxW3DNSnY5KlI0o5FLda6/RQN7YPQdK4aLG4V2+gE7nGOMda9PK3zVkjz8ZG0Wf/9H4djGatrVaPOM1ZWvlps+4iTp94VZGarp94VYFYyNEPFXY+lU196uRc4rIuJdtR8+PWuot8IASO9c7aDE2T6ZrpI2wAcZHpVS2Nae56JofE+48K64HpXq0G026MiHBAP4ivLNEjYpHLE3ysuQPSvS7CTFv80m4EY+hrirHp0ti357q5z82QMetRb/KId+ADk1NEoJjZyOQMGmNK3zDgj6VyWOi47zIpx5qHIBrXts7cYrNjYmEouAD14q7p164zGwG0HrjmpasXFlqXA+9wOeay5IwDuXvW7LLhc8HPTisuZmPQYNQzRFJsNGcD7vauQuJXMpbHJzx0rtnZtuW61yk6sbkueQTkCnHciocDrrZAUghjnIri5c4IAr0XxQ67s4y2B+AFcBOATkV309jzqu5RjBL57VNgg5FCrxUuOlWZNiOuMH1qP8Ahz61acfJzTQOFFAisBk4pRweBUhwGOKbxQA5UycgVYVSM5ojOB708E55p3AQIw+arkcZcY9KgVhnk8VoI6gZHANSzSIzawxxxUMo46VZMkgOOKgkB25PJNQaoSMfKM8fSpBg85qFQcYJqVSAKCh21AR15qcAA1F6VKuQKmQIAMtVteccVWANW4Rzk1nJmpfiXjmmO2X24q0mAuagCqWyBWbZaRJztBphHO2pRGSPQGmyLswR1qUxnAa/ZPunvnQM4bCeuOg/SvnHWg0s7ln8wgnJ96+rNcWRrFmgHzLnJPTGK+YtVgjjX5e5yfrXqUZaHl4yJxLxnPAo8o49KusoBpK60zzNCqq4NWUHejAqVBz0zTAuRDnite2HSsuIY5rZtc8UpscTctl5zXR2iHIrDtVBArpbRcsMVB0QWp0Nqp4PpXR2wG30rCg42jPvXQ24+QH1qDvgix06VYSoADmrCe1I3LSc9qnWokY4xU6nnmkzREq9eauI2fpVZF55qytCRTLII6Cpkbafaqg46VID60xpl4MD0p+TiqiyY71KJF5NFh3Jw1PDGq4fI5pwegLlkMc81Kpzk9qpBiTjvUyE07XFzFrcBxTwfWoAe9PBGc1SiTzFkU7J6ZqEHFOHNaKIrklNLEdqTPpTTzWqiTIXcTTD0607im4BFVykjeT70dBTuBxSEjtVCbExio2LZOBT846Uc4zQMj2M3Lc1OMgDuaiLt34pAxFNEMmLHPPajeepqIcknNLyB61TEIXIyfWmFye9K3XFMOe1TYBNx61MXNNUBlGaXHNOxXKICQeKeG6Z600A9qUKQcmhIkl3E59KTr7Um7HXvSErnjmqsA7I6UxuKM96buJOahoBtJS5FISMUgEJptKfSkoAXOOKTPrSEik/GgnlHUuSabnjNJjPNFhWY7PHrSd8Uyg+pqeULik8U0nFHOM03OaTQXAnNNJxSFh0qLJNIaQ8tzSZzTM5puaTjcdiXHOaQnHFNDHignPSs7PqS0Ge9Gab9abTMyXOaM561FnFGe9AEwPPNBPrUYajNZtDuP47UZ/Wo88Um45xUNAS7qUMajzS5qGiLE4epg+BVINUqmpE0a8MoOFPWuhtJVUCH1rkYSC2Ca3LScrNGCeARn6VnJFI071QBk9hXFTgiRh2H8q7e7BKZLcDpXGXZBfP1pQZM9ipvH0pwOOarsce1IJPT8Kpo59zTQ9COatRSSndsXHvVCN9w4q4kjIVZvu5rBlGlAsMpbz+cL1U811FjoGnTIk0RMwYdC2CDXJi9063TzSNxzyBnOa0re6+0SiNE+zBuQ3+FYziawZ6x4ch0nT5IbeSFZXJ53HkD6171b2Wn2cUbwABZBlcdVPWvIPBPhV5baLUNRUCLJKA8sw9cdhXtFu1uYPsoUIYwNp659q8yuj1KctLFxr/AM7bHI/KgYB9B701ZoCvmB/lBxjHQ1nOI1baSPlzyfQ1DnY++M4A9OhrlaNUb5u1jYAHaW9OavR3c2xcvvCtgj2Irk2mkQZBBz2PanNcyhCSfl459qhoux163nylZBnHercTeYFCtj0965GG8cYBGQB2PUVfF3wp3cDpjtUuINHTCXDKICCGPBPOKQu20l84U/jisFb0Y2jp6g44ppuI0Y7Gy3JyDmk4E8ptifI+U0Ncps6729Oh/KsZ7tcqSCOOcVC86SNuQ5I5HY1EdGDR4t44hki1e5glH7uX5l+h6V84amJLaaSNxjJIr6+8aWi3lpFcsAZYm2gj+4a+Y/GVpaRv9oEo3d69rCzV7Hn4qN1c4B5QBgGoTIBk9KimKK52sGHtVct6nrXqJHmFnzRnk0pkB4ziqRajcPWgC4QSAeuKUOwBOOTVHc2OuKGlfHJzmiMwL8d0UOYmMbeoNdRp/jLXNPAVJhcIvZ+ePauD35pyysPu9KJJMpSa2PbbX4r30SgSWqNn0OMV0Vv8XLMkefZyLnqAcj8K+d0kZh81XI3J4NYPDxNliJI+pdE8baLqeoLPps32e9UhlEnGfYV9V+HfEKeILEXAAWWMbXH+1jmvy7jmwQQ20jkEdRX2l8DNTvby1c3JZx5Sh2P8TZ+U/lXnYrD8uqOiFX2itLc+jd5XjrQzkqfaqJkKn5egpv2hgSGxt615vM0P2ZorKONxxUgmrL+1RdCQQP1pomLH5fWnzsHRNMnec9/amFjnrVMSvnkdOtOMyqMMck1KYezsS7+SM8U0yYHrmqrTKx+Q5FIjLg54qy/Z6FtZNw6YpQ4IOOo71ULqpx1NAlU8kkU0DplszIAc8mpVfHTms8kMMrUwlIxnnFNsTpl8Oc8GpVk9T0rOEvHNPWTJIouZSpmmJznHUVKspzVBGzzmn+YAKTsYypm1HIcc9atLcHGKyElU4A/OphL61k2c06RvQyA9+a77w0WZHP8ACMAfWvL7eTmvUvDAzaF+mTXr5HrXR42ZQtBn/9L4iRccVOtRLUo6Zr5Rs+7sTx/eqwKrxgZqwD2rJsokHWrsXTiqQOKuQniosVE1LXAkBPSunjVjGHUciuVi4IIruNN2yW5BPKf1qrGtPc7DTJHhNuA/yttHHbNeiWWVjZlbKnPHpXnenxqbaGZ/vhj0PYV6HpsUclvmN+vOD61xV0elSehbtPkkiQsdpJBxU5ZTJ5XPy85pVighMUhfawcg9x061LIojcncCD3xXGbEQmysijII7Vbs8nr1qDyBk/NjcPStC0t4kAZnrORpFl7kjmqkr7G2t19K09luwADEZ4zWWVj3k7iefSs0bEUjJt44rmL8fOD1611rCIoc9a568RFbjk1VyZRPNtZUuJG7g9a4ucAD3rudbjISXZkbs1wUhP3T2rvo7HnVlqIhAXmpVwahCjbmnZ44rZowLUqqEwKiyNo9RTzwgB5qBuvHFIdhhwTSjmmA0AgdaBE6so61KxPBFQAg84qfPBNACjg5HfpWjEW8sDvWft3rgjHpWkoHlrg81MjSCEblvmP5U13+UDuajbvjmhVOfapNhQ3JqRQxXHc0MwqzCAVGBQNIaqEdamUHGKXviniobNEhyL1FWIVJJxUSjJ9quW4rGRSLmAqAHnNRquTgVMwwfoKSPOcmoNLEiqe9UZ5gX2DnHWrfmsdwUVHbwKDvYZ9M0IGYuqwzPplysYxujYDt1FfJ+p3fnP5SjCxkj6n1r7I1Ih7SVG6MpB9s18n+IdL+yXTlRiNicV20JHn42GhxzDPWodvOKuMuBUZWu2J5DRWx61PGKNuKeBirTJLkQ6Vs2y1jwcnFdBarwCaUjSJv2gwFrpLNctWBbjpXS2IzzU30OmmtTbtxzzzXRwrtQD0rCtFycntW3EecVJ3wRbGMU4HFRZ4xS9elBoX4271bXHWsyM4qypNFjQ0FcHpUwNUVb8Kk3nqKdh3LqsPWpQR2qkhzira5FFgZMvvT8/lTFx3p/HakIep7CpRk+1Qe1SAn1qlECbIp4bGBUPQcmjcAKpDLQkxTg5JzVQE9alVjWsUIvK/FSKxIqkpJqwCeMVVgJwQKcSO1RE8U5fU1oiZC9aMZ+tO6UZFWkSRkHrSYGcGpMZ5NNwKfKA3gdKM040z60mgGkbj6UBQOM5pdw6UhOBQAe1G89KjySRnpTm4FMnlE689KYR75peTRtNSSOQ9qeRxk01Bg1MQAM1SHcjAxilJPTNIKMCmIU03JpSaZupNgHekOaNwoZ6gBOn402jdxSZoAU80me1IO9GSBQAhGKMj0oJ5oNACj2FISaTNIW/GgB34U3JPHakz3oJ9utABmmmjIpvQ5pNAMO3tTKkY+1MNQCGnpTTx1p9NJA/GpTLaEFGe9IPWiqIFpKTNAOahoVkIemaTOKKTnFIlxuOycUZpv1puQaiSIt3Jc0hOaj3UZ9Khsok3dqN1R5Hemb8cVJLiT7vWpVaqgapENKxJfQ+laME2HGeKx1Y9RxVpHDEA96ymEVqdXK2+zwvLKM1yN02WJ/GuohdWtA69CMc/lXMXaBCT0rFBIzGJ6Zz71LCAQ3tVVyc8U+GUhsEVr5nPYuqUB2k4aryW8sg3q+Mdu1UQpkO8DHvWjZWzyBmkJCrx9fasJDSFtA8lwIo497ngY9c16Vonh6X7fb3OqthSdwC9sc1zX9iiOKO9sW3Mx5Vf4a9N8GP8A6U+m3gY+Xh1Ldcd8VzVZ9DqoU1fU9otobe3jP2STcjkEDPQEdavRzLjJ42fhWZbW4eVbezZcqucscdakuIJ7eQRzxBdw4IPevNqO71PSsjQJj8zecqScexz1pjOjsdo+RfT271RWRVAL8r7/ANKl3oSVU/MepHQisWgvYt+aqE4znGKlV1PKnOfXis8yBPlYYAHWgSHbxwMZz7GpaNEaY2jlcHvx096lDSjDMDHnuB1rOjYxgEfMverAedhjqo9ux6VPKCL6tv4YYP8AOnMyg/MpHfI6VQ8xeNxOPrzTTK3IQkKOx6nP9KdgLzXEPQEk9qhur63tYhPJ1xwBVCe5SCF7hwEVB+teZ6tr7SM7SZIboOwFVGlfYic0kamta/u3ZYHfyF9K4e50aw8RW72V1wHPysOCprkb7VczFtxZucA9qyZ/FZtVKxvhx6V2U6MjhqVU9zVu/g3q/wB7SbyOdewf5T+lc3dfCvxxbj5LETn/AGGFT/8ACxNShUtBKWx+eKuRfFfxDGOJTjBruhUq9UcLUTi7zwd4vslJn0e4GP7q7qwJrPUrfi4tJosf3oyK9YHxg1+EFvNLsegIyuP6Gnn4u6pcLunt4jtx1QHPrWrlJ9CGl3PG0LO23BDE4G4EVaNpdfZvtQQtHxyOccc16svxHhuZgb2wt5Iz1GzB/Cvt34N/Fj4Oaxpf9h+K7Kz0+8TADyxKEmxxnIHBHvXThKSqS5ZaHNiK3s481rn5f7jngEfpUkRUnDHFfXP7RXh/4T23iaCbwOYo4Jo8yLbHdGsm45wO2QQf/rcV8+J4Qs7ld9rqAGecOvNFaChNwuVSm5xUkjk2dFGF5pRIe1dSfAWp/fju4znsaePAerdDKmfUGspSSN/ZsytM0+/1G5jSzh84bgDg8c1+gXww0OPw94diBYNJcKGOO3oPwFfIHh3ws+jzfbJrktJ02qcKPevevCfjSXSitjfsTbNkB+u0n1rz8ZK6sjtw1K2rPocv74FIZAcKawoLtbiMTW0odTz7EHvU7XIC8Ec9K8VxZ6KijUDd+lHnAthQMnpWGLptxyDg/nSm6lB3KOR0HWlYrkub/wBodSAMe+aYZVbHc+tYxuZD871JHdMw2qMe/pRYXs0awcA4I60vmcEVmGUkFjyemab5p570JsORGorrjB60ocdzWT5ncmn+Z78VXMHKaoclQQeKdv8Af2rMScgkHpUwm3dO1K9ifZl/zTkAVOpPGf1rMWXPB45q35oGMHijnM5QNDeFGO9So4K88Vmh1JGKkV+q0mzB0zURgO/JqxG/4VniQemDUyPzSvcwlA24ZBkY5r2Hw1/yDUavErVsyD0r3LQFC6dGB6V7OQ/xz53OlaB//9P4kWpF5P0pi09c5r5Jn3qLCY4qZRhqjTGanAFZyHIdVmE8jNVxU8Y5pRQ0jUicgg109o3ynFcpFgtg8V1Nlt5z6VRpB6ndaBIk9rJCDghu9ek6YwxgY6fyryzw+Yx5sceQ2d2a9J06ZMjf04FcVc9Ck9DcmwYUBPG7ccUjStkK6nHr2q/Mtotq685IquWjwsbJ16HNcdje45XZsAHj/CrtvuY4znbWfbNFGxDg4Hqa2beZMnA4PWspGsGWkjY8Z6U0QAMc9anaZEXMYyT+lRiQdcVmbJkTQx5+Y8e1YF+sEWWDEmtuZiIy3QVzV2GbdzwcYp2HJ6HIayYfLZjyD1HvXmdztEhA5r0DXsLx6jpXnUozIWxXoUNjza4q4YbcdKG7ADFSoAFz3poHcit5HOTAblAqvKhXirgXpimPGzcsakCiOaXbk89BUvl4PFGOuOaAGKARVgAbQKiC8VKAeMUASr2xV+MAjB44qgp7VfQFYwT3FRI2gQY5NSBRSAZPPNSDFTc1sJircH3cVWNWYOlK5SJDwaUdqa/Xin9gazkyyZO9X4RgAd6ox9OnNacacgioY4jwOeaeBjJxmmnhiKkAJXHrWbNkLGVyRjmnDr7UsUICsc8mplwEwOlMXUx9SBa1dfXivDPHenTwwQXT8xodpI969xvjhjivN/HqfaPDc2z5pA64A/WuyhsceKWh89zAfwjioMA1O5G3IqIV2RPFZDjHelHWnEU1etaENGhbrg1v23VRWHB1FblqfmBoZpFHR2/aunsl4ArmbU9K6G1Ygg5qWjqpHTW64Bx0rSjPIrKtXytaUZosd0S9ThiofMH5UivluvWkyy4pGOKnDdqqq3FSoec07XLLYz3qQVEpGKnTHWqSGWkJ6CrKnvVRW44qwrCqaBMtjAGTTweOBUANShiKLA5aknTtSE4NR7yRTS1NQFzEu6l3ZGTUG7rTs5q1Gw7ky7idxqyoFV0OOBVhRTSAlWrAPeqwz3qYY9a0SAn3A9KcgJNQqQMYqVSKaJkTHGOTzRjmmZPanZya0JArRg08U1unWgCJlJ6Uwgjmn5JoIpMXKQ5OeBT+vWnYNNwAfrSBIZuJ4ApTwuD1px4OaYTyM0xgu3HXBpeKDt6mlAj64pWFYAfWkOTz2pc+g4pCTQTYBxT+KiOV60g9TRcLEhPFQmj2poJ6daGFheDTTTqQj0pCG0A8UpBBwKQjigA5FJk/SkJ44PNMNNIB+T35o7U0NxRTsApb1ppIB5paY3Bz60uUBdw71ICDUXH1oGRwKkB5A6mmE+1LuNHbNADeo5pjHHBp59qjySOlJoBCB1pGAxk9qdTOFJJrLqWN4H40HPBpcjoKSqJYnGabnilOO1JQIXikzmkz3pAetZgBNNpe9N+tTcTVwFGaSmg96zkS1YeSajY+9L2xUROGOaViWxckd6kRzn1qCnK3NDRBoo2amj5YDpVJWqUFmHFZyQ0jq7UBYiCe3IrHv8gbjg54q1auxgG/71Vr0b48ehrGxUkYDjnNIBmklPz4PBpkchB5pydjl6nS6Z5ZzHIuQ+BSSFtLugJGLQP/ACJ/mKWy8iVVUHHpj1roTpaSotvesFUnh89+2K5ZM1SE026lstQG1tpfGxuqMD2Ir3DSrmxvjBeQQC31AAfKx4k2f3frXjdv4cvhcQ2sf71SRsft/wDWr17TtGudQu3+xRANDt27jtGQcMQfwrjro7sPFHo1tb3F4qXgkRC+PlY7SD6Vbew1KAETK7HPB+8MVnacPMf7HcMskhIAOcfUfX0rS1NLnTIwlvdyEnDFMkrjpx9a4Oa+51OL6FBJZFO2ZRyfyqUSbSEB+Yjj0rLW5nbOSpU46ipkkJ5U9KLCdzQWaTbgjI6GnDA6dDWd5pU4yVz1qVJcKCh3eo9BWbZcS+jS/dBIX0qQzzOqgscr/Eew9D7Vnea6kgOfm5GOxFTLOzMWIxx+tK47GhHMD1QM2eDnHBoMsXylSS2KzGniKlJxgdOeOKDcQKCx4C+v9Kajdhc53xbqphCW0fCgZYe56V5BquqnyeGGRkZ71f13VTdTyyDLc8Ent/jXm+pXwG+MnoO1ejRp2PPrVNTKvtQLyOqvnHT1rn55wnzSH8KjNxvkkdqwJbhpH3k59K9SnBWPNnM1TeAngcdqYZ8jp1rLWXHJNI1wAMCteQycjU+0MByKnj1GJBgjJ9q51rhicE8VC0vII4NNwDmOgk1Ak5T5TVuDWriNVAbBU8H0/wD11yXnE980vnkYqUmmSdaNUmDs6vy3vnkfWt/R/E9taPjUIiY8ggp1H1FeZCf0OKnS4A4POamcW9y1O2x9haKNC1aNZLW48wsM4Dcj6iurXQ9MHVmxjsa+IbHVrvT5vtFhM0MnQsp6j0Nd7ZfFLXrVPLlcXGe7CuKrhZPVM64YqKWp9TrpGloR1IPvyae+jaSQdrlT1wG/pXzCnxW1+GUyIYyrH7jDpW3B8YtQ6zWiDvkGud4SobRxcT6T0jU73w82xpDcWL8EgfczXqltew3Uay27blYAgjoQa+L7D40QrKBeWZMR4baeQPp3r3Dwj4qsri3jutNmEthcHOM/6tvQ+lc9bCSS1O2liIy2PZBO+G3gZFMe642rye//AOusszsepHtTd55YfjXBynSkbYuoztUnBxzmpVuQvbrWErqDknGP1pxlyeGOaOUbRvJcnPLY/CpfMz8xI/xrn0mwDk7jUq3IX5guSKVhWNoSlsHpT/Mx3zWcJmYZ24p4mHrRYRoCQ+n/ANapkkweDzWYshIOB0qXzgeAMVDiKxprKcjPNWRID0rKSQMatxP1I/lSYGmHyvFP3dOaoq+M9qmSRcexqSOU00bA5NWA+BkCs1GyetTiY5we1NMwlA3bAu8g/kev4V7/AKMhjsIuc5Ga8A0sbpFYHhmAFfQ1iClpED1217mR6VGz5PP9kj//1PiZakXG6oxUnNfJSPvLlpPXFSioYzniphUDY8cmrMQOeKrDrU8RO7BoRSL6gjmui01vMkCZ5INYMa5rbsl2sD0xULcuJ3Xh3HmTp325H4Gu70uTC5k4H+BriPCPzam0DjKyRP8AhjBrvLZTFMqbcjBrjxJ6NF6HRXDCa3KqOSMginPGyog9hTFZpIipQsPbjFXUR5o14zhen0rmsb8xUhjdyyNzjmtaN24B7VDFEOjd+Ota1vCn3cA/U1hI1ihmDs64FRjcoUA8k4HfNWhEvOB096eGQgMoGTx9MVNzYrywnyn80ErjtXMXW1cFQcYPau0kuHhhMhIbA4rlbmUsTnjOTTQNHn+vSOcDb8o5Brz+V2aVj0Jr0HXHLMV9BXn0jZkOO5rvpbHn1hUJKmmg44anIMKTUTZzzWzOYlMnYU1j65NMGe1OP3ee9ICMHOeKkj9c00A9RTo8gc0AOwOaCOOO1Hf2qQYPTmqSAdENxz2FXzkRqo54zVOHvmroQqq49P0rKRvAjAP0pw606hF/WobNQbgD3qxHtIpip0HWrKqFGDUlpDWAJqRVyBmmMQFAPUmpEfPGKmQMtW69R2FaCg9FNVbYfIfc1cXdvI7YqJFxEwd31qbA2gGolPzfN0yakZwBx3FQaoeh7CpcYHNVkLbjnpirOeP50DMe+QupAOM968Z8WwahDb3LzH9yn3QD1yK9puz7cCuJ8Z2clx4blnhwfIIdh3OOg/OumByYjVHzEzAqPUimrxzUtx94nuTVfPFd9M8N7j2ANMUc59KkUZ60BTnFaCLsA+YVs25wwJrIhUZz6VrwjmkzSCOjtn4Ga3LUjdWBa44yK6C1xTOimb9u2OFrWR/SsKGStWI+vWg7VsX1bNPU4OaqbqsKeKmSKTLqk4qdBVWNqsqcHNOIywrYNWFfNU19alQkGtkkVcuqasISOlVFYZ/pUynjmqEXFc9zTgSTk8CoFPpxUq5PU0CJgc0ox3pgPZacM96pISYpx2qSMU3FPDEH2p8oydelTjp6VXB6YqYNjrTNCQZpwqPdTwc0wJQMd6lXk59KYoHU1KPamBIOlG4DtSAhfxpcZPSrIY8MO3NDMMH3pgpCQOtAmO4wKQ800kGm7wtAkLk0maCwpCeMipYxGPFNznmmtx170GqAN55FJmm57CjOR83NAEgJHSlDnvUecdDSZxQBKSStMJpu7mlzQAZzxQPagnFMoAkpCcUzoKTnrUNENDs55NHFJTCcmhCFPrTCDmnH0pOtUgGA4zxzTgcmmlRjNCk5waYD+aa2M8inUn60AR9OnSndelDY43U0kA8UmgJO/wBKaaTcKTcKgBD0pu8807Oe9MyBnAoAXOajbGcU7OfwprNzxUNaj6EdLzRSUmIXrSGj6UUANPpSZpTTaiUQCmnPSnU01kAlJ7UUnelITFNQt1NSHpUR/OkjNiCnDrUfenUSILQbpmp0bJwKz93fNWoHxID2qHsNHSWhzCCeo4NZt7LtkYdhVy3kKKw7NzWVekMSeprF7ltaGW5yxOec80KRnBphwAR2p0TBWKv0I4PvUyZzcpdgYIwUNjP866S2upwEunYMYzgIx4OK5hoTJhUNaMEFysbJId4j6DuPUe9Yzjc0ierWGvx6ZIlxeN5iyYKxLjjPpXo+i682tXQRCLPaARzk8+o9q+bo43tp2ypcBQw9ga9W8LXWnecLy5i8x9uMZwR6GuKtA7cPI9g8loLhz5gdowWHqQOhrVsdemgeP7TGJ4shth54781kxXsmowpNbogBG1W/i9OaiubK5tEVC4Jzg4/lXntana2dPefZtYuXudOH2cuMkdRn+lZFxby2zgSEDOcYOc1lxXU8I2xnaCMEetL9qkAMK5ZOuD2zRqTcthpFBDtvJOR7D0p6SiNmON3YH+lUY5f4OSal81cDcuRx+BqWhJl4XEPIclN2Mf8A66kM4+8rcH9e1Z3mwHIbryacqwYIDBs4xzjiocSrl/ejKRId571iaxeeRp1xIAU+TCH0zxV4MqqpJ29hnvXMeK7x00SYqAC2AfwNa0VqZylZHimpXbZYE7h2ri9QuMgnOM8VpX9wd+WOCen41ydzNjfuPGa9mlE8irO7M24m8u1nbrkY9xWF55xxVh582tyGOflB/I1hGauyMTkmzQafPJ5qMy1QMvNM80VRm2aBmNMMtUDL3phl45oEmaHm8U3zuMZrOMmaYZacR8xpecKes5HFZJlpRLmrYrm0LjPFSrOemawxLjvUyyn1qLLoPmNwXJB5qZbntWGstSiSkK5t+fzkdK7Pwb4un8NaiNpzZ3BCzJ2x/eA9RXmyyntVmKXkDvRKCkrFwqcruj9KPDurrqenJ5b7yij5vVSODW4JMcZ5NfMnwX8TtLaraXMhJtD5Z9drfd/wr6T3ptDluW9OtfOYmlyyPo8NV5o3LfmY7gj3pfN/vD3qj5sfUnpThIDjBALevpXM0dFzTSVDjfwTUu/cB8uMcGslJcnI4NSrK3OWqAaNQSsVweMU3zfmx6VSEmRxxT1fjOQcelA0jSMmfvfpVmOZsc81kCQnkHiplkx92paG0bMEoycjntV9blVXjOa55ZGU5A6VaEg6k5NQ0RymwJ9xHNSrNluOgrGEgPGc1OswBwKlg0dBDOOjVbV89KwY5hirkU5DDIyKholo7rQ/mnTtu4H1r6Jg4gjz/dH8q+dfDI33kTY719EBsKAOgFevldXlufE8RfGkf//V+Jgc1IKjFSr718o0fdXJY+tWBVZcg5qwDnpWZZIDU0ZG4ZqGnJyRUSGjctu1bVuSDWJbdBWzBwwNSaxO78IyKmtQ7zgOrrye5HFejlsu+3jbx1ry7w4qtqkZlGNoJU/7VehKf3jHqGH5EVzVzuom1a3EmHXfwcfpWvbSkwDB5ANcnbu6ThhyCMEV0NvMvlKuMSDr6Vyt6HQi4xEagk9qsJOThgQcYGaypRcMhMSlj6Vatd5gXzEKN3zWEjeDNgyfKDnHrU0bfd2/MM/zqrGspXbtJ/CpQZdo8psFTnGKk1TLczMts7Y+UA1yM7Hylk7OTiu1dBJbSK3VwRz7iuLuYSsSRDqrEcU4hNnC63J8sjnnjNcFj5jXoWrWzSebF0yuM158Qyvg1309jza+5IpAGMZqJs4yeKnHSo2GRk1q0YAuAmV5zQORQCMcdqiJIY7aAJgRnFIMEcCmICcknNO6LkUwFI4DYqVCaNvyA0xTkfWqGi5GMNyetWwMYBqrD8zY9qsscEfQVjI3jsHGSOtSdulRA9zS7jwpFSXckEoj561Ikm8c1TflutW4Bxk1FtS0xT1xTQcGpG6jFQg5YipZRtWzfuNx61NvOaghyqAZqRiM4FZyRcSeLO456VYcgDpiq9vkg7uvWpiCag0Q9Sg5Y9qa8pZcRj/9VNCDODUu0IhPaqiMyLnzH5NYup6a1xp11sc427iB0+Xnmt7AkyaaflhkRRwwIIreBlUhc+NdQ4unA6ZNUS47VteKbCTSdeuLRm3g/MD/AL3UVzm/NehBaHz9RWlYuqw9asIwJrLVqtRvzxWiRBsRYzmta3ySK5+KQk4rfteSM0NGkDoLVQSOa3YlxjHWsS09q3Yj60M6qZpRE8e1akLc1kxmrsL4PFI3TNZferPIAAqrGRgGrKsTTaNkSoCDkmrYaqo96kDYpxGW19zUqscmqit61Kp7itNwLatg1OjA9apg5FTIcdqSYGkpyKeGxVYMdvFKpq4xJbLatU6nPWqyKM9anAq0ESXNKOlMXrT6ZRIpz+FPVs8mod2M0q0FxLIYVOozVdFz1qwpxxmiwywnAHep1FVEcA1aV93SqRLY7jNOIGODTRgdaC6jrVIkUCmkc+tG5RzTC5PStABiuPSoTxUlIcYzQA3k08HNM5HWmk4qGgH559aN27PaoiTjOaaTikBLk9KQ57UzJ7Um40AOHHWjI9KbuYnmloAcAOtHPYUuQOKbmgAINNPFLmkOKADOBzSE5ppxSHB6UEyFpKCfzpu4Hg0Ei7cUuPembqXdQAuMe9MbIOacSM5pm7rxmgBwYnijoM9xTDnvSZIFADmJYc9KYTinA469KYTn6VLYCFSeRTtrDkU3pQGI6VIBk9KSjnvR70AGQOtMpTnrSd6AENITiim4zUMY760Z703p1pPakA4mmmg00ntUuVh2F+lIabRnnFZCaCj6UUnHWkSxp96jYVMelQnJ5pIgipe1IRSZpMzHHnFTxc5BqqTipVOGqGNHSWzl4Q3XsfwqjcYXJqS1cxpx0Paql03UnnNYSepo1oZbNjpxQjDv+Oaa4P4VTSVt+TyO1TJmCRqxsVHy8VsafdzSKtsEBPIB7mqtrLZNGwuiNx9OtXIru1sg0tkPMYgYJHTPWspMtI0tKFxJcPxudVBGfQdRXX2UF9qF7G9hHsZ/lVl+7x1zXK6ZcXNzcC5s9u8fMynj2Ir1Pwtf/YLo2qophu8gjupPXFYVdjopqzO+t7WDRXjCjzJGUMwHQnHJq4b0zKzFi6yds8qRTLD+zI7IzPudhkDJ5ABwcVmu1uZ2a2OIz0HevOaOzmLzMV+ZiGHqO9J5qbg5J59KqR3CFDG/yg9D/jT8gfcO4etQ9gTLQkXPOCQPp9KmiUTHEbbT3zWeAGOMZx0pzJ3JI6cjsakdzQaN0OTyx7n1qMKd+JcH39/X2qmJZF+XllJ6k8ije+Synvz7j2pWETNITJ83JbvXFeM5ZF0Vo2OfnXB/Guteddg2tg57+1cR47JOhStuH3huH9a6KK1Mqq0PA76c78t19K5a5nZyy54rR1GYk5PGST+dc1PNgnaea9emtDx5PUiJz5kX98EVz3mZGD1FaLTlJFZT0NYlyfLlZR9fwNdNM55k7SjvTPNql5hNN8w1dkZl4y0hlFUt/qajMnc0uVAXfN9ajaWqJlphlPp1qlTFzF3zTUgfiq0dtcSnIXArct9OiX/Xkk+3ArRUmyXIpBsjIqRX96bd7beQIp4IzVMS9RmspUylI1BJUoes1ZKlEmelZvQDSWU1Zjk4zWSr9qsJIc800wZ7L8K9UNrr0kJ6XEfGem5Dn86+4LeVJLaKQHG5Q1fnn4FneLxPZhM4feCe3TvX3rolwZ9Kt3wG+Xac+1eRj463Pay56WNjcGPHOenpThuzmq7SMTtI2j1o4zkvuHYivKPUuWt4U8U/zDnPb3qqZQvCfypVlJGcYoC5oiQ7SacjKfT6VQ80soAOM4/GnKwXr/8AqoaGkawfC9Mn608S5H3uRWWhz/8ArqwjlDxzmoZRqqx6kipjJ3H41mbzj5jTvMJ4JqWOxqrLx8pqZZMDJrKRyB1qyHI568YrNsTNNJjn5e1aUcu8jBx0+lc6HPX9KvR3AGAKhisereD/ADGvkjBzkgj2+lfRCH5cGvnL4cZl1NnzkJg4r343O1jit8PKyufE8QK9VI//1viYVKtR09a+WkfcEuKsp92oF5qdBgVk0WmPFSIPmFMFSLwRWcjRI1Ye2K37dehrBtxkZrcgJGKRpE7PSnjSRdx+bsa7yIqoBz1rzfTzkg967eKfYih1yCKwro7aLNtT+9VlbGPWtuIlhnHIPauZh3zRCVFzjqDx0rYLSqFCrtHQ81xTOlHS23mqMHnPr2qw8bOfmfNYCyTBVZGII61eilklHztmsGzZHRWwkR8O24KBj8aeyL5r/wB1h196y7R5N5Dt2/Sr0LO0jpuyMCi5pE0JRGi7S2Rjk1zF0kW1M45JxiuluI125fsOa5q4WMODkYXilcto5DUDFmQDnAIrzSeJVc54r0TWfKjdij8H09TXB3ChiQDmuykzgqoo8AfWmFTj1qbMYHzZ5qPK9a3OQYI+Migx570/eMYxSZzVKwDVj2HrmjjBzTs9ajHJqgHM21MULjAPrT2TKZpIxlRSuNF22G3OfSpl2gYA6cVFBg5A7Cpc4OTWD3OmOwvekYfU0gPFNYkAE9zigYsmAcZ5q5GAiHd34qsI1Zvm5q3EN3XoKLDEJGc9qYq5k47c0v3j83FOhX5+etQ0WmacbZXGO9OY4PC0KpVAwGfShuDjoazZoi2nyJz1qQNxnFRRkMvrip94yV9KzaLTEG5myeKfMQsRB6kU0N83FLc/czQijIVmXPFQyuxwBxmp2J6qNxz09aqT3KCN4mQoxHfmtYshvQ+cPiJEDqizIwZfmy3qc15tXp3iuFZRKhyGQ8Z4rzV0KNivRou54WJXvDQcGpAe4qKlBxXXFHOacBya6CzYggHkVysDnOK6K2fBFJouB2Fq4FbETk4xXO2zHrW9b9jWbOyBrqeKswthqpxkEVci25osaxNhDwDVlDVJG4FWkOfwqmjctBqeCDVbdUiHPSqSFctDNPH1pgz3p4X1pFFuMVOoqCPtz0qyvvTAmXNTAYqJelSg1rEhllABU4GOaiTkVKBiqCI5etP+tIAOtSYBoLMyd5WlATpVyJhgBj0oaIlwwpyx56cZpFovR9KfigBQoApasZIvJzU6k9qgUjvTweeKEJlnPqaiJHpSbvWkz2qokCqvNSbcdaj3DGDTd1aASfSm5FJk0wk0APJzUbdaQtikLEDjvSaAQtgVGSSadTTUAN5zS4NHNJz3oAkWn5C/jUa46UpIHagB/PWlJAHvUe7NNzQA7J6ijnvTM59qa3oDVaASnrTSMcjrUQJzyaUn0p6bCaDLZ96A2KTcM0hGalqxPKO3c5ptJz60YPY1NwsO6YNHU0nPftSd+tMQ44zxTM80p+tRmpYAWoyRwaQ+1NpASUUwk0Z9aAH0mRjNGRRmkAh55ppxg0EikPegBD7Gm0UVLQBSHigk0cd6goQk033oppzWcihSabnP1oz60lQA7NJxTSQKAc0yGh5Ipjeg7UbufpTD04qXGxkyMnFMJoYmoGYCpZCRIT0qZT0qnv7VOn1qJbDS1N62wFGeaq3ZAII6VYt/9V61RuCSxzXNLc0ZTz8pHtWWCQcitEkqCaowbWcbjjP60Mxeho20LMN6gNkgYPWt3TzY3J+zzRtFKuBwf6VkwjYyyxcd811tkba4RZZ4wJk5yOv41hUkaU1c17OzsImDRA4k4ZiehrpbERBlfJjYHg+4NZaLHbQLNFHvSVeno3/166nT9ImutPF7cKsAyQM9D6GueWx0RR3flI0UUsHIl6+obvmqoWVA0bDoSQfTNVrKe405EnJ85XyHB6Z7H61I0zNtIJzjIz0IPaua2psi6VI5IyD1p/mgAAg4AxmsoXDAne5OPfpUyTEMwJyDUOIXLvmgYcjI/XFS+YVJAJK8k+9US0WcMcD39acJkjXJ6ipaKLQKjJlwwI4xznPNN85Mbo1YDjg85z0IqDzmYB4zleP0pzydyclvyqLCbIZigI9eh9q5DxkDN4euVBG5cNzx0PSuonl35ITpwSO9YOtJJc6VeQsQcqSBjmumhuRVeh8q305+YkniuflkHJPetS/bbI6njnpXNzSnNezHY8WSI5JMcHrWbesWdZfUAfiKklckZqs5MsDofvLyK1ijCTKhem+Z6VW8wZwe9BbFVJamaLPmnFRlyagzSq4U1UUJsvRRxn5pG4q8kttHyi5x3xWOG3HGc1oJGkCebJ064roijOTNVZwq+dL8q1Vl1jcR5HyqO571zd1dvcNycKOgqsJCerVbnbYUYdzau7s3Em8+mKgSTBrP3d6lV/WsJO5ZqpIDwDU4eslHx3q0r9KwNDTR8nmrcbCsdJK2LKCa8mjtbcbpJDgD61LXUDvvASPP4igZQdsYJJ7CvuDw3OF0yItnlmOR0JBr5o8L6Pb6OsMaKN2AXb1I96+jNALJpVsQMggn8zn+teVjXc9vAwsjqFuC42888/Sl81scLx6e1VlnwQMcY6+9K07bgf4ew715J6TZZEuPWpBKcYzgVTZy/J4pyOnQ8H86LArF3eQOu7P5Yp4c55H9aqb0JxzgVIJlzjd+FSDL6OR/tfWp/MyOeKpB16A5qUHA5pMcWXEOB7VYR6pq3TualzioaKLysRxVlDuGR2rPRie1TK5XpWbQF/pTwCehqor8cmp42znFZtAe4fDG22o9w3Q9PqP8a9jDbjXl3gGOSLSRK2PnweK9CjuAOTVx0ifFZv71Zn//1/ienqaZTl618u9j7lFlanXpUCgmrCjArKRURw61KBnvUVSL1FYTNUalrW3COmKxLcgYrdtzkgZ60omiOp08hZEAXPrXa+TlVKjJ9q5LT4Iwwd3xtxXXW86I+6P7n161lWOqkzcsRlArgjGe3etZ4GbazHBArK0+8idxjnByRXUQTWrPjIwPTmuKZ1IpqGeLag5H5UieZv2sAPpVyR9iloPmGOmKbHukIOOT2rmZvEvQHgbhzjrVy1YfaMr6dvrVO2kIUsFJxxg1Zt5pY7kMFByCCvoKDWK1Nu6wEORkYNctOMpnGcGumusvCxHTbXJyyN5QHOP5UDmchq4Us/GPb0xXCXBAY4ru9S+Z2B6MTzXB3W0Tsg6LXZROGsUuoINMPFPAHUmgbTXQchCASc0oGadgEcHNKpA96AGLn5himgDPFSjByfWkIANADieBSJjPFNLALg0inHagEaEA5YU/ODxz7GobVtxc+goAJ61DOiLHg8etSDBxmq6qdpUnip4lG4L3pFWJ8jPHWp1JVee9Q5Tft7ipsnn0oKHEliD0FRgYfOelNcknbzk1JHEQcnApMcTXygVAP/11E4LNzxUq4EYY9RUDP8xbGcmsWbIsRnYmB1NOQ7iTnJNMBGAaRW2c1LQy4q/Nmi7YCH3qskv7wCnXJLAVNtR3IovLEffd3qjdvGkM0rLhY0Y5PsKuRAHFLqFp9rsJoFO3epGT6VTdhHz7r1zBf24LcOcEHFeUXyhJWAr6Wu/C9lfxrCw2kDAI4x715J4t8Izackk8WZEjJyf9kCvUwyZ4+KjqeaFucUbqqCXPNSh8gGuyKOMtxsc8V01kMhfwrl4ZkJA75xXVWODjHSlUWhpT3OntsHGa3YSABzXPwDBArahPFQjqiaqEVegbp61lIeKuxNjjvTN0zbU8DBq0h4xWVE54FXlc9qqSsaRloW881MnBqmrZq2ppIbLq88VKKrIecVYWiw7luPpVlOTVVGOKtLyKpR1BsnBx0qRahHSpU5rVIguR/dqYVChPQ1MDQNEoxSioec1Ip4NBaZIAAc1IME8cVHggCnrQVEsBhT8bgD6VX9aBknJNMomxUoIHGc1Fn1pN1UJlgMOlO6VV3+tOLnHvVJkE+RSjHpVYPg1IGyM1YD884ppx60oGelNYUANAyaTigk9KYRgdaAFBA70hZSaTim4B4pNAOyw6UFietRgnHrRknrUPQB5OKQEmmc560uSBxSuA/Pakzmmg0UXAfxik4HWkoycUXAU+1JmkoqbgNJPag8DJpDjPNIc9xmqAUv6UzeRzTSR1xTCeadgJvMzQWGfWoc8cUmcfjSsBYz78UnUcVDmgHiiwuUeTk0me9Nye9JUtEtDz0poOKSm57dKBWJdwozmoyRRn86QDyaTPp3pmaM8/SgB3ak5xRnNJkc0AIcH60lJmk3VlJFpjuaYetBbHNNzxmpsMDTc84FNY5PFJmhrQlsXIPPQ0e4ptBPGPSpIbAtims/GaYxJqI80pIzbBnzzVfJPNOJqM1gyeYeuc81ZXIAqoOKsx8kUh3N2I7Yqpzc8+tSqSBtqJ+RiuZ7mpSmO2ByeoBrCiuYg/znaF6E1r6jIyWUzr1xjj3rjYJxK5ik6jv61cUc9V2O8glnjUvFh9vG09DXbaKySnKqMlMH8ea820e6FupgmBeNzx6j0rsrW3uVZLiD5UbkjvgVx1kbUXc9U0m0jePynJ5PB7cda7e0hgtYfMvQZkiOVUcqM15tplzIkaqjlSecnt713lrPK0A3LuiY53Z6NXFNs7FG5flvluonjiiCQ8BfbHSqJlk2AMePTHSpHuQsZ2KCGIJxVd51ZOF/WlETViTcDkEginBypDg9Ov0qp1PHH1pd/QelUxF5p4gvOcGg/OoYNhvf1qj50Z4+8Qfwo+0qflIIHTPasmikyxvaPcHX16VA7Z+TcdvXGehpPOB4c4XuahZwE+UDPeiwXJmu1yExgCq7M8itjhen4GqzAnkHcfT0qnMUUhipU47Grg9SXsfMfieH7FqFxCcghzXEySfNk8V6x8ULZYb9LtBhZlBP8AvLwa8dmkwTgV7VB3R4uI0ZG7ZLdxVTztjbzQ8gU8VnPIRnmulROa4SsPMJXv0qTIdAR+NUi2BmlhlCsQehpyHEsMQOO9MVXduO9RzOVbcKcuoIo5HNVBXImrG1DFHbJ5jnnFYd7ftcNgZVR0FV5715fvHp0A6VQLknrWxml1ZYEnHWnBx2NVN3FPQk1jNlpl9GPAqcGqakVYQ5FSgJ1bmp1eqdPDhaTiNM0o25Fer/DjT2lu59QdQVQBUJ6gnrXj8Lk19QeCtLSw0W3RB87qGcn1IrnqysjooRuzqlHlIWI56fUmvddNRLazggwRsQcdecV4dpkQ1XWbexjH7uNtzHsQvX/Cvct+CMDArxa8j3aKL+9SduCc8ZFSBiOg/OqAlJHPy/jUwkXYFLYPauOx0lvccZp6M5zjv1qmGIOAKlDcdyfWpsBcXcTk8eg71IrhSOOe1UBncDk5Hep1YgfMcEUOIF1WLHk5FWVYk7SeKz4yM5arIkwfmqLWKSLi8dKsqeODWcH7dqsRn0qZlGgkgqdXVjxVFDxzVhSO1ZCsXAatW69Bnk1nq/OCOa39HijubxFnIWIHkk4FSwb0PojwxD5Gi246Fhmulj5bk1jWLx/Y4BDgIFAGOnFaaHuameh8XirubbP/0PienrgUypEwfwr5nofddCwn8qnWoE61OPWueRSHVKoyaiGO9SqcGsJmqL0Rx0rZthuIz0rGirctG6CiBVztNKhjkBPzHjtWzCghG1Sx56EdKr6NMEjAUYJrVkdlk38ZzzxUVTpg2aNhGUbeVwT+tdPp5jEhOwp/I1zEMzn7h5rdS5mQJswV/lXBNanXF6HTrKjcFc4qdJtynbH0rGiu5SdxVVxwcVftp5Nrh+QTxWM2axRfhkZlYlAMmn22/wA/OfmPaq5uG2hfSmxTsJUIGTjg+9Qao6CfcIXLdlNcw6ExkdRxXRTNJNa7f4mXmubnLxg5GOxpJl9DktWUK+c9OK4C8H79v516DqsW+XIPVePauGuoSs7bucV1UGclZGM0m1CuOlRFuQR0NXZLcBSCDUQiPpXU7nJoV0+U4HQVKOmaafkYlu9Acc57UITHg56dqYeXxSJLnp0pWYlsKKYh2ARz2powaeTgZpo54oAntMK74/iqxkDpUEGF5apWIC/LUG6FBz0FSIpZqYvTFTRcOKRaZOAqsDjpUjfeHFRkHNSFGVwD0FAyZpJFUgcZxTYwzH5qa7InLHHsPanpco+DGMilJFRNRcmMnHy1WfrgVIJT5I9KgLd/WsGbJlgHtSOQByetRqwHems28gY6UA2TRY8wNTrkkihODTJz8tFibiQnJGKv3LbLSU4/hOKyrMsXwelal2MWshI6gD8zUTWqLjsYKxhVyepFcf4wAi0q8mbkLGRjHduK7qFQVyf4a5TxiFbR54OhmKqM98HJr28PsedXV2fKOoaeVnBthhWHftVCRPK+VuStdLfcX0kLfLtrmLxiJWBPeuqD1PNqKxFG5Vww7Gu70lt8auO9efq2GrvNDYNCD/d4q660FQep1sAORWohIxWdDwa0E5xXOonoWLyHtV6IY5rPTPatCJsYq1Eq+hfQ8irqHjFUEPp1q4nNUykyyhANXI+azwCKtKf1pcti0zRG0YxU61nxnmrsb5JBp8txl5GHQCp1OKgQx4yKk7VQFjfnpU6NVNTzxUoJHFAGhG+etWQwHBrOQkVZUt3oAtA5qVfu9KrKSOKsBjQVEkwMD1oGabuBFOj6mgol570o+lO4IpOpA9atIbYZwKUc9aTbSjjimIWkOaD7UgJzigBc8ZNPDAcZpnHU0AiqiBMH29KC2aizSk9qoBSec0ZpueaM5oAMDOe9NPPSlzzR0OaAG8A4NKWXGcUZ9OlNOKiQCFh3paYcdBSUcoEuabkH8KjpOlPlAeWzwKQE4qOjtSaAkMmOKQtk5qM0hNICQsM5NNZzUdO4oATJpKU+lJQAmMd6b39ad1Bpo460AOBPpSdO+aTPYUUALknkUbvSmc80DpU3J5gye1MLHuKcc7qa5ouK4b+KA2TUdKDg5osIlzxTs1EDmlzjmouA/cKPeoyQOtBb8aLgKfaim7qaSetKS0GmDHn6UzOaT60VIgz60nfFJnim0AOLZpuaQk454pM1DRmJxSUUhPbvUCZA/FRE81K9QMazaIsKTVyAjpVFTk1di6ispMtGuh3DGeRUb5FLFwNw701256VztamqMrV8f2dIM46H9a4O3dt+9Rk+ldj4kYrpgA43NiuGgILAEkZ9K3prQ5K71OvtMStFGTjdgfjXeWMt0bJjFkS2pIJx2yMfzrz22AeESoDiIgkntg9a9z8OQxPZ3aOMm4RXXjuf/wBVctaN9C6LsdjoFjHPp0V/qcY8xh90HpjvWnDNJpVwskKB7eRsFD0GagsY7OCCQb23MRheo4HP61K2112ucj3rz5ROxTsbVzLaSRb7ZdrEHcnUA5rCLqGPt0qX5MbsYwevvVZinPcHJ49RS5RudyZXHTr6U4MScY69DVMNtJxTjMWwH+UAdafKTcn8xo9yqBtI59cimtvxkEbSBmoW3EZ6A96rvnpu/wD10pRHzF5ZbcpsmGAOhz1pMx7tqtyRkc9qynmkYgOA2O4qBmTq2Rjpip5SkzWaSNshBkjr9arOwk5LcCqZeJlLf6s44Pv71ULyEbgOfQdqFAGzkviBpqX2gSTFd0ltlh6la+XZ3BOc9OK+w5z58Lwz8iRdp+nSvkzxJZNpWrT2bqV2k4B7+h/GvVwr0PMxcNbmC7Aiqcwxz0BqyZAaiuxiAH3rsTOIpgZGahbGak3gJx1qAnjNMTZYV1kQqetZsoMbEHtTjIyNuXrVkMlxHz1/lTUrDcbmZ5lJuOOaJYzGajzWikY2Jd+T6VOhI6VUSrKkVD3AtIeKsI2KrLxin+YAdtKwIt709aaWBPqKqbvQ1IvOKSLaOh0KP7Vqlra4yHkGfoOtfVpm+xWaQxnDsMDHYV8xeCIjL4nssdFJb9K+nPJe8uNiAksQq4rixJ24RHa+AtPyJdWcf7C59O5FemecR3z7Vg2NpbWtvHaZ2pEvT1+taIlTH7vHP6CvHq6vQ9imtC/5gJx0qRZVHTLHPf8ApVBJFbqanWTYcdawaNkzQWVTkk4NSLcMAfkIHr3rPVy/YZGKslkX5WcNgdqRRaWYOCTkD3qcTY4H/wCus0vu5U8D8qmR1HfJPpSYGokhJ+X9amBU4zyazh6dKlDMDjOMevWs5DTNNCuBzVlT09qyY3bovO6rqO2Mk80ikaCMB8tTByuD1HeqSNzyOasKe5P4Vm1cZdU87vWtCztvtt1Dbknax5HrWShIIGciup8NRrLrFuD03c81D0HeyZ9F6dGtpZw26DiNAP0rXWT9KxQ+3gdqsrMMYzUVXc+RrQbbZ//R+KAM1KoqIVMDmvlZSPuWWE9alquhqxUSRcRwp4xkZpgB4px5rGSNDRh5Falq21gTWPAR0rRRu1KOhXU9CsWxFGyHmuhJ3IHJyRXIaMWZAjdjXUx5wQRxWdY6qZo28iqcnk4rajGYElGfn4PtXPAcZxitG3kbyUBPUZNcckdEWdPZbSreaR7VsWyqAwB965203bFz3robZd0bMvUcYrFxN4FoKhBIHNPjKgqNpJ6YqNG4wvJqvvdZN3PBrNmh18bK0QAXGO5rEv0R3bJHJFXrV3e2AfODntWfdx5Ix3rLqao5nVIo0OSwG0c1wmryQo6YYEtmuw1Q7mdG/H8K4LVEUbeOScV30tDkrGbLeRkYH403zYcbm6VTlCpGWIphIdK3bOOxazFuLYyO1MEg6gA1CGwcUEZIpoRJ5hG4EDj0qEOxbJphRwMY6nrSqpB+YGq5QJycfdpuSOvWj5h0FLtY/WpGh4Py8dxUi5xzSRjC4PanfSoaNkSg4qYNhsjA4qqMdKcrgNgjNIpErSEHOfwqQzlnDPxkionwQSKYyAFSecUDLcuDJtPAxU1uShygGMmqrMNwPrV2DYqgg5yc0mVEuclVDcZ4pp5XNKxG4Y9KgVjjHcmsDQnXqDT0BZiTwB0pg469aaGKsaALmQGBqG4ZcEdzmoxISeB1qO7yEBxznFXYBbV8PitS+b/QQfUrWTaffJIrQv3/ANCx/tLUS+ItbEEB+XHrzXB+L5i9zDbjkBSx/E128BOPpXnniJ92qSD+4AP0r06L0OVq7PFvEFnHb6s5OcyoGH1rzy7Y+ea9W8YQGYfakHzwrn/gIryO6bLbvWu6KPOxUbCA4Oa7nw8f9H9yTXAI33a7jw++FI7Zqp6o56O53sHStCPris+3AIzWgmKhHosuJV2M9KpIaux9sCquNbF+LrV5T0FUI3xjjvV4HJ4p2EmTZqwn+zVSpY3xx3oLRfjGatoy4wBk+tUIzk1dQ88UFplyEAmr2wHgVThU7s1eXNMYnlYFOGKs7OPXNRmHLZFAAM8YOasryBmq23ByOKlViaALcfNWQeOKqiRegqTcMUDTJzg4IqVSBzUCjJwasDCjBGaZZLuBxzzTh6ioVI64xTw+OWqgJB15qVcc1VDkk7ehp27saYExzim4701XJODzS9aAA4PFJtI9qWkI96aYCFPU4pT8ozmk69aOD96qQgLcU3BzkU4cfSlzxTExmGHNHzU7jHWgKemeKA5hgI6UEjoaf5YAzmk2ooxmpcSiI5zxRz3qQ4HSmdaoBpIpOTUnBGKaQKAImPpSg5p5wRTaGAU0jvTqOKzAZ2zSYpxHegnPA4oE2NyQKTqOaXpTTmnyjEo7UmO9Hak9BXCgUZpMigdxec5oppalHSoZDEIGaRulOpvAOO9CER+wpD6GnHg5pCcnNUAgIzin7gKiam1DQEzcjimYxxSBuMU73pIAopDzxTeQOKYB1pjcGlxkc02lYjmEpppWphNQO9x1NyKM00j2oE0GcZpjHvSE5+lMas2hDWPGKrsalaq5NRIB6NzVuMkc1SjJLfyq8n86wmJGpGflFNBLZz2pE5jBpy9cdq5nuaI5nxTIVs4oz/E/64rjLYgSx8HBPIHWu18TAG0RW6Ak/iOlc5oKFtStBjOTyK3p7HHX3Os0mPz7G4hCnKBSx/Gvb/B8Ttp8Vyy52qFXPqteV6WyW1zcoRjzABj1PavedJt2t9Pt4DgO69OwrCojWmy1ypI24B9KUkodwAbBFLNA8cpUvkkDp0FQZK8N17+9crR0XAFnZsHr1Hao2cAgpx7U5ndhgdB3HeomkYfdwAPzrNoIu4eZkdMUMcj5eo6g1GWz9TSc7dxGaXKXYd5rKQAgA7YqNnZTvGCD29KQyKQM1Gdz58s5pNMCN5cDhcYqrkHk8U8q/ORnFVWduSoGMUrDHrJIHJVen8qgd3VySMe9QNJzsAxUBkAYc5YjkU2iZMkkk2kqc8/pXjXxM0tZ0j1hfvriN8eg6V6zJMVwB37VhavDDqFnPaTJkTKQfY+tb4edmc9aN0fKKth81NfMDbFvTFJqlpJp149s3O0kD8Ky7q9EkQj/AIiRnHtXrRszymxitu9qR2AwKrK+2ms+Tkc0mCHM2TTQ5jOVNRk470xm9OlCQNlyVllTPes4kg4p/mY4pjHkYqopkyJFNWUOKqL1qZG7Ghogtb8Cm5zVd5McCnBqlstIsrjvVhTmqak1Zj4ApAejfDmPf4h8z/nnEzD86+tvDVmI83so5x8v496+Z/hXZtNPcScZd0RT9etfWtuRHGsS5IUAAGvNxkj0sHDQ2IznJPNWUbHQYrNQk98fjVpXGNteXY9VMvByTgc1ZV8DG3n1rPznnpU0Zcjb94/XpUspFxcMOOSe5qVdqYwORVJS4wOgq0p4GDmsy7lhSTj+VTqzg4GR64qmGIIXp61OGOOuPSk0Uiykj5+YnNTgt17VUibc3z9Ktoy9BUWEWI5ApwMgVcSXHUVQGBjvmp1YA8j2qS0zTjfIyOKsbi3bGPSs6JhjHarQJOG3EY6YrMZdjz3rtfBwMmqpt6rXDIwHSvRPAUbC8e5PIVT/APrqGhyVotntaycnJpPPywqmr98YJqNnAx61jJnhez1P/9L4oHWpBTQKlAr5M+5bHrVkVGi96mAyOlBcUIOTUoBPJoC8YpwFZtGhYjOGzWpGM4JrLi4NbkSDZ0rKJfU6LSJ/Jky2SMdq7JZE4POCK4a1+QoB3xXbW6ZUZ9KyqnTTNCJle2DqMruINTQgHBRSf8Kgt42MUidFPaqEdzdwvwRgdq5nE1TO8t/N2K4h+X3rp7EXCwttgGSfTrXMwSM8S/N0AFb1tJLtO9jjGeDipa0OiLL2+ZJGJRVyc4x60+IsXAOMniqhO5s5qMEtxXM2baHV26HYVJwPrWddlEfaDkUsYZYxk845qvLbD/Wl/lHapS1K5tDjdbVUnMnOGHauD1Rg23b2Oa9P1aGJ42Ynnb0rgbxLKRwpY5x0rugcdVnGSlSpVuc1Aqqq4PHNadwkQcqo6HqaiCRFgz8gdq2OYpY9DjFSb1BK7s4p8ot2424ahViIAAwR3poA355WgMMdc0jAHKg4AqPGBwcCrAlBp+eOKhTOOTmpPeoaAk3DGO9OGc9OtQZBIB6VMCfXipaNIyFJC9qcjYccc1EclsZqQDpjgioLuTygkk9B1qJmJYAjkAVHJ1609ySQQfagpFh8AAnpjNWbPnBPPNUSGZtrHIq9ANqBV9c0mXHcuykh8nvUecc9806UhiM8VH2/GsbFosR/M4B5pWADVFCecmpCd3NNIZNGqg7m61DeYKjA70K5J9qLnG2qJsNtPv4NW78/6MFPQODVa16/Sp9Q5tPowqGveNehUgYBuTXnmvY/ti59Mg/mK7yJ+M1xniaMC7WYf8tFx+VenRRxxfvHmOstlJQf41IP414fffJOU/uV7XqxyXUn1rxPVGzcyP74rrizmxy0uRRvkA123h5vvIeowa4GI84rutAHzl/YCtrHBR3PRbZvlFaUbelZFuflrSiPFZHpvYvo3StCMjA5rMjPFXI2PFUSakLAcdauK3aspG5Bq+jZGa0WwFoGnqRniqwOalUkdKTLTNKM4XNW0Yc1nKxxirEb84oZcTbgLHp6VcDkcdazreT+EVcQknJoLRfVs8VODVJCBjmranikIk2bsYFP8nuKYHwatq+9AAOtAFbym5K8in/NgA9qtICvFOZQF5qkNIiRuPpT9x6UmBSAnORVWLJh93JpxJI6VEM1IM4x2oAcgPUUjZJyaVc9BT8UmwERdp3Cn7snNJRxSAM0hzjntS9+aa3SgBOcUmfWhSCMHtT+COKtMBvbrRk0bTQAT0q7gLuHQ04uMYFRHA60gx1FAD9xpp96Q032oAdk545pcE9KbyKXccUABPNISD0oyM0hIoASlpuRnimljn3oAU9aZn0pMk0mcUAPzgUtR5HagmloDQveg03NBNO4WFOPWkPoKaW9aZu9ayYuUfn5fpQOlNBpvtQJxFx270oJ/KmUhoZJKD3xTS/603dgUmeOKQCk8c03dn2pOc80lJsBTSE80UUgG8jml3HFLgUYp2E2GSOaCT2pp59qBgdOtIVxx7mmZ/Wl3HGKac0EjT1pp9KX3pp6VDQ4gfWmscUpPNRk561I5CEjrUbU49KjJqLEkbVXY8VM2elRH8qhibHw9avxcms6M4bbWlEDWUkKJpKMCmkHPPQ07kDIpWHSuSW5qjnPEy7rEEfwmsDw4D/a9jIvQygV0HiMOIIl7Fj/ACrI8MhYdQilY/LA3mHPauim9DlqrU9XtLN77xJ5ESgpFIN30A5/I17GwCqqIcbfu/4VxXhS0TzX1Nwc3GSD9e9dkzZ3ZPCmsK0rlQ0F+UZVlzuP5GgJIyHyyOO3uKqM4UupbOKpNdXCXJmVcA9vWuNo1NI+YAGZNj9wOlVyVVsMM54qIXFzIW9WHHsagae4Xgr07kdakqxZbcmcdfbtVUvztz07VDmUtyef0pjk44oaLiyd3VhycVFNJv2ruIHcioGmAODyP0pHe32N82AOQBUlXHSTuGKocL2NVZJcjBHzd6e4Rv8AVt1HAqF1Kj522k0WE2VZXAwy5zxmq8mAN5PI6etWGRTnkdcdaqyZUkA5zxTcSGyuSzcZ59TVJ2kxuODVpkYqWJBA7VmTFiNw7DiqijNni3juw/0l7iNQpXr9M9a8gkXDc9a958VfvGDsOHBB/CvFNSh8mdmHQ816NFux5teNncy3PGKj3kcUpIqFjW9jIcWpN3ao85ppYCqSsBIXxQGBqvu7mjdVXIbLqmng8+1UA+DUvnUCJy2TUiv61WDc1Ip5qGi0XVI4xVlWxz6VUj5/GtC3geeVIYxlnYAD6mpZcUfS3wgsxHZxzEckNIePfAr3tZF4A4J7+9eeeBrJbLSg4yNw2D/dH/167pW7qc14+Id2exh42iaEbN0yDVtGbtgH1rKRjnBx+NWY5Rn5F4+v61yuJ1G0svy5A6etSbjgknFZqt75qdX7MKzaHc0BJg/e3Z4qwrAr0wM+tUFdkXA4/CplJJBbFZtFxkXVfc5Yd6tKwA+n6Vno56CrCsTjj8KVjRMughvfFWF55qjGTgnsKsxyD161LQF5Rke9WUI49KpI24cGpkPzZzWbGjQUjGM1ajB4Gc1RUg1ZU457+tZuJZfTgc8+leo+Ak/0aaXJx/U15KHOSTXs3g50j0rCjnIJPrkVMgm/dO6ExYcDFReaWbnpUKTIE+frTTIDjHeuObOH2ep//9P4qUmp1YCoRUqqPSvkz7ksK1TCQDjFVwPwp+BxVlJlgSZOKN+Tg1XHoKcDWc0XzF6I5INdDbkFQDXMwsQwFdBaOD14rGxaZ0NsqtPEPVhXaBflyvQVxloNzqV65rsYGzEA4yaxqnXTLSStHC6dQTmsmSbMhNXTICCOlZlwpWUbehGfzrGCNJnd6QzXFjv54POOtdVGyxoFBJHQZrlfDWWtHRMfL1/GujUZxk9KyqG8S3uOM1BJMyHC96R8pGdnWoJDzk/WuTQ2bZ0trI7QfNzUUjHmobJt8Ax/DxTyyhtppFdDm9beQAgdAoH51wFyACWHUV3+tDcyg91rhbkD5lrspPQ5qxzt1kncp5quGJOSeRT7k4bbjJqujDaeoNdBykpDsRk/SrABHDHjjpUGcrwCcCpsksApO4e1WgGAZJ2nk0hVu/QGgxgSEHrx0psgIU8kk0wJFVQMgdaU8VFHzgHtUrLjkUNAN4yO9TAgYz3qHuB2xTgPxrMaZISC3FMyc85FObPYdaQD+8ahmqQkgBPIyRTpFYgBeP8ACl437j09KcSpYDGQRzSsO48klt/dquRsVReOQaoBduPWriOm0DuTiky4lpmO8Z5zTwRjg9KhLKHAPrUiOihgw6/zqLGqY+NsHip8gknt0qgrgsBipWLLHgdzQDLKDgk+tRzkhaZC5dCAe9Jdv5cYJ5oGSW77fxqe+kJtdv8AtCs+1cswOKs34YQD0zU/aQN6FWI5rkPEpJeM9gDj8a6q3bOfauV8SAkRY7k16tJaHHB+8eVavE4DHsw614rrJ8u5KenNfSFzaLcQMmMkDg14r4m0XyJZJxkgda6IxIxavE4yIfOMcV3+gD5S3riuEiHzjFegaMAqBa26Hn0V7x21v90VoxVnWx+XBrQQ8/Wsj0uhdQ4FTxvz1qiGxUiOV5zRcg1I3JJArQiOR1rFhk9OtakT1tDYC+OKmj5qAEFeKkjfBzTaGi+gq1GnzYxUEOGIxWkigY96k0TJEG0jbwa0I+epqmq89atRg5quUssggDNWEbcKqgDpUqkChxKtcsjBbPpVyJuNo7VQAPYU9Sy/dqRGluYdOhqctkVmpMd3NXVdHAIPSmBKu3FIwH8I4oxjpS5xkVfKUhBUqg+lViQoJp0VzlgrUhlkZx0p9MMoz8vSnDJ+YGkK4uTSEZpeelHI60DEpCRThgmkJ201FgNKgjgYpeAM9qM8UynygO3g9KTPpSU3JqkgFIzyTTKcc4pCMdKYCCl4NJ7mnYFADc5pM8c08gUwgn6UANJ4zSYDUhBo4FDGh2NvTmo2OPxoJJqMk5qUhtocT3pDg96XOeDTWFTzD5RKKTafwpvIpcwnEfSE4pAeKD0waLkiUnfFFGRUgJ06UtN2ikwex4oGKeuTRnvTck0uMnFBmxetJ0NGDSUCFzRx3pKKQBTgM02njpQAYFNNPpCPSncCNuKb3qXtzUR60iWhpOKaaUnmmE9xQKwpPFN7cd6D1pD60CTBjURNPIB61Ge9Z2C9xuTURPHvTz09KjNJoCNj3plOY8VFuxWTiTIegw/Fa0J+XFZCsNwzWmh4BFYVGETRU8YqReAKrRtu4NWgMDIrlbNjE8QjfaxKeobg/wA6o+HrESXEmASWwv4V0WpW5ls0cLu8tt2PatzwVYx3Lqyccl2z/snFPm0sYVInq9pbpFbxxRjARFCgfSpj5auUmfB60KEYbGyCOh7VDJHlirc1jJ3Eh8gjRsK2R61SljJbO/Pt7VKFTHXr2qNhkfL0qGirjfKUqcybajYA/wDLQFh6mmMqAnLHn2qIpHk5XipsVzDyMHDNg1E8iBSCc8UzyozwpqJkYHbjg1QJiny5RtDYI7etQlUV8FuPSmyp8w3HHoark5AQndjPP41Ni0x0uVOMHGeBUSvMjAs272PpSMWDZyWbsagbf1Y0xMc8rgsxXioWuh0ZOPUUNISCGziq73Dx5Mabs8fT3obIbGSzRnlgffHpWVdSq8Z2kgCrLTk5z1zzWTeTbVIU9adiWzhPE3zW6uTyG/Q15PqaiUc16fq+ZI3B5JH8q8tuZMuwPrXdRehxV0ctISGwarv0q3dDbKcVRY8ZrqRzjdxHNN3c0hphOKGxMfn1pM55FQljRuNIgsA0oquHNSq2aAJ1OMVOKrDtU6UpFovRV3ngvTje6qsxGVhwfxY4FcHCM19CfDDSNqxzPkbx5v0wcCsKsrI6KUbs97skWC3jt4/uooFaadKooT1PWrCyHoDggV403qexDRWLysM471aTHRW4FZyZJ559TVpGIPB6VmzS5oKwA4qyrEc5zms4ORyeo9KnRi3DfzqGhpl/zQBjnmpY5Cwx2qiCMcdKsRnB/pUNFpGijfL1qdXJ4HSqSMTxVhWqWy4l9GOKsLzz+PNVEbK4JqZSTgd6gtF1ZGwB6VZDFsVRU5GDVgHng5xWbAvrwM5qwJDkEHk1nRtt7ZqyjZ69hTVrFJmnG5LqAME+n617V4eUJpqHpu+b2rxG2ZjPHnnnHHFe06Q2yxijGSMVz1BvY6XeODmnRnc4XoPWs4y/KM/nS20pJbcfpXHIOU//1PitT0qYGqo6VMp7V8xyH29yyozUhyAKhWn1JoSfL35NItNBNAOKiY0ToeQa3LUngGsJDzit21PAIrCRqjqtM3LIG6110eAnWuQsAUAcGuuA/dYzzWMtTqg9BFRppTGpxlTj61TDO23zOWCgflVu3OZhnjqKZLDtfOaySNJM6Tw7I8XmMpIU8MOxrrLdicDH41ymkIrbkHAIz+NdfbBBGPcVz4hHRRJHU7SByT0qvKTwCMHAq6oBbk1HeKiRo/UniuZG8i9pv3GGeOtTSxjduB9qg0wod2TjirUxjRtw71EyoswNXjz5Z9ciuJvoyjEYzxmu41OfzQqBcYrjNTznjrXXRehz1UcVdEGTg4PSq6sASDS3WRK2OMmowehxzXWcY/zGU/LUytznOKgIFAf5uRVWAnP3ieTSSbiMn1qFwoJZs8VFvZioUcgjrVAWsjCnPXBqwenPeqUiOqoxOeuB6VbIbavpimAwcAn0pwz1FGNox6mlGe3WsgLRwcDHFQk98U9sggnvyKjbBGM0FJjCQMNnvUE5fBC9cVMy7QvcVC+Byee9FikyRVIVAr7sjrVyIklSOx5qgu7AA4A4FWVZtgPvgmpaLTLzEB1YdQeakDBY8HuarAM55OKmIGPxqS7kdvPuuQoHrWkdxDHHArOgRUkLZ5NX3J24zwaSRfMSQRCIE5yDz+dQ35zB+NTRFWXg8dKq3v3cClYFIbZHke1XdUINrx61Qs2CuB68VY1M/wCiZ9WFSviG9jPtjwTWDr65gjf/AG8fpW1btgVja8d1mqf9NFP5V7FOOhwRfvnPRL8ufWuD8T2JKuCMrKcV6EuMCsXW4lkgyw4XJrdHZOF4nzp9nMM8kZ4KsRXbaQP3ams7VbVFvpCv8WDWvpK7YVB65NVPY8qnG0mdVAwAGavBqoRcAVZ38isUdtydmxyaPOAUD3qu79qYXBHFMLmxBIp6VrQNxXMQSEGtFLsJwTxWsdiGzohOq9aj88AisI3qnowpqXXmNweM1QrnbWk6/Kc1uxyKwGOc1x1vKiBQDzXQW054zTjvctM3F9atAg4C8GqCPkA9quRnOCKto1TLeD0qZY+9V1YjrVkN055NMpMfuOaXJxxUeT2qRGwD61LQ7FNvNzuXJrRtmPCnvTMEDNTx7TyBSUQ3LasSOakycVADnpUwyeKsoYcnikWL5t3epsCkwQeKloCULwMVIuR0qNM0/LUKIrEnPaoi7ZxSjnvRjjHeqsMVQecd6MHoaA2eB1p3ekJsToOOtRE5+tS1D34pghwJPGKCTuAPWmgHOc0jgg5oGOYYFJk4pue5ppfbxQA8HtSmowc8UueaAsGCTQcg7aO+aXNSy0RtmmfWnNzTSp7GhMTQxieg4pDSGmnPSqFYGpc8U3nvSZxUtDTHcnpTW4xmjccinEgipKG0U1vbrUeTkZocSbEoOaNoqPOTUgOaXIFg5zTCevpT/c0jYI4p8hL2GjPalGc8UoXFOpqBmNOc02pKYQAaTiAnaiijpzWYDlHGadUfNS0wEpDQefwpCfWgGJntTTx70ue1IelBJCaaeKXFJz3q7FDe/NJSk4pvSszGW4hppoqNjjigENbrzUTHFOY1WZ85qGhtiSMfwqm8hHAqSWTjms+WYA9akzciys+04J6VoQXK52g1yj3OG4NTw3G9htPOawnESmd9C4ADdatrKWHAzWDbTMUCnrWtayqXX+7nmuGaszqgdlZRr9jeTbng5/Kt/wAHafHBpMU6qUZ8n8DVXSIHuNNlgVRlm4z6V18Nu9hYWdtICCkY+hrOTHUjpce2duAxx2+tDHdgkZb1oL59qg3HzNoqLHMNbJOSOR3qMnn1xS+Y54YdTUMjgcKelFgF3YHFQM7dMZA9KXfjp9KjMgJI3YJ9KdgI2lcHHQVAzzcEN1p5DNwW3D34pDtU7Qecjr2oGiBnlb7wye/0pjEsOgAPpUrSNkDOD7VWc7myD07VLRakNyOueKqvID8wGakaRfM2k4NQ8RLkdAOlSBCzkjjKCq7SuTtTgd81YeZs7scCqksrtxs49c1diGytJsG7eu4mudvXALLnABNbszuqEeXuGMnFcveTo27KbcjjmqiQ2cjqL+Z93p0/CvK7/MM8iNxhjXpl43zFQfxrzXXVWO7yOjDP9K6qL1OWrsc5O2csazS+evFW52GMVnuea6mcsmKXppOaYTipEiaQFlGQKQkyPNJnNOcFT6UwnNAgz6VIjc1FSqaALgbvVuM81RU8VbgOTg0WuaHQ6RaG+vY7VRncRn6Z5NfWfhK1W2tXlQfKcIp9lrw7wdpJs7c6hOv72UcZ7CvorTYDaWUUB6gZPvnmvPxE9bI7qEepuJJnG5uatA8fe5qijccirifd65Fec0egmXI5MYVjke9WlkXHvWeuOMnirCknjpUDuaCuWPt/SplcZ+tUEJXgVYU+vWk0UmX0bI5qwrc5qgrcYHSplbnFZNFmkj9KuKeOazEYdT2q2rEjnioaNEzQRunpVpST9DWep9PWr0ec4Izj0qWjRMtqQCKsAjHpVRc8YH4VZjyep6Vm0BaUjO0EE1YjAzVNcnpVuNSDg8c1LGjUsVZ7uPaMjPNex2Z228angACvJdHXdfJjj17/AEr1VZCFA9O1YTlobRRotIxBBPFLbyMr1T3nHtU1swKsRXLoyj//1fiYVIKjHSpAa+bPtCwtPAxTF6U8Vi9zWI4UUUhIFRN6lkqdq3bVcqCKwFINdFYfMAM1jJFwOp0wDyjvPU9K6JHyfwrA0xFaRULY71rGZA5AORWMkdUWXI2UzAMODnNJKVOGHBqk8wEgxwDxRLKyPgnIqUWbegXbm6eHuy7h9AcH+dd9DNgKvSvOvD7IdUIA+by2wfbIrvoWBfJHSsZo6Kb0NMSY5FPuFke1LDqpzz7VF1HFXODbc9653HU1uGngmLceOOlWpQy4btVS2O3cvpV1yDFyc1jNG1Mxb5lU/N1Gc1yWoMMj6V02oEEnvXK3vzAY6itqLMqpxN5HiYntk1WGNvXAzWjej94Q3aqJROST1rvicEnYAVAAJzRv24IPfvTRtx16U05JzjPtVC5idhnLN2pgEfHUnOelNDtuOQRTtxxnPHpQUNKFnOWOPSrH8IAPbFRgg80oYAZ9KAJxnjNGH3EjpUalifc+tQM7hjyamQGi6/KCT0wKbwOpqp2AqTd8vHakwHPsB3imCQbgGHWg44PWnHngnikBIQu1SDwetKoOzPbNVwdseR0FXIVJgOPWhlxYCTg+vrVhCTGN1U84JBqxGylMZrM1TJlODwakckrjNRL1pW5PWgq5NAu04NRXbFV+tWExjNQ3GHA9qTYyGHO9CDV3UyfsQAH8QNUrfG4CrV++6zYfShR1Q76GVE3BrN1b5rY+zCrcDZGPWqOoHMLD3FezD4TiXxmMvpVW9iEsTKfSrXcYokGRzVJnodDxDWY3i1B1kHoB9Ku2C4jX3rS8XRKNRiA67M/maqWilY1z6VU3ZHnOPvnQRKCtOYc/Skh6CpHPy8Vma2KcjYIzVX7SiE7qfKwkUjPIrGllBJDdqpRMpuxspdbeSRio5btGbAOa597jAwp4qAzeoIrVLQwlJnQ+ePWtCxlkYkjpwK4xZ1LjLcVt297sXatNak8x6VaSRqoZzkitiPUIlfHGPWvMRqMjgIhxxzWjBdSbcMc1UYmqmj1Fb9AAc5A9K2ILhSM5rzS0nUYya6SC+XIFacpqpnbCUOMrTxJisG3uwVXB61po5Yc8UmjSMjWgcE471YCNuGelUYSoHFX0bOOaEkaJkwGBin/d61FnoBT2bAyakolRsnHepwTVGJ8PmrW7PNMsnBPene1RI4B5GalzknFJiY9BnNPz2qNc9qcQSRQiBTxTgQMU1sHg0KDTLRISO1J2xRikPHXrQTuMYEnAoCkU8N60gJzkdKCiNhQfrSkE5HWjbtHIoGMY5qsynNWeKbkZoAYpI4xT+M0/cu33qPdSsVzCk1GSc9aXPeombniiwrjixFM3Gko5osFxDxzTc0HrSUwuBPrTW6ilIHemFhzQCAsaTJPFMpam5VgNJRmikMB1yKlUA1EOKmXpmmhMXvQRmloPvVGUmNI7+lOpue/agMCcUEjjxSHOPelzzTcH1oATHHvR0604c803B5zzSsAoH5U88UxelPJzUSQDTUYHUDtUhphHvUiYnUcUzkZzTugpjHPFCBDCcnmmHrTjTKoYhOKhJ6ipT3NQMaTJkISelMLd6GOKqSS4GfSpsZSlYe7+tUJLhVJFVLq825xwa5me+5JLcmixhKobt1exxoSWFYk14W5zgGsC5utx+8TVU3bEYFTJGTqHSeeGHFWbX/WiQdBzXLQ3LKRnvW9ZTbm2Z4rmmODO1t5SG254rVhuGBHcEjFcxbzIwwDg966K2/fTQwRfMzsAMetcNU7qR9DeHYU/sAzkYbf19a6vxDl2tpkOFWMAgetT6DosVv4UjaQZdXGQe+MZo8XPDDewxQrtQRrux3JrmlLU6525Tl9wIPvUTEmQbeCODmkZ1JLLxkDFMa5RlO5drDpTOAcwHaoWHUVE0khX5RkioTKdwLAgcUCJWAKlWGKpvtXkr0qy8zvyijA7nrVJ3Yj5qBjHAxyc+gpuOATwKbkjpTPmORnPvSsNiSbchCeemajeYg4QbiP1pbPVfPlm0C+jHmhd8UmOuOcVEcgFsjjrTEmDzW6rmZM+vrVN5V4kjGAOx9KY0bM28uDkZqFlx06UAx0kyk7icD1qlLKucLLx6Yp8wBXPX096pOuwHC8UJENlWeeQKzKSQO1cvezgqWzW5cSqu5s/hXK6jJuBIPXmtIomRgXLZ+bt2rgPEqElJRx2/rXbTuTx6GuP8S/6iLHdj/Kt4bmNTY4R6qMea01j3nFVbu0ltWy4wvY10nHYoua0rSRUtZXP8NZbZ71btzmGVOvTj8acRoheUzHe3B9KZmtrWLC3tEtpLXOJlLZP4VgnirlCxKkmSUCgHIorMCdDxW5oFp/aGr2dqeVeQZ+i81z4OK7f4fgSeJ7YHAADH8hQ2XF3PoG0s1e8trQL8m4ZHsK9QDr1Gee2K4Tw+nm6lNc9fLXA/Hiu0DgH2ryaz1PUpLQ0EORVxGA+9WZGTnmri4B5rnZui+rjPvUyscf1qohz2qwCx9qhou/Quow74qdGHrzWcvXgVZTOeRg9qgtIvo2eMVaXpVBWI5qZHzgk5rN6Fo0UOfWrQOAAtUEJ/GrCYb+LrUMpM0I2xyKuJIMYycms9AMctVyPGc1mzWLLquehq5GxJ61RTB6mraD+7yahvUovqe+asK4xnrVONsAZ5NShsfSpGjrfDw8y/Vu3pXoPmDOa868JlRctIwz1xXeB1ZsjiuWaNkX2Ztuc8VYtpAsZGPf61mtINpCnNXLdiEVgc+2Olc7RZ//W+JhTh1qLNLnmvmz7QtK9S5qmGp+81lJFJlrf6U1mx9ag3kUFzUuNy1NFhHHSuk05xwB1rkd3NdTpnO01k0awZ1sMYYgk1sRWxEe8npWFDP5eK0DdHClm2qawmjqjsXGi+cMOo6UsoO4hlI4yDioWlcYKNn3qYkvht2TWdjQ2vDyhL77Tz80bJj8j/Su8s489T1OK88sT5cg2kjHTmuqtJ3Zgp6A1lM2pM7E2rxjJOc9Mc1IoQwEFqoQyttwTwKVmDKy+hFc8mbk1raBC8gkLcdKuiRSm0c1TgJZmA7Cnqyr1NZTRcZGbe4PJ7muZuOpz611F3yGYdq5W4IyCf4q0pIzqM4/UMmU/Ws1jjgjmtPUm2zFTx1rHaQZ+9zXfHY4ZvUkxxk08DPyjJzUInJ+UdqeJ5RgLjGe9acpFx7Bk4IqMvtHNOE7yPhscU2QAkUmgHqeB71MMCoRhsEdBVhWizk+lItMFZ2PtSNgk4o3qDwDTd45JoKuSKUNSfKe1VDJgcCkDkc5oC5dABUnA4qNid3I6VF5oIyDSNLxzzQwJhnHJ71NC+1NrdyaohlKs3cdPrTkkVFV2ySePaoaAu7lyTjrUsbjbj0qg13EoG4HLdPepon3qcdqTRakXY33H3pf4jVMOVIxTxId2e1ZmnMagKgD6VXnwASDTEbIznJpJ8FelA0wt3AfNXL/abCd16BM1jxnGBWlcn/iW3H+4aqO476GDbOcZqG+/1Jptq2Rj0pLs/uHPpXrwXunCn75l9s00+lPXlaawI59aUWenI848ZJi7tZF6vlfyqlGPkXFaPi0Bprdu6s2KoRDIBq57HG/iNe3OQKtgAfSqUHatAAmoKOeuwsU3XAasWbYXJFdZeQK/J61zdzamN+OlaROeqZckfPBqVIiRhjxTZAw+6KhkaQD5TVo52TG0gp48uLpWcJHPXiopXbnJzVR3MnubC3WO9a1rfREE7q4rzSDTo5QrZ9a3sCkejQ6jGfmDZxW/Y6qjEbhmvKIpiW4rUgupFxhsUWLjUPdLW9tkQMWAIrYtr+Obha8Y0/VvnCT9PWuvg1aIgKp2n1o3NY1D0yKQ9zWlHOowM5rhLO/LEM5yMVqpdHcGJ60OJ0wqHXiXjNSgllBNY0E6Ou4c1qRurDArJo6Lk6kA1ZU8cVUGO/FSrIB1oRSJ6mQn8Krqc81IDTKLitipQnf1qmrHiphJngUEuJMy44oHHBqPeT1p2aB2JTxUUisSCDTgX7UhZ80AhtJyOho3EU3OetAx2T1oJpc4ppx+NADSwphOeaeVxyaaRzSbGkMyM0mSelDfrTeaXMVyjWc9KYST0qQoSOTUR44ppiaHYOMmm5Oad2pnSmIOnFNPSjtTST0oAPmxTMYFKSccU0cmpZSE60U5him0hiU4cHnmkxSe1O4D1GTUi9MGo84FODjqetCEx/IpM5yKZuPakzk5p3IlFin09KUAEZpOoz60oHYUEWHAgmg4603gNxThg9KAE5JFPpOM5paYgpN3alqPPJqZ7AB5FFNz60vB4rITEOetRE5qQnjiojzVIENJ5phNBODiomPGKYNiM2KgLUrHA5qBpBzU7mUpEU8oQVh3N6qKWapNRulRc56VwGoaiZWKqa0SOSpM1LrUVdjg8Vy91dkucHmqk07kYJxVMsW5NKTOe9yw07EdetSRMzdulVFUk4rQgXaM1jNgi3GQF5FW7e58qVeMqKojc3StbTrKa5mVFQndxnHSudo2ijptNP2hztUhf51654N0NJb5J5Dl0Ix6DmuNstPS0RUPUDtXr/gosuyWQZ3ZC49R0rzcVKx6FGJ77bwtLoY3EjdIFQD1J71yPiq587VZEUcIQB+Ar0s+VZeGbXU3X5pDuK9geleKTzmeZ5pDlmY/zrmpq+prWnpYgMhAwRmmsd3OM1M21y3lqSKZhx82D/8AqroOQreaAOQarXF7MpEZA2Z5OK0W8xySEwTUUtuHU+avSsxlNpzgeWNw9fSonlZuoxUrRhBiP7o6CqzlBy3SgLgAp5JwTUcjIqEbunFVndWcEKTjv6VE2M5PWgVxk3kxXFvfyHBjcAN7NwauX1vHHOzlz8xzj681j3yma2kiX5tw4HuOlFuLlYkS8fzHRQM07DJ3dWXaBgZ4qpKfXoankIClicmqTElNrNzmkJkEo564xVKc7RjPWp3JxnP51nzPIcnIHB600QULsjb/ALIH5muUvWOGx3rauZJGHzHpXMXknXJzWy2IZlStzXKeIcG2jb/aNdJIeOa5PX2PkxqP7xq47mctjP0+13RG4PQHA/CrcnlyZjlIb6+lRXx+yeFkkThrk7f++uuPyrz07hyHP511RRz3saF6kUV1IkJygPFNtW/eFfUVRyRxUsUgSRW96qxDOmvb20XTrKN/3k0aYx6eua5qRwxJAwKbdOWlyOgFQAnpWrldGSjZk4YipAQarZqRWxzWbRruT5rtPAcqxeJrTP8AHuUfUiuHzmuh8MXQtde0+4bokq5+jcf1rKWwR3Pr3QkxDI44y3UV0YYD61z2kHbaY/iDHr6dq2xIdmSo+oryaq1PXp7F9GJHHU1cR2HBrMicdic+9Wg2eBwKwsaqRpo3IzwKshhnj+dZsZPUmrasBggZpFIvpk8irase/wCdZiOzcDIzVpGYHHaoZZfDHGOtTx47nFUg2KtRndg9qykaIvp0x0qdBVYMMY9OlTg45HFZjLqjPFW0345JqinI5NXI2AGCTUtGiLiEjJ9amDHIIODVdPm6VaQfpU2NETxzOvB6CneZPtJAAbPWnRx5PJ4q0qb32k9aTZSZ2PhWJ9ruw6dR712aAnIHTFcz4dRxA7noxrqUwMf3j2rmnsbJk3t2qeJsDAqr/ED29KlHGMDrXHItH//X+FRP71KJQa5YX64yKet/6Gvmro+4sdWsgqTcPWuYTUgODzU41NTx0rN27hY6HJ60u4Vzw1PPenrfAn71JSQcjNtm7V2Wlr+5V/avOBdxuQA3Ndzo8rMg28jFTUXY1po62Ibj8w4q8w2KPLFZEcjipvNdiAGwK4zrNyFHkQbjjNWijrEPb19Ky1dQP9YcY9aa0rPgFsj60Fo6mzZTPEMcOfXpXVWyhH5I4PrXFaKxFwrMeAeldeVjVyQawqGtM6eHDKNpFTJjJz7VkWcqrhR0rSSQ5yOawaOhMs20gWV1Yc4qN3OSKaEZpmfaecdKJFIPSsZFJlWeQ7TjvXLXhAXPp0rppQSp4rl74h42z2rWkjOozlNUYPKGY4bbn6isCWSMYPfvWhqTiJsn04rn5LhOckGvSitDz5vU0kZGI2mrShM/M1YCXYj+YDOegq19rQYz19KpENmsEiZ/lboe1JIcPhenvVAXcaSBsgE9ac13Ezgqck02hotAFflz1p+7GKqC4j5DHBpfNTGRzU8pSkWhIuOuDTHlxxmqZkUk00sT0o5RtlzzTwO1LvG0jvWcXOeTTlfsDS5QuaKuMc05snnpVENxR5p6E1A7l1WO1hTBkc1TEnJxVhHbAHehopMkLA4PpV6DOwkVRCls9BVmIhCVz1qLFXJtzZGDUrZbnpVUSRr8x9alM8ZwQcihxBSNCIjgAU65yFqvFIM5HepLqQbRUWHcpq2DWrI2+xmxz8hrAWUE8VvW2GtZVP8AEhH6VcVqNSOTtHz3qzMA8br7Vg21xsIBPI4/EVrwzK8ignOa9eivdOOb94rRDK5NMlOF5qVx5blewqpcHcuBWXU9dO8TznxhIRLa7ehJH41Fbj5RU3i+P5LZuhRjVWzfegIrRvQ5pfEakB5rUUHFZUPWtiHOKlFJEEinvzWRchc4FdR5anrVeSxibJxgmqtYzkrnn9xGyngZFZz5AyK7mawMTdM1mz6WJ1+QbCfyrRM5JwZx7q1QHJroH0i4QlWqs2kXDcxjNbxt0Odo59lIpoFaE1hdQcyIRVPBHBFUZtD4nCnJrTjcMMiscVajJwKuIuY0vMYH5WrSgvplXaW6ViBxipA5FHKCkd5p+sXClVL5+td1Z6iksabm+fFeJLcsqjacEVp2OpvGwJc7h61ZpCofQNjeqcKveunhfaBXh1j4lK8SDFejWGtx3Squ4dOtZ8p306p2W/PFSL1rIjuk43MOa0I5VP8AEMVEoHTGRfVqkBqhv561KshxjNQbrUuZ7U9SRVdXzgVOKAZZU1MpqqrVKGxTSEWD046Uw8DNM3/nTgcjNVYBo45pAR3p/B5ph460nEAJphPORQc00Zzg8VNx2HZJFOPpRwBTd2c1DZSQ1hzk03PegkkZNNFIYb27Uwkt1HSpKQ4oAjpnFSdaYVP1quYloYSAc0hbnFKE61ERijmHYcWNNBxTgCetMPFJgOZsnjtTaQkgUdRQMWikzgUmT1oAdTlAI96YDmloAOegpM4pDmk4oAXPNSBsVEDzmnA5ouFiQkEcCkBIpBgilzximZSQqE9BzT9wHeosnrTSR60XJH7j61Hk0HFMzzis27gPzRuIqMkilPSkkICfWmFvWlJquzitEhNiuwzVdpB60yWVV4zWPdXhj4FHKZSkWrm6C5UViXGolAVUZ96oz3hKnmuXvtSVQUU5amlY5aky1qd/lCzNgnoK5Zn3kkVBI7TvuY5qQDatHMcz1IJOuKRQMUOhYnnFSwW81y2yAZIPNZykJE0C5IHUnpWzb2N5cHbDCT7kcV0OjaFb2+J7n55B0HauzjkiRQqgADsKxm9Dpp07nMaZoDgB7lMV2tvFDbRgRoF9cVEtwrD5aQy1zSkdcKaLUbl5B7c17Z4UjQRwRBcbgGGPavE7Ur5q5/iIFe+eEoVZ4ADgxqBnqM+lebijqpI9v8X3MNn4R0+NztfHT+9614W0wyWVQM17b8Q5Ta+HNNspEVy8YZXPWvCstjIXr+lKCOSrIVriRSdvyg9qiNxeYO4/L2p53dOvtUTEkdK0ehjzELzXZziQiod1x1eQn2qdnPBNMLjGRzUj5iJprrGQflFRG6fbh0DDqDUzPGCCzBVOABVMsoY9/THTFOwAbhvv7cD0FReaHJG0/WmyTYxg1CtyqjkHI7VLARn25IGSaa8gYkg4YjgfSgzIFy1RGaDhj8rDoTQhpkbsMg1DIQx4PBFLI4Y5U1VMqbiN1JoQ18dSc1mTuqqWbkCrTMQSSeOtZN3MDmNcfWqihNmNdzDByc1yt1Nuya2b2QFSPXiuYuH5PtWyRBWeSuT1yQO8SjsCfzro5W7CuRvGElxIB/Dx+VVEibLWvREeE7NwOEZCfxBFeet14r1+6tftfhn7KoyfJGPqOa8fPTnqK6oM5pDetFFFaGYhbmgGmnr6Ug4/GgqxJRnFIKWgRID3qzFI8TCSM4ZSCPqORVNRjNWENZtDfc+yfC2oDUdKt7tDuEqK30JHNdZG2cBiM14b8KdZ3abJpzY3Wzcc/wALHIr2qKRchieteZXVmelRldGirqMAHLVZR8nYRyf0qlHJ12qPrmrKMW4L7fp3rlbOgup1q4hBHHas8FuN/T2qdCMZ6E/rUtFJmlEeeT0q4vXrWZG2Dk1ZRj361EjRbF5SD9atREgis9CRjvmrUbsBisZLqapmipYYOatxnI4qom7A78YzVmM8dMVmMuo2OtXEJ65xWehNW4yxPHSgtM0YmUfeq8jAjis6P0q5Hx2/GoZpE0o3AGO9WY8swHQms9HI49KtwvIzgqOM/T9aykykj0vR43is0B6ewrajXI3jJPv2rLslEdpGpycjPNaaOFTntXNUZvFaEhYhwgOTipicdOv9arAgvuHUfnUm4dK52iz/0PzLTfnlqsKT3NVhUqsO9fFe0Z+lezRZDH1pwc+tQe9OBNJzGqSJw59aUSsD1qDmn4HrU85SpFhZSDnODXRWXiC+tFCxlTt6ZrlxxUobvTVbsUqKO4Pi7VMcCLJ74P8AjS/8Jhqg6hPwBrjFORxUoH41DqMtU0dqvjS/Iw8Mbe4yKtReNZh9+2yO4DVw6AH8KnAxRzs09mj0m2+IUttIJIrPIHZmrpT8Vw4Ux6eVOOct3rxQEirCHipk2y1TR7vY/FhFbFxY5T/ZPIrXPxZ0cH5lki/4BmvnkMRTic9RSa0DkR9KRfGHQnYI5aNfXbgmrR+KehOdoVwPVuBXy+yjqafvBXa3IrBotRR9TL4z025iLpcRgf71Yd7qriEypGZIjzuU5zmvnQLETjbWnb6rqFnEILe4ZYx0XOQPwq4WQpUrnfa3rDvtCxOc9gM81zJvn6tGyt1+YEVWg8YazZNlDHKT/fT/AAqdvHmszcXNvbyD/cxwfxq/aMyeDTIn1E4zKyqB700arGACHHsc1C2s2s2ZJ7OLPXaF4qzDrmkp8zaJDIx6g9PwqViGZvAkiaoqcuwbPoas/wBpbSGTkHvUa694fLDfoSLnqA3f8qzp5NNuGZ7O2Nsh6Luz+NV9YJ+p2NtdVdiSuCO9SrquOM1zdv8A2erH7SJBngbW/nUU8MR/49nYD/aOa0WIVifq507amGOC+MelMOrAfx4rk1huMcPn8aTZJnEjflT+sIX1dnXJqnGSwqyuo5Gc4ri90o5U5xQJbojpxVe2TD6sztxq23gnIFOXUwx+WuLBnxkinGSbGACPpR7RB9XZ3Md8CeKu/a+PQ15yLq5UbTkY71YF9cBRuYsaXtES6Mkd6t4oAy3NSrqIBwq5B968/wDt0hOf505dQljOcgVPMhckj0NJ94x2oEuG5ri01Qsdu4fhUq3q7xlz+NWmiXdHodtcBsZNW55AUye1cXb365BVunUVen1aIxKVbnvUuOpafcvxSgSEZrftZcxkDqQcfWvPYtVhaVhySK37bUQrLziq2Fc5Pzyksins7VftL1ftEefXFYN1Li8uP+uj/wA6g8/aQVPIOa7ac9Dkne56NcDI3d6y2YYwetTi6Djb7VVcAnOaiT1PRoVdLHKeKYfNtA4H+rNc9pissADDqc122pRJLaTCToEJP4Vx9txAuO9ax1QVNzQj4bNa8HNYseQa2bY84pwLRpKmetWAmRzSR8rirAAPBq5LUTRTeFWByKh8kdO1aLIccc1VY7eKSIaITpsUud3Q1nPpBhPy5I7VsRTgNtNaqbHX5TmtEyHTOOktMriRciuU1TQUCmeAEN3Ar1jyVYGqj28GfmX8K1U+5nKimeDvAyttcbT71GpKnFe13emWN2hWWIfUda5i68K2bnMQIPsaFUOWdBnB8Y4pobB57V0V14buYlJtgWI7H0rmHEkT+XMpRh1BrWMrnPKNi2rDpQxIIPaqfmhTg9KmLcZBrQk34Z0kjHOSK6DSdQkgP3/lHWuBjmKHIq35hDbwTSZpGpY92tb6GWIMr5P1rpLW5KgMpyD2r5/sNYltGG05HceteiaRryTDEjYBp3Vjsp1j1KK8LEKa0Uk461x1pfxOcZ6963IrlOhNZyid0KhvpMTVpJOgrCW5QHGcVdgnBOetZuJqpmyGqQNVQSDFAkPbpSuUXs5p6HnFVFk9KmVqtCLXbnmmZB60Kc0/FMBhIxmo2IOKVlyODUOc/hWLRaY88DigNijPFIT2qRjWIpoPOBSnpTaADkUUlFABSHrxQTgcU3caADpxUTipCcU3ORzQBFv200nvTyE61GcHimAnU04+9IQAKUjpQAnBpTjvQy88U00XAOB0p2cnimUvtQAEmm5xS9KMUAJnvThTOnTpTgRmgB46UtNGKdmmhS2CkOO9NzTSaRihaTpk00tzimF+1JwCw/cM5NNLDGaqPMRVV7kA89KXkQ5F+SQDrWZPcqv1qnPqCAHnpXK3WqHceatGEpm9NfxjOW5rmtR1RAT8wJNYd5qG4kKeawp5iuXam5HPOoX7nUjyAawpJmc5PNVWkZic1PbxmZwOwqTBstwqfvHvU1NfMZIxjFZdxdOvC8GkCRtQRG4kCLxnjJrfitvsK/uOW/iNcHZ30sLhWPDH8q7O0u3aPZuyGrGoa04m/BPcO3LnA7Vsws2ACc1hW/GK1o2ORXK5HdBaGtDnqO9XF64qlD1zV+Lr61LRSZrWCI91GsjbRkfnXvngYgXKM3Ks4UY+vWvBtNQvcx7RuP8AnmvpP4YWpfVLW2kX5i4YfQc1wYham9PY7H4uXri4sbJRtit0VR78V5Cz4X5eAa9I+LcudeMTnO0gAemBzXlG8cAnApX1OKqSlmHzBjnrTCzk4zxTd2SdnIqJmIXbimZXGvIRx1qIybfn7CkJQ4RjgnpUTR7sZYccYNK6FYHmtslnjyTULTxdOgoaPB6jd9aqyJ2ZcYp3LQ4yp/ERioTMvCI2Qe4qNii8rjI65qB38xTlOPaolKwD5JUwVHOKru+etDPgYC9KhZ/9nFTzDsOJVuvbpVWRoccjkUxydxwapOzHp19adwsLcMm0j0rBnmC5Ofyq1PINjA96565mABA71qmS0ULuYYJVvoKwJ5M1Pd4L789azZJMZ9q0SuQRSvhCx7Vy/wB6Vm65JravJQsJycZFZdhC0xZ2+WOMZduwrXlsZvU6TTLpltPLftkc+9ed65YiwvWVTuSXLj2z2ro59c0u0T5JfM9AveuN1LU31CfzCNqDhR3x71dK5nNFAnBoLccVGSTRkmtuYz5GGc9afnJqOlGM0Ji9SajIpM80nuKbZJKtSLUa9KeOtQU9js/BOsf2Lr0MkhAguf3UntnofwNfWNuQ8YbG71NfEA5GDX0t8NfEbappCW0jE3NoBHJn+Ifwt+VcmIhdHThp20PWlmi/hG1fSraqgXcpJ+tZSH5s1aTk8HmvNkd6NKNyo61aQ9CeRVBCowDzVhW7elQ2UjU4AFSocYrOViORzVpWJHPaomzVGijZ6VbhyScnis2I1oJweajc0Rpxnb0PGasqx3ZzkGqEPOTnitBQp4xisWaJFqM561cjyG4OKqRjt3q6nHWobLSLkWfvEVpRDPBHA71mxsSuee1aKyRrwOTWbZokWtgPQ8+taVuNzrkDHHFZkZL8449e1bult+/COu4HFZTZcUehwEFEHVgO9WNwH481WjAVQy9KlJJGcdORXNOWpuiVOCSKeZAOTxWda3DzFwwyAcDFW84yDzWVyrH/0fzIBxUi5+lQqSeOKmBxXwVz9S5SUHjk07BGQKiBzTgSKlspImHHWlGai3Z607JzTSLSJhmng9qhDGnqaWw0i1GoJyTV2OIN/FxWWCc5qQOw70ORagbRESDrVcyKDWZvfPWjcaTmUoWNRZRnmrKOOorD3GpklanGY+U3RMBUnm96x45DVkMMU3IEi+Xz+NODDtVASHOKcrsKxbRpyl/dzUbMagL5HBqMuetLmLUSxupN4zgVX83saaZO4qroTRYLMKb5kitkHmq/mN2NN3570aErsaK3Bb79SCcHgngVllwDT1lj68iokaKJqNOMfLzTVmYHrwapmRRwORTPM54rOw1FGibhgflzUqSE/eJz71mCXYpPU1LHcblPB59azkPkNZXGetTKT6VnpKB2NXo7jOBS5y40iyrMTyKsxsVb5VqCMuxwRiriDB4FPnNPZIjlYseRTFj9RVpoGfnNC2c+cA8UpVQ9kmOEaFQGUYFaFvHGoIeBZAfWq7WjxnDvx6irUMT43I2cdaz9qylho9TNm0eFyWhJib65qsdKlXkyEsOvFdEo3dxV7yFdQC/I+lP600N4GLOZi0ufh1lx6Vba3uPLC5ye4raNqF5MmKDbnblTyKqOLkzKWXxOP8nUzNtitzkenFbts10FVLhCpHWtCISrKHLYYcVeDB8iTqatYhsxeAR59qYnS8mcqdjnIIFZwu9rgEEFSM8V6gkUcDFyobPrWis9pKu2SFDu9RXVTxeljnnllzibW/4APPFX/tSseeK6J9MtJfmWJQexFR/2NYEHzEJb2NbLF9zNZZJbGDMUlgkRjw6kH8RXEwqqRrGv8PFeo/8ACPQyBvLkK8dK8xmha0uHgfgox/LPFd1CqmY1qMo7lhTyDWtbc4FY6EEe9alsegFb3JR0EJq6gziqUHIBq/HyRWy3GOIOKoToF5rY28Vm3CZyKbJ3Md2Kn5adFdmM7gaZIpGc1QYnOKSJvY6EalHIOwNK1wjDrXLMSKoz3M68q2KoLnWvMFyc1F9pjPU4riG1C46F6BqB6OadiJNHaeavUNVG80mw1IEXCDeRww4Ncw2oovAfFZ8/iRoWwr5x6VpTOSo0yDUfDOoWm5owHQcg98Vzyl0yjcEdjXTN45Me1Jo/MXuaHvdE1nMltiOU44PBroOSVjn1Ixmp1Y4wakmsZIDk/dPQ1EARgUEDwxzWzZXLwsChwKxCMGp45dvFZji7Ho9hqUwxluDXaWGpB/vPg14zDdMgGGxWtFfSkAB6pM64VT3iGZJADmtSCVF6dK8QsdWuEdV3kr712cGpyKAwfNDR1QqnpH2knGKmjn9a5O11BZup5rQWb3qeU6VI6qN8/SraN61zMVw4I5rUiufWki+Y2lcdqmBBHvWX5w7GpBPgdeaA5i05xxULY4INVmmYt1pwkBqXEpMlJxRuNR7s0dOamw7ku4U6oNx7UoY5qXEpMeT2FJSkjFMyOtSMQ0lFMLD8qABuDzUe7FBOajNADt1Mpppcj8aAHAmndxUWacD3oAkPPWmE5p26mGgAGAPU0m7FNJxzikyT2oAkBFBNMDY4phY07AO96CeajBpd1Owrjw3OKTzOtRFqrPNgkUEtl0ygDJqo9wCcCqEkznjtUIfHJNDZm2aHmk96Qy+9Zj3Crwarte84Hao5jNyNGaXC/SsG6udmRmluLxQCScGuUvrwMflORSMpSH3uodVB5Nc/PdDB71TubkFic1nvPuzmrRy1JllrjHLVnT3RlbGMAVDK56A01ACcmrUDllMAJCR712+i6HNKN8vy5HAqDwzpf9o3quU3RR8/jXsdho4T97sx6VagOLucwNEsvJAZPmxjJrl7/RLJXfCDOOPrXsE2nqkEk0hxtGcV5VdzNJcOX45qZ6GtNXOIl0aRDmPkipbUXFo4UqSB+XNdI5B4q1ZwpIxyMgVzVGdEYFm0zIof6VsxJ60sVuqKABwKtKmOlcjR0RZIhwavRk5zWf8ASrsZwtIFqdN4ffbqCHsePzr6v+GdtjV4SD80YLA+oxXy74cigkkiL/e3dPSvrf4dwBLl5ipZrSFpOO/GK4K6uzpitGeffETUJNS8UXExGNpI/LArh3UHrzWp4jvBeaxc3KsF3uSR6VgNNtwQ/wCNYo5Ku5P5ZXdtbbx+lRbJVwA+4k9TVeWYqqsG3DqKqSzbwcPt9qDLluWZPkGScmq7GRxuyR7iqrXixkqE5H65qBr/AHZPKZGPbmldGijYsyQSOSBlfcU0W+TtY8Hnk9ax5b++P3QTt6Ajg/8A1jVY3GqykLOMdOnY/Wi6G4M3CkMeFkbYD+tV5J9PRgfPwQfwrIeO5BxcNkLnA/xPeq7iKPoAS3SpkVGma5vrD+Bmaqr3YDBgCuPzqkzqMZAyRz+VQNcHcVVc8Z3e/wBKycrGipMttIqrkdKz5pm9fyqOS5IcZOe2D61nXNyATk49OapSE6bG3MpCHPaueuZctyKsXU5GSG4NYc9wcZxk10RmiHTZXuGyea52e7H2hoyMYrVkdmyTXM6rhFa4XqB0rWNRXMqlPQivpzLIIkbJ4FVNe1JILUaJZnjgzOO59K56S6n3blbBHNUjkkseSeTXStWccmNI6YFJ0NLmkrUlCUU7FLtHrQFxtLnHtT/LH94UohBOPMVfqaBOzGCnA0xvlOA2fpRuFFxcpODmpRiqwI/KpA2KVwsWFxnmux8F6u+k+IbdyxENwfKkXsd3C/ka4pWzxV218wzKV/gOc9xg9RUztYcFqfaSzqu1SOMVaR88JXCWt3cLbQgSFgEXqM9qvRahcjo/I5rwqs1c96FG6O8jJUD1NWwSfmxXny3t2x5kb86uRXt2DnzSR6Gs+dGioM7xXH0IqdZgOOtcSl9ODy2K2rXUYidsx2gAc461hOodEMNc6hWyBzgVbilyBg5296xRdREYU5BHBx+dOjugnToRXO8QdccA7HWRSEEY6VpxHc3HSuITUJUwCwPp9amGs3Crw3PbbR7dMr6hI76M47davxAkgHr2rzyLXb/HLrj3XmrUPiS6V13MuM9dvQVm6g44GZ6ZEka/eJOfataFIG2AoCoPXvXlUviu4Rz9lZGUHjIOTVyHxjeBRveNcnkFanmKeCmeoNtJxENqjpWlphbzkK8uxxivKYfHF2iGNokkOcg4Iq3a+O9Stn8xY4mP0IwaxlIFhJo+j48hF7GklcIpx1rxMfFbUc4FnH9dxFNf4p34OJLFNrejc1LhctYeR7VCDGm0H3qUt0AHNeML8ViB/wAeeQOvPX6Ug+K8h4Gnbu/3gKOQXsJdj//S/MQH0p4Y4qqHpwfBr4JM/VlEuA0oOKrh/WpA1SyicEGnbqrbxT9wx1pFpFneM9KfVQOO1PD470BYuA0uarCTjrR5lDRoi1up1Uw/NWFbisykiSnqCMGowanU5FNCZKlWRwKqrjHFTg5HWiTHFD6kTNRq3epM+9ZpF3HcD61Gz8470pYVGzJ/FT5RqYxmqPcR3xTyY/WojsPQ0rDuhd7dc0ByKj4znNLg+tFx2Jd5NAZxxioicc4qaMgjkZpDJ1kc44zT947imrtAoADVMmWkSB8Dgdau27IW2uPyqoAMcGrCHgcVmy0jQTymOasCJVPyng1RVc8rxirAlYKQp6VJvFGjG7RnPXFWBdgfe61kLIxFKDzzSsUom8mpxkbCpOKlS6DZwcVzrZByKVWZeRRyofIadxfXa8RrvQdfXFUf7QmIZVJQnt7Vd3FgD0qQLExzt5pKKuNRMtb+cjbu61N9quDgh8MO9W5IIJHxtAP5VSmsmTlDxWijEdmakWq3JUIRlh/F1zVw3l6gBVsjvmuZZJkGQ2Kkiu5x+7d9wPY1Lgibs6m3vt5Kypn3Bq6twuRtyfrXOxOFIyRzWzCduH2hh9azlHUuxoNNv+VwfapoiFOccmoEuY2O10Iq4iox4OPrUtgjTt5C2MHirhYKM5ya5e4luYTtg6jvVM6hfbg7sCfpirWoztY71YjzzXl3ieEjWHuFGInRceme9dIL6RvvDkVj+JLyJ9Ojx9/zB+XtXoYSfvHnY2N4nPRnIyOK1rVscVkKMAVo2x5r2up48TprZ+ADWtEPSsS2IOK2oT0rSLNLF4AYqOaDcufSpY+asFPlxWqRm4nN3NuGU461z0ysuQRiuzli54qhNaJL94UNWJkjjZGIFYl3Iea7i409cEAVyup2YjQsKlmZyjSup9azru8m27QPrV6UEMc1kXUU07BYVJJ7CuiDOaRWWVicZ61YEMb9eCa19P0G4YB5BhvT3ruNK8IRzwyPcLgkcV0whc4qjPIL+ILGAgyc81kNFKnzR5Vh6cV9FXXg7TjpbKif6QFOD7ivGZYWgu3tbhdkiHBBrT2Rw1KtjMg1TVYEAuWMkfv1rpLG7sr6HcjbZAeQe1Y+pQDAUfLmk0C40TTb5m1sHyXGAw7H3p+zM44g659OnMfmoN6+orOZHQ4YFSPWu107xF4PsLC6kguQ6gFlVuea5aLxNp2qtgRbS/rWU6VjaniLkCFsirUUuw5PSnSQL1jNUyG781zu6OlSNyK5K4IPNbVtqUqYBOQK5ONsDircU+DzTVQ6YSPQbTVSOvArp7XVAwxuzivLYJy3StOC5dCMVXMdcKh6vHqXvitGDUARya8xttSk6OOK24b5evb2p8tzZTPQUvCehqyt4fWuHiv8YzzWtBdBu9S0aKR1CTZI96vRsMcmuejk7iriz46mo5ijaEg6A08NzWWkhPerCSHNVcpMuk5FGeKgElP3DvSaRVycHP0phYCoi4FB29jWUkWh2800kcUw9aOMVIxScVEzHtTsGjHHrQBEMnrS08j1plADcnOKfkimHHSjcCOKAJAcml5qLJzkVJnPtQAhNIDzxQcfSmBscUmwHMcVEzAjHehnJptLmFcd2x3pmeaCeeTUUjgDrT5mJsbJIFHNZEtxyeamnkJBUGseRyOBRYhlv7RHnr0qOSfjArKdwMkCofO9TRdmUmXWck1Tmm8scHrUct5Gg4OSayJ7gyfSkkYuRDeXTHIzxXO3N0DkL0rTmieX5U5NRx+GNSuhujWto02c1Socu8hzmoSxNdHeeFNXjAEa7iOvFUF8NasDyuc1rGgzhnVMkgVa0+xudTultLVCSx5OOAK7Kw+HeqXDqZ32rxmvY9F8PWGjqq28YLAYLV0KFjmdS4vh3QLbR7BEC5cjk+9dIOFwBRkKMtWBq+uQWFuxU5dsgVm9Tammyh4k1b7NCbeNgGevMSxYlm6mp7m7lvJzLIev6VERkfLzXLUZ6lKnZEBRnOFrf023Ma/N1rPt4iWFdJAgUDNcU5amxMBS4NL0ANScE570wGhct7VbjA78VGAKsW5QNlxmsGaRR2PhlUhukuJAShOMCvsLwZcW2naLqN9EcM0WBnnBPavlrwbbedKCqBjnJz6V9NaZapF4Uu/NGDNIBx9K8zEVlF3O2nS5lY8B1ONp9RnlRcb33EdjzWY8DFmhALsM8LzjFeyJp2nqzEJkE1rW/wBgtV2wWkYYD7xH615Es0ijseTTbueDJpt8WVUgdi3TKkUHQtZ3fJaO2OmR1r6ROo2zW4jlt1WQDAcAcVl3VyhZWinCKOCMVyyzbsjphkTe7PBW8M65Mdy2bJuGefamJ4R8QS8GJEHTJPNe6NcJIQQ2RUbgEbUH4moeaPodFPIY9WeKf8IZq4I3zIhHXPNTjwPqLjEl/tB7BQeK9ljs7gfvHQH098dKaQwYqQF57VEsyludKySCPJ7b4eQuu2a7kkI7mtaH4daIFIIMjHJGeqk16XFboUMkjY+lLiAZKkn3rCWZyZvDKYLocbB4F0OFQ4iVCPxJqObwloYUssa55P1z6115EYyRzznFUZPmZl28D27VzrHzb3Nv7Np9jy3VNDsEViIVOSe3IryDWtLtopguDg9x2r6XvrMTAlVC54z9a8/1rw/FKC/px78V2UsY76s4MTl66I+fLyCBD8q//WrEmUEE44Feh6jos0crRoh24zmuSutPZCQ2OK9ilUueFVw7Ts0cpKw9KybqMzIykAg+tdLNBGM5A4rHuIiOegrpUzklSPOrrSZ4ScHcPasp4ZIzgg8V6RLED15zWbLaxHnb+NdcMR3OOphlc4XGOvJpD6Y5rqns4jnAqo1lHnlM+1dMKyOWVBo53ODzxSbvatSawfnyuKp/YpAMnk1rzozdNkGajbGc1M0MgpjRNnAGTUSqByMaCuOKeDnpSCM5CgHcew5q9DpuoS/6qBjUe1Q1TZWBHf8AKnrnOa24fDOrynDxBfqa2oPBV5KP37hPYUnVRaw8mccD2r0v4etardyLPEsjOOGIzjFSWvgi1iGZpDJ+ldxoulW1kyrAoULyBjvWFSurHVQwbTuzsFKN06CpR5fU1AFUDmp1UHkdq8eb1PZjHQlBHpUocdqgCgZweadyKllxRbR/WrKzOpDKcEdKoA4wQc5qyp6UWubRNi31Rk4nAIHoOa24LyOYcLx1rkUAJzitO3Yx42nrXLVpdTto1O50YzJklAuKVERTjpVaCWRtqbsZ9auNlGAbnFc70O6LuTxMNvH41MQpGQOvrVJDzVjfg81PMXYVYhnJqbYo7dKhDfgKeJFxVczAsIVHQfrUwmx0XiqfmAdql3qRk8CpcAsTeY3apFcHqM1AGReWbFHmxjoeM07BYV5VQZIxVR3U5JyKV3QZ7j61VllO04NTrcTif//T/LPd708OelQUZxX5+j9csWlftUm/3qluNKWpsVi7vxSh896pbzTg4oQy7up28461UEnYU4P6mmohYtK/vUmTVTdUyvkepocbFosqanRiKqqealVjWbQy4DxU0ZqorfnUqt6UAXl6+1SA4OarI4qQsD36UMET7sc0pf0qDdQTmpNLEvm1E7kc00ntUZ3E0rhYazE8mm5xzS49abxTAfx2p4GQOeaiHAxT1znA71my0Sg4OOpp4bk1Gi+/SpsDrjJpM0SLCyIRyuKlUqcgCqw/OpVOGwKxkWkWlReq8VOgJGQagTpkc1KuMUjaMS0A2MinCRAMVAjcYFTKv94fjQy0ORo88nFWNynBznFQbB35FPULjaKDUm3Z6c04fSmRkjoKs7sjBXmkyoomhljMWwn5h/KpFI6Hke1UyyDouGp6YDDBxUXHYnZskbR+dW4JEPDgGqRUt8wNAJBqXLUtI0Wh3gkj5feq/wBjgJyBg+1PWR9uCKd54XgincfKiI2uOFGRUkSSxEc/LU8ckb42Egng1cjKqQr45p3FyjBI4GAN1LvYj5SQfergU/w8U8oSBuGam4uUrx3EgG0kN9aM5q39mV+UwCacllL1I49a0TIlAoupzwMZrP1Kxa4sz6qQw/Cuge1YHqcVBMkqQsVGeK3oytI5q1HQ4peVA9KtwNg1TOVlKtwRnip04YGvoYu6ufPSjZnR2jYPtXQw9BXK2r8101s+VHtWkWWjUjq6MHFUYuuKujpWqY2hjoDziqxjHpV3GfpUKujsUByVqr9zFoz5YRisO7slkByAQa6x4+M9qypk6470nYiSPJdT0/y5fkHy5pdNhjSdd6/jXXala5JYDisMW5ByKaZk4XNQwhXDJ9a7fTPntlMbZB4I964aCQjhjmuj0u48iRSeUPWumnW1OarR0Ost7UyMeMkV5t4/8GzSlNatI8yIcuB3Ar2G2SP5ZIzkNWk8ImjMTjcCMHNehGVzxcRFnxjclJMhh+fasifTFulCsvGc5r2rx38Pryykk1fSlMkUhy0YHT6V5Z5kiosZBRl6gjBBqrHCnY5qTwmGDMp2jrVu20ww7QDjHeuohuEMbBz94YNRxLbR7tp8wGla5opEsRdFA3ZrRtoJLyVYohkmq1vH9tlSC3Q7nIGccCvonwP4BjtoftVz8zkZ5FRKiddKqeJTaDfoDtQnHtWR5bxymOQFSPWvrifw9AvzqoFcxf8AhGxvIypRVcdDiuSeGPRhNHgFv0rTRq6u/wDBk1mxYNhDXPPatA5jcE471i1Y6YoRJXToeK07e4bOM1mqntU6jYQelOEjS7OmhnJxWnBOR3rBgIZQRWjCrN0Na3uaxZ09vdEYGa0o5sjg1zIZlAqykzr0NYTibKR1SSccVdhkPSuYgvMfe61pQ3S9c1nsaHQBvSnEk1nRTBuKtbiec0y0ybI4zUq47VRLGnhyKTRdy2TS9DUStnrUoGakYZFMJweKU4BpuRmgAJzTM9hS0wmgBKM0UmR60DHbjSbuabkZpNyg8UXAeTkYqOpQR/DUbHNZsQlJnr7UEgcVGW9OKCbETvheaoSTg8Crco3LzWdKnXPSmhNlWScAEtwKznlDElTTbxmJ2L0qjLKIx71SZlImkYnOKz7iRgvyiiS8jiG6VttZE+qQMcqeBTMWS+XIx5rbttEe5wScZrm4tWjDcfNXT2mu7DvAwKuklfU5q3N0OltfDtlbqN+Sw710VtbQoojTvXNW2vWs6fv5NhzV+216wjfamWPr2r0IWR5k4ye504gQDJGfam/ZrYciMAisyTX7BR874rFu/FMCArCC5rRsx9lJnWgY6dabJcJCu5jgDk+wrgX8WzgERR/MeMmsW71Oe45lkPzdhWc5I2p4WTOp1PxOgVorfLHtXC3d5JcyGSXn0HpUUkw6dzUAUyHFc0pnp0qCiSLJngVqxQtt56mlttOVVDtyxrUWMDGK4akjoRFawBee9air2FRxIBVgAA5zWCWtwYuMYAHFPHrSZp3agcUP96kjVnbanU1EATWnZIA+78KxnombwR6x4Tt1ht1keXl8D6Yr6DaeO18I2sX/AC0kJYg98nH8q8M8L6WWAa5lUgYIUdq961i3hjgsrZRhIohgfXnNfMZjVdme1l9NOaRwX2m6BIhTI96Y8l+/3/ljyAa6TyWPKgKKlSBCQXIx2HqRXzDkz6+NkjKt4pnHmOzMOg54rQazUpmRM8j8K1UjjVMlgpPf0p5uoVXDSb3zj8agoyPsjg5aMKOgFW0SYBS21Vx6ZqcShieN2eCPpxVogMNxTODxxxRsMpPbscM7E49Pem/Zox+8bkAHr+lXwoYfKRxUgjyQXHBGaUm2Biu6DcsUAx1weakEFzIoZFAJPp0ArUVrZc4jHcHJpGuYQQNwBPp0/GsXFlGI9vKG/eqQvJOKY9hNKMxZ5HU1uNdIeWP3eMAc4qB9QkUkCIsnbAx+FRqDuczNpc8efMYY9OtZM2nAKzSYPH4V10xlnJfZg57nGK528Z+RI6qB0561005MiSON1HRI5wQVyp9OM1wuo+DY3+by9ueMmvTn8z73mjHsDzVCdnKncS5HHNdkK0lszz6tCMjwy+8DADdb7Qy/XpXH3vhDUjnawUe4r6JmgLnac/Sqc2mhgSRn69q76eLZwVcvifLN34Y1SNuE3/SsCXT7xDhoHOPQcV9XS6ahOMAY4rLn0hGB4UD6V1xxiOOplnY+V3tLkfejK/XiqrwkdEP1r6ZufDdpIMSL19BWM/g6yOQkWBXTDFo455bI8ASzDjIAH1phshnBXJ9q9suvBNtj7pBPTHas1/BUn/LMkVX1sxeXy7HlA0+PoUFW4tMtDgtHzXoj+EJoxkPuI9agPh69T5gFNL62xPAtdDlorGBOIoh9cVqQW4UAqu2tddNuIwCy8elWo7OUEbkwPU0niew/q1uhSigY9OKtpA3fvV5VKjG1mPoBU4X+JUIpOtctUmU1gccnmr8KHO7pip4xu5KHHrVyJST8iE/hWTqFqmyFVJ65BqcI46k4q6kErNtCnNaKafMcF8Ae3Wp50aqlJmMo/CpPLduACc1urYITnBOK047EBQCMGj2qNoYZnK/ZJGKj9avw2jAcKWFdGtquKl8rA2qazdRG8cKZKWu7gJzV1IgAB5eMVfWM+tPCfnWU5nRGjYhVWI5qYtIRjrS89KlUsDnFYPU1jEjG/OTU+8/w96mBRuKUJjp07UWNbtEKl885qwAOpHNKoOeRUm0+lA2MC9qeAw4qVVJ6ipV2r1/Wi4mVAr9xTZN/HpWkWjxwc/Sqjv2p8wGefMzuA4qCQNn1rQccY3YqpL8vSmtRM//U/K+inAU8DjpX59zH69ykVFSlT0xSFPai4cpHRTtppQmarmDlGing96NlOwcetNSHYkU5FSjpUKqR3qTaeDVvYEiwpY9anXNVkB61aRSawkykiVVb2qZQ2KaFqVVbsKzcirDlDdRTvm6UoR/WnBXB61PMNIAD3pw46UuCKADS5x2EoPHWpKCM0cw1EgJJ6dKaBUxUY4FN2HigdhlOXrT/AC/WnhV6GktC0g4x1pyhMc5zRjPAFTLEF5yaUmWkSLjHNTKiEcHmowSoxjIprAnkcVm2Ui7tKjPQe1OTrycVnLLtPBDCtCFd43A0jaLLikAY9aRXJJyOlCOQMFSCKdvcZIpGiHhgetSEEfMBiq27GCV61aGCoGaEyyaJieSamzxgDOe9UlznOeKnU46Umiokh45K8VNGQcjGMetV1kboealV8nFQy0WU9BxUqRAt61WXr1q2rL1B5rOTNEifywRjGDUDxnrgmro+ZA4br+mKbnHei4ikgA7Yq0qkDJNSbs9galQKeq81rEBElkTjORVhbrackZxTfKXIK8VMIFbqMUMCZbnfztxn0qdLiTgdqqrEB3qZVAHB4H6UXA0o5gwxmn7VYEYrN2yJyhyKd51xwcYPtVReopK6OH14Czu9x43GmoeAfWp/GFu88CXGMMjgk+3pVG1k8yFWIwa97DVLxPmcXC0zbtmwa6O0kziuXhPSt2zbHFdaZjE6WJq0V6ZrHiY8VqQtla3iyifB2nFUYLdop3fOQ5zWgtSAAnPaqaJZGQCMVnTxcVseX6VVmjOKFqZOJytxGDkGufliCniuuuYutYNzEc46Yp2M2jFIHar9nKynBNVnhNNUtGcGhIR3mm6pJasFzlPevQLO7hu0Hl/eFeMwXSgYbjFalrfSQvugkK/SuunVsceIwilqj2mGJZkaOYblPY1x+u/DbR9WImgiWOTvxVrRfE1q6CC9bZIP4uxrsoLyORcxMGHsa74VEeDWwziz5+uvg7NGzFM4PTaaNP8AhFIJ8ybgffpX0rbv53NWlwp5q+ZHPys888PfDqxsEDOihgQelej/AGeFFWNRtCjHHFSLInAzUjgEc0ORpFGfLbxsOuawrywOfkHFbEkxRj2xULXWaykdtJtHFXmnSSRlGHFcZqGjoqkbct616VeXSKSD3rmpXSWUjqK5ZRPTpSZ5Zc2wtztYYzUSRI/UZr0e9s9MvIZLeX5ZAPlPQ5rkrDwxq97uFrIpZOoNZOJ2R1KUUGBgcVoRLt4PWqji5tJmt72MxSocY9fer0bbxuHNSmUyz/Dn1py9KaCuBntUqlTSbLSJVGTV2IHiqi8VbRweKzlItI1Yn2irSzCstCD3qyp4FJSNUaIbIAqQOBxVNWz0p+7FNody6GxU6yZFZoJqRXI6VLZaLxfJzTS1VvMJPPFOzkcGkMm60mecVGDjgmng0ALTSMUu6mnmgQ0ntSA0lO5rMBd/aombn0ofPQUw4I4oAduz36U3OTSZGKYSRQJsjldRwazpXzmp5mAPzGsWe6jXIznFCIbGTsqDLHiuK1LVAsjLCM49a2biWS5kxnC1F/wjr3K+Z0/rWsYnPKWpw7ySynMjlqdHCT713qeHoITkjc1V20iGGQg03FkqaZy8UO08DrWtEGxgdK3YbCz4LdRSzwwr9zGBRYHqZUQ253CplYr04pzMg6dKjaTmrVQXs7iMQTk96Y04ANRFjkgc1VkJziq9qNUUWll3c9KjkbJot4nYZ6CtSGyBOWFQ6hXIjHCu56V0en2qsAzDJFWobNAMYrWiQRrxwKxqVBcpDt2jAoUc098/hTQMGuYvoTjHSnD3qMVKorZIxHdqeKQDJoPHFZTZtBEkYJYYrpNOijmZWPQHp71gW65HI611WixG5lFuv7tiTz71yVpaG0VqexeDrJJL2Jgf9YRkdsZ616drl5M92Yenl8D6VzPw/wBML3Y24doRk/QVq3lvKl27TnLZ6dgK+WzLbQ+gyyPvXE82QrtJ5FRLcGI7upoKhmOD9KljjVgOa8NxR7/MxGllkQ7FPfmljMjrnyznuTxir2I9oXnnjjrVhBFGmCMY65qHAtVSvCSqcuBt5571qJJM0WN+SRxge9Zyss0n7lQxrVhjZuZHAIHQClyJBzFdo3JJizkd6FtXZAZGdunf861FXkIc7c5qZbTCho4yeozmsnIuNQy4NOV+SAcH+LPWrrWflJh1XGew6n/61advazOCwwoHXNSzQjAVmAp3VhyqO5gLZPI7O7DnsOwFVjZzMwjKsy9cDjjpXSLaKRuWXP0FRzKPuKjLx82Kz03HzMw30pETewboT8zcD8qoNpIxuWFV25IHXtXTBeQQhIA6HnpSSzyzKEEWwDngdaOYWtjgp1hVjG6LgZHT064rIuLG3OWSNm46dq742qSHY0W859PSs6+tbvGEh2j1NaRmRyHns1lcdFjwg7+tU30+6H3VyD+FdrNaTEbHYKD+lULrT54kzFL5gx+NXzslxOEudMlwXx+ANZb2M4G0Ln8a7ZrB8klsBuo9KpT27quyLkmtITYOCOJeynQ7ZFGOtV2s3J3B8e1dYbTzQRMxx7daovp6hC8RO0dQa39oZumjnmgXGM8iqLBc7cZrontAqF2zj+tVvsSE7wMHvVe0YvZoxWgiI3BQD9Kq+RAvIjGa3JIShxuGD7f1pRBbtwxIb1xWkaxLooxUS0/ihDde3FRPaW/VYfpW+bdUG3G4dzj8qkjto2GMHiqeIsQ8NE5z7DE4+aKnDToQfljz9eldT9jP3gMgVKIj/dAA9qn6wyVhYnOrpciLu2IAf89KsJYyKBlcH1Arooow3A5xU7uUAVelL243hkc4lpg88etTNbgDpx2raKo4z94mo1gHIpe1YvYGckO05A61IIgx5q20GzODTQjg80c5r7NFR4GB+XmneS3Wru0+nWgoccHFPmDkKghOMg0eW46c1MU5wDke1SBW7UrhykSwt1PWpfIb/JpxLLUwywyCKnmYlArCJs5p+x/TpVjJUDkU3fg84NUpFcg0KTUgU9aQPg9aGkxjpT5iXEcFbP1pTHTdzH0p3mvjBxUonlGkFQKibdn2qRzIe4qszOM96tMLEUqSk5UYFU5FlB56VZaW46YAAqs5mYZyDjtVRZVmf//V/LMYNPyBWd9oHak88V+f+zZ+wGpvAo3elZfn+9PEpPejlYF5mB6mmhhVMyj1pvm+9LlA0Nwo3r61nGUetM83mqUQNdWGetS7hjrWMJuc1MJcitLjuaYnxxVlboYwRWFvNN88g1nKNxpnTrdoOtWY76IDBFcf9pbvThcHpmsXSZaZ2i31v3OKl+22x/iFcSJ2PU5qQT9qy9gx86O0FxA3KsDTvOi7muJ878KTzz61SoMFJHceZF/eFG+PnmuIW6Zehq1HetxzT9gy1JHWbh605Stc2l2e5q0l371PK0NWN7CnvTCMGscXmW+9VhboEcmpaKRewTwKnQEdaz/tKjvT1u8d6iRqlc1wHHIoeST+IZxWcuoL36VMt6u7KmosyiUMsgI24Ip0UiCTqR9Kf9tjPVR+FOW4syQyoQR1osUkaEbORlOSPapkV5cjKg+5xUS6nZ7gucD1xUhNtIT84ceo9KmTLTHAMrbWXOPSpBtB71AQq42HiljaXPXj3pRka2JyoxkdacDtGBzTBNKhwyjFOExHzBacpDiSbiR0xRu5460onRj8xA+tTxxQzN8uM1m2WiMPg4bIrQiCAgg+9WhpaC3MrgkgEj0xWaoJO1P14qJOxrE1Q0XRTgntThyPUVnrHuO1+COc1eVCvWlcbiA4PAOKkV9vcGmq8i8gZHekBVjkrVRYmi7HIzj5Vq0nmBcZ60RRpJHhG2HFPSF1HJ3YqmCQgV2GFwD70KWXsMHrU2Mc+lMdaEwaJY9uODUwbYAAOKqxq4OVORWgiZTmrTJSKOoRLfafPatGD5i4B9D2rzOykdS9s4w8RwRXrkcY5Bryu5t3tvEUiy9JAW/HtXq4Gp0PHzKj1NeA4FbNu3NYcZAPFa1u3IxXrI8mLOngYFRWlCcGsa2btWpG23mtFsaLsaqnvUwwaqRuCKtAVfNoS0S5I9qR1DCnqcinAAjFVchoxriAtnArnLmIhjmu1kT1rLurZWBwKq9zOSONKKSR3qNrfNa09vsOarBMdaalYixkOhQ4p0bsp4NaxhVxg1Sls2Ucc1aKRIs5/i5xWzZ6lLEB5UhQj0NcwAwOD0qRGKnIrZMznTUtz0C38UanasCH3DvXQ2/jvIAnQqw/KvL45t3HpUnmnJQYNWps5ZYGLPXh42smALKQTR/wnNugyG4715Jlscio3CntV+1Mf7PierT+OtOYHdyD6CuZvPGxL4skIX3ri9qng9qjZD1HNDmzeGEijRu/EepS5PGTXN/8JDqiTiZCQF7HnNXGRsdKoTRkg4X9KwnJnXCmkMuvEFzcXAlkBX3HrXV6V46s9OidY8tMw7jrXEvavKMKOTU0OjFfmKk1CmzRpWsb2oa9/akv2uTO4jGD2pbDUTE4DDchPSs5bBkH3OK3rLTG8rzHTaR0zV3M20dPLFBdW4ktMBvy/OuZkvZbVyjrgjrWvbSmMbGOMdKqalZi4G8feFQQpWHwajA+OcH3rVVvlDDvXAFHQ46Yq1bXk9u+QxKjqO1Q43KjWsd6j9qto+OprlbfVYpevymtRLtSAVNYuFjojUTN9ZB0zSmTB5rJSerSy800WaCNirAYHpWcsvrUyyZ6VQ0y7uNJu96g3ZpKOUfMWM5qQSEDFVlPGKduFJoEyyJeakyOtVQe4qUEkYqWUSgd6GzjA4phY7doqJncjAOKgQ4rjjOaacdqbk4wTSE4FDBsMjOKryPgHJximySY5FY95cnBSkZyZDeXeSQD14rDk6cVLI27HtULk4q7GMpDEUHrW+upGOBYguAO9YKYFSM1XFmUtS/LqJDFh1rKlnaQlmPJqNhg0w805SKUUROWPQ0zMnr0qUjPNGMVJqR8nmgKSc1YRMmrCxg9qYyukO4dKf8AYtx6VpRRhRx1NWVTPSpYrlOG1VccZrQSPFSiPHNPUc1m2CV9R8YweRUhPamKcd8UrHPSocdSBCR36UwketRs2TTQaSjYZYU8+tWFPaqa5Bq1DwcmrvoJR1LAGKU8nFFPHrWEmbxiWIGIGAOldlotsGmQn7wO4EVyNum51B6GvSPDttHKB82104Gf5Vx13obQjqe8eC4za2Vxf27Yfy9rH0z0qB5HmneRiXcnmtvRhHYeHFfaDJdOW57joKpme93EhVAz0FfI5hVu7H0mWx0uMSEyIoVCD78d6lW2kQ7nAVeByeaux2/mJuklIzxgf41IbDYQWBK54ya8pNnqtkQn2/KCoI9Pans0EykyqWOc8cZqdFtF3LsGT3p7qrOOigdB7Z5psFEpESwsrxR9R0A6f5FPtFvpJNvQ9cAdvetyGV+ybgf5VNsnA37cYx+ZrKY0xI9OvDtMsig8d81bis5UkLPMcDjHSrqokYXdLye2Op+tQebCTj5mPqKzSZPtGWIILWHIllJwOTnFKkMXDIA5x1PNQ7LZRumX5T69QfetFJYk+4M45zTlCw+cjhASUAjCgjgCrBFqQZZWO9ieAP1oMs0rAGMKRxnFRyOY2KyuWY9/T8qxe5V2yF5YQW8uNiOgzzgfSoCxI3bc4qw8sB6zfMBkAUjRLJH94rn+VMexlXEUxwYwFA64OMYrFmuNyhN249Tn0rdJkKYQMUyefUVk3VsvmARDAxnk9PWtIFpp7mRLErhixXGehrJkCKcq24Z4wP61uzWcvmMyICo4zng1SeKQlkwE6j6E1SY2jm7iIZ3gZJP86oPbs5G0DH9a6NrQIhDuGPcLWcbbDMVGFPSrUg5TEmg3LtyB6+tZk1jH5LAMxJx3rovJYLv2gYqB4C6/w4+uCTS5gcTljZDDKHAB7ntUDWDw4LSBwemBXSPbxpy2d3GPTFRtAGwXxjnqfWr5g5DnJFjMflMob0yKgFrnLMMH/PStqULuwoGagIKjlsseelaqTJ5DK+zhziQHjinfYhF9zJXr71fIfGWzTWjGCBkYOKbZXIUXQHAK/kcVFs2nDAsatPGCcDJq0kTJHyCc96EyGigsqo2FjwO461ZKpJ96MnFW4SsALquGP4mpBJLIP88U7CsUQhX7qYWh44+CQRVt1cdWPNV2Rj3yKkfKRARBSAmT600I/wDCBmldSRgcAUqqwHPSqUhWIju4U0jK4Bz09KnaIueGwKcbd+CWLGjnQcpApGAcAVIAOwpuw4xiplBxkmjmE4kMi/pUXToKnZS/G7FR+WF6MT9TmqCwnB6DrSmNSOTikwccHNIo/i3UCsP8k9jSFFJwV6Ug3nOGOKdukIGevrVhYUIp6jBp/kxkYppE/YgCo3MvcfjTRLiTGAAcA49hmq7+SCcg5HqKTfdcASkVHICc7myfWrSJsV5gR8yjIqlNu2naAD61NNJLGSoyQaps8jD5hTQH/9b8ihI+OtPEh71Vz70u418bY/XGy15ppwnOapZPrRk0uUnnL/njpR5tUN3vTQ+anlQe0NDzvek80etUt3vS7venyj9oXRMB3p4n5xWdupu80+QOc1TcN0FN87PWszzDnnil82ocB85pGWgTVnCajzankHzGoJ8dDSi6I7Vk+bR5gp8iDnNn7Tmk8/NZAk9Kf5hxVezRPOafnUouCOlZnmGlEho9mHOzVF4w4qwt3WH5hoEhz1pOkhqodEJz2NOE7A8GufFwakWc9jWTw5oqx0i3J7mn/aW6ZzXOec3c08XDetQ8KWsQdGl0vckVY+1p2fH1rlxOSeTUyynPNH1cars6D7dIvH8qnW4YqOv4VhLOAOf1qdLt14iNZyomqrs3UuNvHUe9WFugOgx9DWItxKfvYJp25s7j+lYumaKqjoYdQlj+USYU+taQ1F+PnDe4rkkdCPmzU6PCOhxUeyTNfrB1ianIp4wR61aj1KN/vrjNcaJQPunFPFy69DmplhuqLjiDukmtpCA5wD61cH2TIWGQqe2DXCxTSSDniryNIoyPmxXO4NG8aqO8TzioMcx+XoM8UZvA25yCPQVw8OrmFvmO361oxa3NuGxw471nKDNo1UdpZmSQsgXkDP1qwZMDr+Brn7fU2xvjYRt71eGo+YRvUMfY5FJo0Ui+CBz0zUqqG56ZqiZI24OQakjZ1+62RTurDNmCdUUI6njuKtpLG56kfUVjCWTGdmauw3ZGA68UKQzSKk/dINKI5mGAuagSUHoatRzkNxSbL5SQABcMgBFSp06kVIzPtyRTAVPPehTFyj15zXA+N4xby2moRjBP7s49ua71ULHjkGsPxNZi60iaN+sfzj6iuzC1bSOPG004HIWj+ZEr9yAa1YG5rldHuM5iP8IxXSwtzX0sXdXPlNmdNatjmtZTnFc/atwK2omyK0RqacLdqvKeKyY25rSjORjvQjQso2OatLhsH1qhnBFTo1UQ4kjgjiqzpkHNXWORUTKOtaRRDiYdzb5GRWQ8DDNdTKmRWdLDntQZ8piKmDzU23I5qaSLBNCLTixpGc9opYtjrVd7QjpXQrGB+NK0CkVrGZNjlxBKp3CnRxPv3d63zb4PSmmL2q7lIzCJAKi+bua1miHaoGiPpijmQWKqsuORSlVHanMpFNyafMS0KAoqcPD90qDVQjNJtPWk2S0aCRxNyFGK1rOOGMkletc9G7KcetaMVyw4qSGjogtvncyDilmaNxgDFZSz7h1pfMOOuKSMmjPnG1zjtUsUysAueTxUVw3X3qiDg5FMZLd2fO5RwKyZIypwRW6Jt3BNU54wx3CqRE0Y+3HPSr8E7LzmoGXrTcMOlNozjNo6SC5DYB71pK+O+a5CJ2B5NbcMpOKwkjsp1DeifccVoKaxoOSMVpIxHA5NJaG6LqkkVKBmqsbFqtLTWpdwxg0KMsKlCA9aesQoYx6qD1pV61IsZAxnrQQwIHas5ItMYQTUJGDirTYFROVPKjmpkhkNQSNjr0qdgazbuUKdtQQyG5uFiUkdT0rBkkZ/mbvUksm+Tg8ConzjnoaqJlMqkZOKiZctjtVhgOlRsMCrMCHdjinDmkx+Jpy89KEJkRjJNM8s5xV9VBPNKyDGaoIszxEelOMYq0VNN2YosaRZEoAHHFWYwDURqaLOcVFi2Wx7VYQA4qNBnrU6jFS2SSY4oHHFOHIBp23PNJopxI6VgQMetP28jFNfJ4pE2K5HpSqhJqQJmpUQZrNspQFSLuanAwOKUHAwKSplM0USVRUqjJpijj3qxEB+dZNmiRo2IUSpu6Zr0/w3A88irAMtu6GvNLIfvQ3Zete8/D7TDcalFt4ijG5j9O1edjZ2RvSR6vcCOKKG1YYWFAAD6jr+tYUrsT8owD3rS1B2kuDLkKpOOT0AqFWthgO4fPPyj0r4+tK8mfU4aFoIqqt8GZSNi9PrjvV6Np2X97IX9qkE0KvnYXI9TSxPIS29FGTwB7+9YyidSZYgdH3FVA2n061ZjTgszYyentVZU3Hc8xwCPlUcU1ofMJClmG77vufWsgvc2YJbXdkuMKOufT2rRS9tlC4cKBwAASB6ViR2ao3lpCQT3NXYlGN0gCIBgsOTn3qJE2Re8+PfuHz5GOmOTVeOW4V/KEYZAeP6095oFxIpLIDzikN1fSOIreAxkfxH09qhSKjE143uGVhEoGQc8duneporQhPvben1JqqE1AvhmCE/n9KtRwSIu55c+w7GlKd0CgTPZQRDO5pM9ixP8qd9hjX94w24x7j8qeIppPnVivHQUfZiZW3Ss5b5cZ4FYMpIj2aake5/lBIyCPT3rPlurbG1Mqq/jkCtQ6fagYuJhzzxVIw2MbMQ3EZPHHI/zzRqPTqZpu45f3axso64HeqE0ETybWiLkjgcmtCe4sYmVQ4LNxgdfzqD7XFyI8jjqAeKUqjLj5FKS0uAhyCij1rG8mUEtLgZ7Zzith3vmfZDEzqeOeMYqL+zNQYB2QKCeT6VcE92Xtuc9JEJJSicc9T/ADqtIjx7gCpx3rpZdOvWH73aqDpg8mqraTcbvlkX1OB61pZi513OWkiOwsyZB9PaoEh+cokeSeM4rrn0yUKfNm2ntis6SK2tywacDPqeRRFtj9ojnJtPnQbwgdmPK9cCqctnOBuKAe3+FbU7W8bBxMWz97nmsdkt5HZ5ZtoycEt7YrRQbJlXRnPZeW+5yCR0GcZqFwHyBy3WtY/2JGjSyMshXqeTVCfWNETPkxgZ9uRWyiJVkykYZdmCh9+54qFon2tgGmvraqQsAxk9+4rKuPEKIC0xUDtlv51fsmV7VF8BlH3CTTlDucMmcds1zMviZcZidN358VnzeLkt1253ynoF4qvYtkOsjtW2x842g1FJeRQqDG29v7veuHl8Q38xDSbFUdAzc1lS6tGrlzMN2cnHSt1QaWpm6iex6VE91c/OwVFHXHNI0yplfvEfkK8yfxlCg8n7QE/3RiqE/i20Rf3kxYfSq9j5Aqh7Al3EAT8gB7momu4if3ZDjvjkV4cfE+nsSY3eU+nOKePGKRgoAUA603h79A9qe3/abcD5mFQPfWoGCf1rw6fxqmNpfGe9UT4wjP3ZSfrUfU2P2yPfBqNkFyxIB75zThqFmvHmjB68188yeMU6BmJ9hUQ8YKD0Ib3NUsLIXt4n0S2o6fnG/J6cU031mPuuCOpr5/HjBpAVThh1OaafEu3lpQpP+1mq+rMlVYn0GL20PPmBRUEusWcIO8MV7kDIrwMeKIU+Z7jd/IVmT+JmYsFvmKN/CBkVrHDidZH0WNZ0onKtk+nQ0Lq9kxwflz7182Ra/a2/zxszMe7HBqSTxJcSj90+wfWh4V9CVXR9JHVtOXh5MUv9r6XxmQ4PtXzMNbuM/vZmbHvSPq07HK3RUehNHsJdhOqmfSz6npnVZ1/HiqratYf89Vx9a+bxrMi/en3e+6mnVi3+suM/jR7F9g5l3PoaTWdOXh5M+wGaoz6vpSoX87AHqCK+fn1qZSdtz+ANRf25eSDa0m9T2oVKXYTlHuf/1/x9GcUAkU6ivjz9YE3tQHIpcZpuMd6TQC7/AEpB2NNpc01EVx9FN3cUFvenYdx2e1N46ZqIkk5pKfKA/P40m6m0ZFDjcB26jdTMikLDBxSUQH7jRk1CHPenbxT5QJQ5FO31CWwOKAwNDQFgOKfmquRS5pJAWN1KGqtnHWjJp8oFrdSeZg1CHPegtk04ruBbWQ4zU4Yms8EjpUofjriqcQLocinicKMHmqQc+tKWJqHEdy/9oWkW6iTqSKo5pOO4rNwTKUjZS+Un5WzVlbosTzXPYB9KlV3X7tZOiHOdCJ3HIP508XhH3sE1z6zSD7xqQTtkL1qfYB7Ro6BboMOakW6Hc1gCc+lOWcA5YVm6Roqx08dyCQA2K0kuY8feP51yKXETDAODU6Srnhv1rKVI2jXOoZ45OTzRFsVupUe3Nc+s5HKtzUi30oPzVHsTRVjsI5EjO4PuzVtL+2iwdxX8K5KK8U9Riri3EbnBNZSw5tDE2Ozi1eM/8tfzq8mrJjrmuD/dnocVYXgcGsnhzojizv01qNR3P0qaPW1LbEJU+pHFefCUjgE1chuCOGPFS6LLjij0231AyEHj3FaqTdGArzSDUhFjKk1rRaruH7tyvtSdBnTGuj0WO9ZsIDkj1qfz488r+VeZtrMqcA7vfvWlZ62xGHPPvWcqLLVZHoSSAfMmVNR3Crdq8cx3B12ntwa5mLVlfkPir8N/G2BuxRBWdyalpI8ouj/ZWqyRJnbG+3kckV1sEqsAQayfG0Km8iuYRy4O7H86bpchaNec5r6XC1OaJ8piafLM7O3etyB+MVzkB6GtmFsAZrriSma6tV+N+4rJRsjIqeOQg1RcTYV91Tp1qjG/GanVxmgo0RnbTwMgg9qhjbIqcY61pF6EWKrVCyg8VadOc1Fj1qtxNGfJCDVbysHNa5FQmIZzSFYphc07HOasbMDFHlii4rEOzPNNMO72q0FFLtrSN7CZRMHtTGh4rR20hWqEYzQD0qu8HpWw8dQ7RQBlfZieaQwheK1CvHvUZjz25q0kZsytm3oKFB7VeaEg9KFgOadjNsZEzD8Ks7yaeIcA4qB8r2p2MGyrcHLe1VqtshYZqvtxUNFJgPWn7SetKsbHHpVkJn8KQNFLyVJODUbwgdq0SnemMvHFNsjlMZxjirltLgYpJIxzkYqNBjgUjSKOhtpcLtrUSQE1ztqSDhq24cdazmdVM14uBVtcVnxknAq8h4pI2LaDjJ5q0q59qrR9BVkNTAkwB74pDg03dx6VA5JNS2UkK/OSKiIOM9hSeYR9KjY5BGaybHcjkf5Tg1h3RUtmr0/ykgd6yLliPpUMGiluAPTFK2SR7UHkZpQSRyacZGUkRHaTg9ahlwOKtHge9QvluQOa0M7FTBJ56CpVU54owSasImKaIcRoUg5qyqA8t0oVTnjirGDjmrRFisVQE7elM2FuAKvBOMnigeg70GkUUvIAGe9OWPbVplA68mkpN6FggxxUwpFHtTivrWLKUR4xinKc0xY88mp0jz0o1KsAApjDnirHl460x8ZqbC5SECpVGBTcVMvXPpWTNFEXYepowCeKf7EYpyj0qJFJABzxVqJSDz0JqFV54q9AoLqG6Gs2x2Nq0tlklVYzy2OvvX0v4T0saZotzdiTLSgKoHc98V8/afZ/aJ4khIyzAY+tfRMNs0Fhb6bE+1bdcMf9o+teLmFTRnXhKbckiRtp5YAZ9TUcRBbEJBwce1Sx2lujZu59/oFq3bzWhf8A0ZPukZz/ADr5ZrU+pjohCzjCkZYegqaOG7VyUj2qfxqd3kyNuAvXpV62uiqbnOSvHT1ptBzFRZJpiFj4A44HFXrexdXLJJx3Y8cmq8kqKBg4H90d8+tSxahKXW1hTc+T0BI59axkrF81kbsVoFXezFiDwWP86XyULFfU5wOlQR6Xf3eRLG3XnsPbmuhtvDt/IqgoEA4znoKycGyHViupmLHbR85yQfukdK1VZYQBHhj2Nb9j4NYDfdT8HqFH9a6afwto2mwo7Xkdu8o+UyMM/hQ6bS2MJ4yCtdnnBluXLORknvjgYqJn2n+JmPO1RkjP0rs20XQVDNqXiSCKFSceXjIx1ycnpUsNn8L4EkYapcXtznClCeSeTwoAqYUW9WZzzOC2TfyZyMJu5ioigkHYliAOvNXItJ1C4BJuo4IwSCQpYgg+gral8W+B9LYLY6RdXU8ZyXc8HHbk4qU/GTTra1KyabBZAHKqxA565OMd61WHRlPH1X8EDDg8M285VZJpJZXGSF+UEfjzWvYeD7KCbMwKryoDc5zzn8K47VfjTaBiUnhidvmO3HP415rq/wAaYSCJ76NDyPlJY5/CqjR8jVVakt9D3xNG8ObWwcMDyWGO/wDWsa7exgDrb7EAOFGRk18r3/xgmmyVuHlGeynn3rmLz4lXt1lgki56AjBPr371X1V9B+1a6n1PearYgFXvAM8YTtXE6hq+lRFhHq8ykjBDMML718y3njPUXx5iYX3fHHvisi48TuVJHl8j6/nmto4TuW6x9KJ4t02zRozetcEnIbGT/kViXfji1UFUeaYjPt1r5tl8UXmChuljQf3QBWNc+K4gMG6aRvrxXRDCLsS6p9Ez+OJjyyFQBn5mrnZvG6CTMksW3r97JP41873PiSBlO6QnP941hS+JoU+WKRAfYcVtHB9kS6yXU+ib7x7bswEEjLgdFHU1y1741mlcpbRyFgerHArw5/Fsn/LRgnuB1qk3iqSM5EwIbtWqy/yMniUe8x+J9UkQvNMkKj+EA7j+tVJ/FaJCzTyEE984xXz3eeKpB/rpwSeipnpWW/icuCsjZQ9uprSOWkvGJdT3hvEkMn37hmPqXwP0rPm161V/kj89vUtkV4W/iSHpEOPSs+bxHOTiMfjmt1l5Dx6Pfn8TxH0jPfFUZvFtoBgSEN6gV4FJ4hvCMBiPpVc63eOc7gM+larBpbGbzBHucviSRh88hZPTuaqy69GQTllHcFugrw1tSvs5M7VWfUZ1JO4sT1yc1awhm8fY9tPiG1AwJAB69TUDeI7DGDI0n0FeLf2reDlTj8KQ6pcsMmtVgyHmB7GfE9vyIiyH1qs/iWI/KS0mO+a8jbULh+WNRm6k7H9a0WDRLx7PV28QpzgDB9TzUf8AwkFv64PtzXlJuH9aabiTH3jVfV0Z/Xmept4hiTvnNM/4SCBhz1ry03Tngtmjz5PWl7BMPrzPUjrKMuWlEYHpnNNGt2kfLNvb9a8sM8g6seaQXDA5yc+9L6tEX12R6qdfVuTIEA7YJpp8Qpj5Wz+FeW/aZOm6j7U/qaaw6H9ekemHXo5D8+7NL/a6HvtFeZi7k9aPtT/3jVLDoPrzPTP7XjHSTn60h1hRwXBP1rzI3TnqTSfan9afsEH16R6UdWgzguKUatBjmUCvNPtDnqaaZj1OaPq8ewvrsj07+0oj92T8qQ6ntyBIVB75rzH7VKOFbApPtco6nNH1ZB9cZ//Q/HtW9TT+McVV3in7vevkmj9YZMT6U2mhhS5FNIhsWiiigQU04p1M78UAJRRURzjrmgpMN3Iz2pWOfeo6KChc5PNJRRQAUUUUAFLk0lFACkk0ZOc0lFKwDtx+tG7kU2imBLvFOFQU9Tg1XKBMDilDetNopXAkVhUgOeQar0UmBYBPen5BquHI6808NmpaAnpwNRA+tOqQJQSDUoKnnvVcN604HHSgTLFHSkBB6UtJkhUgDd6jqRWJ4pNFkwQseuKtJuXvmq8Z5xVilZFcxOJinvU63GRg1RHHNSDDexqHSXQvmL4uMdGqRZ2yCGNZ2zI5NL5ZByKn2I1M2ku3B57VML7H3qxFZwMVYVyR71LopFKozbj1BehPSrseoleUbNcuRmkzg8UlA0Vdo67+0mc/NVyG+aMgg1w6zsGxmr6XQ6E4qvYJlrEM7ldQR/mJrUgvh1V+tecrcgdDV2O73dGxXPUwa6G0MUd1qFwlxD853bQcVjaHICz/ADcJxj61ifa2Pylsin2tz5UwZTjPWurBx5dDgxrvqeo2bggEHOa3YWLLiuXsZUkhRozW/BIMda9OKOOEjYiODirigHpWbGd1aEZNNo3iy5Gexp3mYao0P60rDnNI1iasEhK4q6rA1lQuBitBW4Bqog4ljtUZGetPByKMdqoTiVynPFNIx1qwRimkZqlIzaK22jbTznrRjNNJCGYA60bakxzS7RmtSOUixSkZqQrTcc8UD5SFlzxUTJmroXnmkMXp0pCaM7yzSrCc1e8o0ojbjimmS0V1tx+NBtwvIq6q9O1PwpypFXcwkjNMfpWfMpBxWxIoWs+UA03IjkuZjDPNIEB61bZO471GUPSobHyCKo4xxUqpjmhYyBzUu0CpbKUSswweKjYZ5qVwQTmmEHFS5D5SpKOPWq20g1oMvrUJXBqkwsPhyGFbEJZuKyEByMVrwMPu45osawNSMgcVfj54FUok3HmrsQwaiTN0i8gAXIp5JIyBUaZ7USvIF/djJNIB5bHFIMdfWo41JXMowxqU4AGOaiRaISMdKaeuakwSfSq8nQjdWY2Zk+8sWJrImO7jPStiVgMisRup7UpEkB9KQDFSbRQM4yagGhvJpM54FLknkUBTmr5yGNCZ5PFShacB607rQpkE8YU4zU21e1RJnHtUwWriyeQbjtRtUdOtTDJHIpdgIp8xSgViB1PNIFBqZlIpVQmpbKsNRQal4FLjA6VHjFIvlJdw61IHH0NV+T9BTxz0qeYaiSM561ETTtvrQVqWylERelTJUIGeasoOBWZSiPp6rShc/hUyr2NZyGLGvPFaCoVGQOnNVolxzWvbwNLgngDrWUmI9C8GaatxeJdXHywwL5hPqRXpVleTCeYhDOW5Hpz0rn/DFnFbaLHHOfLe6bdnuUUcV0f262tG2wxswUY3AcV87j5XdkergFbVlg3EhizcYi3fwqKmGqE7ILSAtjjJGAfeqK6/p80ZgeIBgeS3esq51mF2wtxsTts6/nXnRw7Z6NTE20R1ka6tIAZAFQZyScVs2tjDEnm3d5lWAKhcDr1NeajX41RlkYsp6FjWdL4rUKIg64Tpk5/KtJUDJVpM9qiGjQsGfLuBnJycj6dOa0V1WS3VPItkiDn+E8qO5+tfOlz4ynf5Y5OB09Kz5fF80sYZp3IOAQp7Cs1hu5EpyZ9S3niq0tCYorlFfBySc4btxWUvj+GS1ijnvS86uT+74DAHoa+TZvEkccrFmbeRz/Ss258TQ5JjZtx6dhWywy7EKPc+tr34li5BWFZXIJ3ANjr6dq5m++KVpJgf2WZZYs7WY52n6mvlWTxZcLn/AEgRjp97tWTN4umZcyXKIo6c8f8A160jg7lXSPpW68d3Sx7U0uIbzu+Z8/U47msy48ea/sk230Nujg7Vij5H418wS+KkYbWvmyvcH+VYcnjIIpSJzuHQu3WtVg7LRAqp9H3vi3UJhi71KdyOyNtHt0rkrzxJZyB/tLmVmGNzMS1eCXHi2Q5aSbj/AGQf8msafxIhYt5rSMe3TH406eXSerJlVR7vdeKLPy/KiUMvvzn2rCfxWUQsVVVHOMDp2rw2fxNesSkaKF9ec1lS6vqD/wAe0emK6fqCRPt7Htdx43kkOwuiZ/hHJrHvPF0qcvcMlePNeXBJO85PU1AGfJPUnuauOCiZvEnpFz4yeUny5yIwernr9B6VjyeLXZuZSQO4Ga4lskkkdabtOOK0jhYIzeIZ0tx4haTs7MOhJwKz21mc8hQD6k1j7CTkmkIraNKK6GbqyZbl1S4fOX4PaqpvZegb8qi8sUzYT0GKfKiXJivcuepJPvVNpD2q0YiRyaiaLFUkQ2ytu28nqaYz+1WNoppQGqsZNFPPejmrOxRRtPYVLYuUq4zTdpq5t6bqfgdhSHymcVzxTPLzWgUBpmziqjKxDiUjEaTy2q7gDrSVqqguUpeWT14o8oVaIpCKfOHKVCuKbtFW9oNM2mk5ImxX8v2pNtWvLpChqOcbRU28YIpCmTnFWSuKTAo5kKxW2Cm7Mdqt7RRs/GqixFTb7Um2rZU+lNxVc3kLUq7TRtIq0V9qaUFPmQXICM00irGwUhWhyQkytik21Z2ik2Co5h8x/9H8bN60b1PSmkKD1pMqD1r5BSR+ru63JA5p4f3qvvGeKcDmqTIc0WRIO9Hm1XopjjZk/m0eZ7VBkUoxQVYk3EnmkzTcCnYT1ptAGRRS7IzzmjYnrRYOYSinFfSmbRRYLik96TIo2ijaKQwyMZoyKTaDSEYoAfnNFMFO5pALRRRVWAKKKKpMCVSSfan1EMryOlS1LAKKTIzUZIzwaLAS0ZqPefSnbxRYCwGBxTwarZ9KcrYNQ4hcs5Bparhuc1IH9aXKZt6k4apFf15qClzik0UnctBgaUVWVjnNWAQelSxlhG6Edqtq2R71nA4qcHvSYy5RVcSEd6d5h65ouVctI56Gp1aqQYN0qZWGMGqTAuhgRTsVUDehqQMcdaGxomIJ70xs4GaZnmn7sjHeouhjdpIzT+e1OXGKdVqwFc3EkfG3IqeG5VuV4p+MjkUCFT1XFW2hloSnqKf5xGOaqiIL0qN1ftU2szOZ6n4blL2isTndXbQsMCvJvC96yO1q/AI3L/UV6HbzlW5PFdikciumdZFgY5q+hOMA1iQS71rVikVlx3HWtDeLLqOw6jkVYLBuelVY1PSrA4osbxZLG3NbCEbRnmsLOGrRgbgZpJGqNSPnpTjxUKHGMVITnkUyuUd1GKZT1Geadg0GcoEW0E80oTmrGwdxTgmaaZDiVzEe1NCEdq0NtNK57VrzGZT2HvSFMVd2A9qDGAOKOYRVRQ3NS+XkU8LzinhTTuJoqlGB9qeoFPZGphUjrTE0OKCoHWpt3HNROc8UEcpUlBqg6enWr0hz1FVuBUSkVGJW2HoaNgFWM03g1HMx8hHtAGaiYHtU7AdjTDgcZocg5SoxPSozx0qZsVGR2oTHyjAc00Lk1JgdKcABTUhcoKmDVyEYOarircY4q79hpWNOAljmtJBzWfbAbsdhWmDuHFKSLTLKDGMDrVgDtUSEgD1qXryapITZIRuGDUDAA4UZNTdBTeBweKmSHEpu3rxVSXHpVqXAJNUpDx1Fc8kXczLg7c55zWY+O9akuM59Ky5Rzn1rOQEfA600+1OGMZFNwTSAb1qVRnmmcYp4ye9CEx9PA54oXB4qZUFUlqZco5BiphTQPSpgpNWUkCrnvUoUdKUDFLz3ouOwwxgcnmo8np0FTU3BJ5FIpDNvpTgnPNPCd6lwAM0F2REUFJgL2xUgINJ1NQxojAzRtFOoxmpZaiMAGasIMU3aByOtOBIqB2LCgHmpRimJytOUc1lJkFuJQTXXeH7c3l5BZ7fvt1/nmuXt05Ge9eu+DtOSys7nW7r5UVSqevua5KruGw/WNdtba9W0iP8AqAFGOgxWRN4plVcK/BrzLXtdjivJvLTG4lsnrXFy+IZJM75CijqeleZ9Xcnc9WMlGKPaLvxPC0gEsgLegFYt34shUbRJ5eOwHNeNS+IoA2PMOO5PU1hzeInLEQxhxzya1+rWJdRnskniiJj+6zKx9+B+FUX8UgDYkJZz1I6frXjUuvagSPJZUIJ5AqpJqWoTJtaU7T2BxVKgkNVGevTeLJEyW2p9T1rFuPFz4ZYpcgdQB/KvMfOkQfLyarYvHYyP8pP6Cq9gg9ozup/FUxXncMe9c/ceIbuYFEJjX1zkmsLyZDwXLfWnCEgdKtUYozc2TTancy8M59hVJpZZPmlO4/pU32c5yBzQ0JHWm0kTdlZpGxgVH87deanMRzTggFJMWrK/l55Y0ghXqetWyM8UhUY44qvaMOUz3jTpioCi+lX3Xgk1WI5qbsVio0fccUzaatnPpTMZq0rkFQg9KZtq2yA1EV21TQWK5FMIFTn6VGakRAcA8CmVMR1OKiPWrTASkIyMU/HFIR1rJyAqsueDURFWnqFhwauLIZCRSUtFXYQmKQ06kIJ6VlJ6gMooPFFFxNDGHFRVORnimMO4pktERpp4qQ9aTFPmEMop9FIBnSjGKfTcUAMPIqMjjipaQjNAWIf0o5FSYHek2jp+tBmNBNKaXb+lFawYDO1IVzyKVutOA4FTJktERB9MU2pm/KoypHvSRI2m4p1FUB//0vzYn0LQb5CslsqMf4l4NZn/AAr/AESTJ86VT2wRWg1zGD8vWoJL6RehIr5FWP6Mlg6Utznb/wCHM0ZLWN6rL2Djn9K5K58Oa3asQ1uZAO6kGvT49QL8M3T3oa+UHhs+1FrHBVymm/hPGWDxHEqspHqKYXB5Br32GWyuExdWqup9QKyrzwx4PuQWa1MTHurEU+XqebVyeX2TxUPzUm/3rv5/AunSMfsNw8QHTdzXLX/hbX7FiRbGWL+8hzn8OtFjhqYCrDoZQcGguBVSQSwMY7hDE47MMGm7+M0zlk3HRl3eKXzP0qh5mOtODg1aZKqXLwkHrTg4rP8AM9acsvvimPnRe3UFqqiUU7zBUuJXOTZ4zS5zUHmClDg1Ng5yajNQ71oDD1ppBzk4NPz3qvv96duqwTJqUYzzUQal3UFcxaHSjNV91Lu4qbDuPJBptGT1pO/NO5IUUhIFLUFcyFyRTt5FJnjHpTGz2oFdD95HepkkU8d6gAU9aNq8bTQJtFzPHFGe4NQg5HFLhu9AkywslWEfvVDkVOjnvUtBzGh16U4MRVdXGOtP3Kamw1IsbxRvHaoNxo3UuUfMWVbuKtK+azlbn3qdXIo5R8xdqUNjg1VWQEVLkUcponcsA96eGqsDip15NYyiy4koOKnHNQHpUqZIFEQe5ajGanHAxUUeCMVKFrVo0SFKAj0qMQtn2q2ijgMKvQxKWA6Z9aL6C9ncr2StBKshOMfhXd2U8k+F6muTOl3l4p+yp5qqRuxzjNdDpkFxZsqXKtG2O/FdFKXQ4a0OV3O+sQVQb+ta8ZHWuZsLjeDk5IroInyA1dJMGasbZFWA3NVI8Y+lT5yQDTOiLLLLnmpYT2NQA8AHtVqMCg2iy+jnFTBuKqr7VKCcc0GpbV8HPapQQ3IqkpyKmQ47ZoAuDinjiolYVYA71USGhyn1p4UdqcoXHNKBVmbQwqM0balxTDjpRYmwzZg5p20U4YzSGgXKRkelRMKmI7Cmt70hWKxUfjUTYIINTsQKiYZ700xWM96rE1cdV5FU34OBSkA3qeRTGGOah8xgaHYsOTUDsBkwcAUwt61H0OaDk80gsKTTaTnNKeKBAM0uD1puSDTsk0APWrsZwBVNasxn1qkxtGpBgndWhC4rNi2jAHetONASM1VxWL6VKoycDimxxYGc5qZY89eMVogIxgVEzZHSpWVhz1FQE+lJgQyHPWs5uQa0JA+MCqj5UYNYyRaMqZuMmqEnSr8/JrPctWEhkYIHWgim9/WnA8c1IDflzzTgfalG30oyOgFMCSPk1aXp61XQc5q0lNMixKoPSrK529KhC+tTAdhVFMcBSigelPAzQMaQKTGalwOnSjgDFFhpEQ47UhHc1IT2FMIHegpDOAM0bs0E8Uz61DZokTDHanAVGGqQflUSYwJApRz1FMOc81IvvWcnYCdRirUS1V5xzVuHrtHU1lMhLU2tPs3u50RRkFgK63x1rUug6XFb6cRiHiRfQHnJqXwjZGV5LiU4WNa80+JOtGXz7K2ZWZiFYj8iK4Kie5rTheVjyDXPEWoa7qD3bYgU4UKvZR7mudkBZyzMW+prW+y9cnP0qvJaxqdzZPpzV04nb7NlHylJDE4oaNB0yM+lXPLC44wKs7Y3HK4rRoHAyFjXJBGBU3kjGQo2dvetBYkU525NIynOeue1ZTGolIJgfdAqKSPjPNXCpB5qKRSwxjA96hzDlKSrjvT9op+3A6/lTaVwENRsAc1IaQilcVioyt6UzFW2AI5quwxxTJaI6YevNSUmB1oEQsTjHSq7CrT9OlQ4yaCZEDDAqI8VZYc1WIAPFbRMmRkUxgDUpFRlfWhhzELAYJNQGrRU4wKiZDUtkpkFMZc1Y2jHJAqMlOxFK4yPFIRml3joOadtZhkKTUAQMozUTJ6Ve8iZuVQmmtbT91C1VxWMwp6c04L61c+ySdSQKUWp7tT5g5SiUz1phX9K0Ps56buKja3TvmlzA0UCM0mKum3AHWmeUKkmxUxSEVZZFBphUAdK0WoisyjrUfGatsnrUe0elOxLiQHHQUlT4HpS4HcUhNFfIppIqztX0qNwB2piIKaSPWpcDvUZVfSq5SWyMtzxSA0uOaacE4Gaah3JDJFG40AA8Z5pwVe4qlGwDevJpwHFO2qRikxjik0TJjcDsaTbzwaXaKAoHNIkYVNRk+tWNoY4xUnkpimikj//0/zH1zwjd6eReRTNLAxwCAePrXHlbmOQssokUHH3v6V9D6Xq2kPpch1GbHlDlCe3tVDRtA+HtyrzxwbnY7sMxr432fVH9G1MG5PQ8REsrcB1B+tSIJ1YMw3fTmvcNT8NeFXX93aKme4ODVKz8N6Io3WaeYx7E5x7c1alcSwE+55lDqZRNjgj8KT7dGzYZiK9atdL0fzWt76FUPUliPyoi0rwLfy+S06MBnG1umPcUpadTVYeSPPbW6iGGJ4960F1GIuq7u4rsZfhppd4oksNVZFP3Fxn/CsC5+Gev2Y+0Ws0d6q/w52t+APWmqmg/ZPqXrqx0DVbYx6naJLuBG7b8w+h61xj/CbT7uKQ6PcSK46ByCPYVrXD6lpsYGoWzwY4yykDP16Vp6BrzmRhHkH9KqM0zGpllOa1R89a94Y1nw9cvb3sDYU/fAypFc2JVJx3r7R1HVbZbRjeqjhuBkZ5rza80zw7rDsJLePd/eUbSPypqSPDxXD73gz55JwKYX7V61qPwxco02lXO/jOxh+ma8x1HSNU0zDXts8Sk4DMpANaRktjwcRgKtPdFMSkd6kWc+tZ+5ScZGaTdg8VrynEqj6mwJRTvMFZauad5npUuKNVM1AwPSnVmCQ+tTLM3c0cpSqF2lyarLIKfvNOw1IsBzS+Z7VDuo3CpcS+Yn3inCQYzVbcKXcKhofOWw9G6qe40b29agTkXN1LuFUtzUoduh5oFzF4NRnNVQ2R6Um4UWFzFvdQX4qqr4681JkdabRLqIsRv1FTK/HNUA/4Yp4bjik0NTNANUqPg1QVuM1MjHrQoj5i9lDyRSYH8PFQb8dKlz3p8ouckBI708M1RqG6ipQHOPlx70+UPaIdu9eKeGo8uTuKtJCjgcEk8YUZP5CtHTsHtCJWParMbHvXR6L4A8b+IyraFod1cIxI3bMDj64rVvPhX8RtOmFvc6FcBzyPl4P41hUqJblxqdDkBycVaQEYzXeaT8H/AIm6qMw6FMhGTl8LjHHOf/r1674f/Zf+It+In1aa3sY+S45Zseg6fyrL2kLXbOmPN0R83JG7nCjIq0nlJIqSHaW/GvuPSf2UdFtlX+1dWluGOCQo2/UcV7J4f+Dvw+8OMskGnpM0eCDIA2CO9c1bEwtozqjh6j3R+aOn6Xeajc/ZbG1mnlHOxEYn+VemWXwb+IN9tNtpDqjruDOQOD2x61+icNl4f0hi9hp8UTN/cQCrsmriKIbV49u1Ywx9lY3jgZdz420D9mnxDPsl1idIcgEqp5FeuaJ+z94b05FXVbhbsA5wUGTznGfSvVj4gEjERMpA755zWTqGuxIvDkN3GayliZS2NvqyRHp/g7wF4b8w2WnRIJGB4XOCOOBXzn8bLbRWvoL/AE5Vicfu2CYAI+lek634kuI1IUhVYfrXiniALq0UizknPI9jV4Zz5tTixUI2PN7NgsnXmuutXDLjPSuRhTyZmQ/eFdBaSjg96+ggeTDR2OmjOBVlcms+J9wq6n3cg81SOpFtBk1YQ7SM1UjY1ZyCcGmaxZcBBIxVntVRMbeKkSQ52mg2iywBk59KnQE1EvtU65oKH4Ixjmr0Wcc1EjD8anAxz61cRNElTYyKrbqcCaZLiSnPSmE9hRuOMUg5PNO5HKO20YJ/hFP4xg00gZ4FNRDlGlO9QMDVsc9O9NdARg1XKTYz3AJquykcqcVovDkVSeMgZqWgaKEo7nvVQrySeKvsM9aqSZGSakmxScYORUJqw4wMg1WLDvTtoJgMZ6UZFMznpSZFQ4hcdRUZPvTgR1pWEOxRSZ7UUrASjGKlh+/VUNV2Aj0p2KTNSPjmtO3diwBFZaY71pwkFQauCFI1d+DhBUq7iOaqRsatLlulbIViU/KQKrOPmJHQ1I0jL8pqtJIwGc80pAVpjtOAcmqUhZhmrMgLAnuaz3c5IPNc0zSKKcvcdaoN97AOKtSOC+AaqOeaxkNoYc896TvxRnjFKvXPSpEOxgZ6ikXGaVuOOlIozQBZQVaRccGq0YyavqAVzVRExjyBRx+FPi3EZbqaBHk5PNTqmB9KoBwFPHFOUZFBXFNoqwmMc5ppNKenFRkjp1obKSbA0w+po+gpKTNYxGE5oAzTyuOvegA1m2UPjGDTyecU0dMUvuazJEp6EU0jninKD1rKb1Asjc3CjNa1lb4+Z+tZluodhk8V2+jWiXNwodcxjk+9YVJ2Q0jqbWC70zQPtCLvlkYNtPAx2z+FfOviGW/1bU57i4QLhzwvv/niv0L8DeArDxPpBmvGZJVYjH+yRxVy9/Zr8KXAc2srRSync7/7VcVWsu504fR7H5lm1MY+devYVVNuG5J2j2r781r9lrULjKabfxhPTbj8P8mvML39l7xxAZpI7ZZ0/h2OOce3as4109mdimfJhsI15JZie3amlB8qqOTxXuupfBXx7pjZbSZZBtzlRux71x194M1XTVNxeWM6lSQwZCoUfXpya6IyuO6PNJB5eVGSB1+tQHeeAK7ybRbi3Vla3wSu4cHGDzkmsN7Ly85IL+mOR6VMrslzRgCNsfMOagZDu54roJrV0TdjHqD1xWQ8cmSrDBPQ/wCfas2jNVEyhKABgcVWJArTktSemc1Wa3ZcDFVYm5U5PNLzip/IZRyOaYU4/nSSAqu393mofmOc1ZIjLYzk+1G0hvlRmzzwKollXbTCD2qyEnkP7uPHuad9muWU5ZV29aCXcokE8YqPAH1rSSx3Z8yQ+vAp/wBmhUYKlj7mmieUxyq5O44phjDfcBNdEIokBZY1/KoQ2BtXgVXOLkMP7PMT8sRP1pfsF43OFT6mtrJIxTh0qHNj5EZC6W+fnlx9BTv7KhB+Z2atU57Uw9cVDqMtU0Z50+0UZK5+pqv5ECk7Yx7cVoy1UI70KQnFFSQgKQoA+gquHIG3tVl1qvsw1aX0MmhzM3GKglyTVvGahkXms7jKT7gMdM00KR3qVxk0oTIrSKJbISOKhIzVtkIHWqoXmiTERnvURGasMvHpUZWkTIruo70zHFWWGaixVREyHr15phX0qUjnpSdRg1UZCK+BSEd6l2c9aaQRx0oIZFUT1ORUbLmqiiWQ0wipdtIRVkERqPvUpGKYRVgNp4FIBThQAUw9afTCOaTQmhKcAaNo709RUvQEhQtSgYBoAxUgTPNYORaR/9T8v9ZkK2XynG5gDWj4Vuookbe5V846cYpPsovV8h+hrYsfDpt4D5b89s9zXxcpaH9KJyvdG696XXaTkdq5+9vZbGQSxMcN1xxVNHmimaOXqDg1LcKLiNkbnjp71gpPodTruxp2t9Zayksc24My4LA4IzxXT+EPClkZJQrgFemTzj6V43ps82nXZWQbQOD6H3rudLvzO5aCTLDqQcVTXcxjiFezZ7knhyztYjO9wC3cZ4+gqA6hbWmRExcr6A15j9svkGQ5OTk8mrkepTlNshpc1jujWjY7XUPEVrf2jaZd2/mxycHeBjNcZe+E4ZYmvNC/1ykfugRg59Kz7ydZR94VHp97PaSmWKQrg5GDQq2tiW01oed6zqM1pK1rdxvDMjFWVsgg96zrXUQjZVute4Lqmja/N9l161SYL0YgFsn1PWsrV/h5oFwpn0aX7FIvVSSysPx5Fa3tqjlqQnujm9J8RNbOjzRidE52jgkfWt/UtU0fVD5klsFtgM+XIA2D3rzy407UNLkaK4j4X+Mcgj1Bqlf6okFoys+XI+UetCdzgq1EvjR0Nz4a8D62jNaxKjHjMYKEfnXnOs/DaW2JfSLpZkH8D8Nn2PStvw7qRtw95csMAHgf561orromkZ587SeAOwrojUaR5tXB4eoePTaHrFnk3No6hepxkfpWY5UHnqK+mLK8gnhBRdynru/lViRPDsETXOoWkLKO5jB/pWqqHn1cjVvdZ8ucsMinK5HBFe8w6F4Q8STvawWgtJHJKPFwMDvjpRd/BRWDf2bqqbhztl4/lWsZo86plNSOx4WG3UuSOAa9CvPhZ4zsydlvHcJ2aNwc/hXC6hp+o6ZKYb62kt3HB3qR096pu+xxzoVI7ojEjY607e3eqqtkZHNSKRSMuctbvSgMaiWpAppNC5h+TRkmjGKTBrKWjG5CjPSnjIpQv0o5Y7YwW+gzTYlMTPrSFvSta28Pa7eBWttPnlV+hCHFdppnwx1q42y6iVtou46t+VZXQanm+8Y60mZmYKilh7DNfQdh4G0DSzvliN1IO8nIH4Vvx29nDkRW8aA9goo9qhcjPmY293GA8sEiqeclTioy6/dBwR2r6shEZI8yNSo7YGPyrrdMl8JWxzc6RDK78k7F7VnPEJFKLPi6CSOQBUy7HoFBOfyrotO8NeJdU503Sbq4XIGVibH8unvX24njDwxakGz8NW4lXoxRQMjpnirsXxD1vy2t4vKtAx4KKAVHoKn62lqioU5NnyFZfCb4laiFe20Cfy2BIdsKPl4I55zXaaZ+zv8AFHUo1ZrOC0VhkebJg59CAOK+mdK1jxnrUwt7CSS4jJXew4UZNem2/gXxRfXrxX94YIY2JB3ls+nArCeY32R208vnI+Rrb9mbxBHEn9ta/Z2MpOCi/MpB6EE4r0zR/wBl7wxJaJJf69dSSKSrJEowT6jivqLSPh1otm4nvy17IgwN/wB316V28FraW+Et41jx0AHSuKeZyPQpZN/MfPmh/svfC6BIZNQiub14wAGlkIyQc5Kjj9K9j0L4X/DfwxM0+kaHBEW55UEflXXh88GpwQRx0NcU8fUk9z0o5VTj0LkFxbWqlbSCOBewRQo/SoJ7tJWJmUH6gVmySiM4Jqo8+3k9DXO5yfU2WGguhsPeLnCfKKqyXjAEZ5rDkuX3deKpzXDBS2elaRuy3GKWhpz6gUI3EEn8KqSaj5YyJMe2eK5S4v2+ZnPzHpWLcaiCCGOK3jSZhKskdZcajuO/oe5rHutVLLtZsEd65S4v9sbBWyKwp7xiOvFdUMIcs8Wbz6ksCFo+TXPXutzuhGcH86ypbxsnB61lyyluprrp4VI454psq3lxNcPmR92P0rHlPJFaUnJrPkHNdKikc0p3ON1u0aOT7ZEPlP3vb3qlbTkYINdbeRedC0Z7jpXC5EE7IvGD0rqpvQ5Kis7nZ2k3TNbUTg1x9lPnArpYHyK2UjSEjUQ81ZRuMZqgHPXrVlDmqNUy8jHoanVSeaqxkMOTzV6LOMU0bRZYTpUysc4qAcVIDjmho0TLqetWFPHNVkbIqYHNWhktNJFLTM80DRIGqVWPaolAarAAHenYTRJjdTtopynikbjPaqb0MxpGB6U3ANKrcc0nuKqINCFcVVlXPAq31FV5BilJ6ENGZKpAJFUHcY5FbTDjFZl1GuPl61miGYszEE4qqTU0qspOaq5PegljiSOKXk9RURbBpwOeRQA4j0o6U7rTCOeaAHg5oJpmaM5oAapJbmtOEd6zAMNmtGHsO1A0acZBxmtaFA6AisiFcnINbMTY4HSgGXYvl981oRg4yKoIcd6vw/K3tW0VoIdLCjkEnmqUyKpzWiW3PtAqrcbcYJoktAMyQ4HXBrGuCY2JJ61tyqCNy1i3CrIcHtXNNGsDNJA6VCeasSR7c56VXOBXOy2RnqcUAkdO9AGaQ8UjMVhg09Ac1FnFTR9aALkYA5q2hqoh9KuR46kVcRE6J3qXGKaH44oz3NajSJcgUwkngdqbmkJ7VDZaG/WijNFI1SDjGabyTTqQ8UmAOygYpqkHpzVWRWZ6sRqFWspDJPanUgFOyelQ3YQ4AZzip442YimRr3q9EvIrFsm5PFbOHCR8k16V4UsJJGjjRWf5wWCjJwDzXHWVuWJOeccV9AfDPSJYp0v5jkSLjb0HFebiZnTSifTOgCzs7a3nt02BlU46E/UV0zXzu3yqACeK8zi1B0kYghSBgAHIx7VoQ6uzsrBxkDGPT/69eFiZyvoerTpaanoMV2YpN0789Nv9a1INQt2VvKOQvc8DP1rzRLt23EPz0OD0qb7cYAQj9gCM8etYUpSQToKR3aXhZpFlh2qSCv8AFnFTNa6RNhr62STeQdrKpwa4e21eYgyo249BxngHpWnJP+7Epfd5gHtjFbqvMieGL134L8EayxSbS4XUdSyYzXD6l+z18Lddlz/Zwg2ryUOCc9Cfp2ruYL+KFN067QTiMDkn1J/xrTjvI0kTDYBwSM/4elP65JHNPDSWx85az+yP4PMTR6XdyQFs9cHGT1Pc15lq/wCyHqsUTLpOoxOF+YErgsT0WvuRNTh8x3l5XpknoPetJbuFGSQASgncoHTj+dVHMGtWc7hJLVH5Y63+zB8SdDRZk08XUpBGITlQp55PrXkuqfDXxnpriG/0yW352k7SR7n8K/ciG/WaPKoIlHUNj/IFUb7T7O4jxPapLI5GQVBHXtXZDMlbVHJGu7+8j8DbnRZYZCtwzQ5bA3KVyM9eR1NZ8mjW5YKS0gHJz3+tfuT4i+GXw/153i1DSYHzjLKoDZ79K8D8W/sneC74+fo07ab85b1De1b/AF6DOunWTsflxHZRIMwxAdcYHJx7VXDkAqowAOR6V9ceI/2ZPFmlJcS2uL2Nc+WUP8I7H6+1fOGqeEtc0dimq2zwSbsFWUjjnmtI1bs1n5nFbdzewqOf0rVNpJErM6/d61lSqxlAI69K0b1M1JDFHYVDkkkmr8cRUFiOnSqpT5vrVRRYxs+XVcr6VacYXAqMripaAj25p/PelxxTwPWpkBERUZHerWzjimsnesTQoSKc8VA69q0WFVWUE8itIoykyg61CF+bpV1kPWognJNaMybINtQv9KubaikXIqLA2USuaTBqxt55pGHPpVK5LaK7LkYqqV5q8V4qIqPSqauTzFQimEVYZe1MK0WByKxUmoyCOtWdvHFRHBPNCRF7lcg00ipyp6ioyKpIZCQRzTSuamppX0pkyKpppFWGHFMKkVokSVsZ5ptT4pjLzxVpkNEJHpUZFWNuaQqD3pPQRWwaKm2mm7ayAjpMc5p+KTFVzsAAzUgFIBTx0qGxpEygdacBigdOmKkrM0SP/9X8q4tcaOcBRg57139nqryQqzcHFc1qfhcXcv2mzcJIx+YHp9a3IdCuIYlRDvIHJr4icGlc/pOlGaY+6uFmfcAAagQ85zVkaa5+WXIrPvBNpzbJcMj8g/0pQ8zoktDP12yaW0ee2H71ATx1OK8807XL6CfgkMeuBXrMLhlUocZGear3WnpHq0DxW4dpMHIXjNdMopnk16bctDlpPFWrx7Bt59GBrpLPX5rmIyXKiPHYe1aWr6VqsyiVrXG09wMgVy+pRT2+nz3YjwVA46e1TGgQ5Tirs3ItbguFZoTnjoRg1p6VdC4aQE4xx9c14XaavcLOOcc/pXpGnTSyxpLASBx+dTWw9lc1w2Ou+VnoqaX5c32hXABx1NbOGjiG85Ye+awLMm4gBlbknHNadhdWDb4DIMpkCsF5H0FCorEc7xzqY5VDBuDmvHfHHh25sg+qW+DajaCB1UnivXH2BiFbNNmgt9TspdOuxlZhtJ/rW9LfU5cwwaqQdj5mtroQoQT1o/tR2kAB4rqNU+HPii1uJTZ2T3NsjHa64OR+dcFNFJazvHMpR4zhlYYIPvXYqaep8HWVWjKzPVdGu9tqEQ9eT9a5/wAS64bqUWMUhZIuWweCfSubh1p1iMUbFcVkCRtxJ7nNV7FDeaPlsmdfpurNarv+ZXXO1gcdRV2PxFqFwyxT3BkVQQAfT3NcV9obG0VPbyDdk9qp0khU8za6ntOh6pNbAFXYEHI5NdJdeJ7a5jEGq2yXkZ4+YZNeR2WrRRQjLbWFPfVgz788VMo2Wh6EMdCXxI7STwJ4Y18tLp7vYu3OEHy5+hrl7/4SeLLHdNYxpqEA/iRgrD6qa6vRdVUIJ7Y5A4P/ANeuwi1p58AOU9QDjNcsqrSLeCoVdUeQaZ8J/iFqjsINJaMKcEyEKK720/Zy+It1AJFjtw5ONvmfrXsGh+IL+3hCG5Yr/tHPHpW2/i6a2k8y2vCsrHkA8/jWFTEztdI4a+QSTvFnkdp+yv8AEGZwbyW3hj9VbcQfpxXW6d+yoqQv/b2rsshPAiGBj8c17BpnxC1hFU3Tbk9cnn3r0G18UW2oWyzSkAN3zwKxWKn1OOWVuPxHitl+z18PNOhWGaFryRRgyOxyf6Vsp8OPB+loV0qxiD46YG7j1rt9S1yztCVlnRA3Ay1eRa3qU8MxNnfGROTuU889siq9tPczlhoov3LW2mqyDaNo4VQAfpXHXt3DKd3PPtzWRPcS3DYUl5GOOuSSa6TRvBfizWED2OnzSru2njGPzqZ1Ha5PsuyOYmAYZXp71UjgaVvX2HX8K+jtG/Z/1q+Ecuq3C2sZGWQHLA9hXpmk/s9eFreZJ9QnluDjlc4U/hXJ9bSepvDLqstUj4ut4wxCRguW7Yx+Nadrp97dN5dpHJNICBhUJ68ckdK/QTSPhF4F00BIdPVlXpvJY+vU/pXd22haRYx7bWzjj29CFGRWtXH0Wjrp5NUZ8IaN8IfGWsOn2i2NpFxl2POD6D27175pfwR0S1kFxqCfaJQVO3ovAx0r6DitS/CjaKui1j6EdK8qeOXQ9KjlEYas4C08P2mnRhLS2WIDrtFan2M44Fdh9mUDCriomtjniuSWKk2epTpJKyOaW0wMYzUbWh3hgOldILY5wwqWWzwuRRzpjlE5ZoiKixjit5oBmqc8OOQKuOpnIwryIyxsB1xxXKySSpnHVexrvGj45rntUsjy8Q6jP411RRzSkzmTdlR8/A96z7m/xAxB4x2q1OiyRsjDrxXIX8TRKVQkCuqFM5alUzri93HO7msmWff161VctuO41XLkV3QgefUqEzyYB561nSyckGpZH71RkNdEUcspEMrZNVHqZzj6VXZs1ojIheqUtXJDkYqjIetMVyjN92uL1m2489Bgg8muymbANYV0BIro3RhWkHYmauYFldFR7iutsrtZEHqK89kV4rgRHgZ611FiyRAYbJPWumPcxi7aHaRybhg1YjbHFYME+4/L0rWRsgVZ0KRqxtjmtKKQVhIxq/C/ammaJmuDu6cU4ccVWjJznNWc88VZrGRPG5FWw3pVFRziri8DntQaJkqnNOPoaauBUnGMUDHJkVMCM1BUg9jQNlobT7UwgEYBzUdNPqKpsQu4DtilVxn0qM9M02kmDRIWqJiSPWik603K5m0RMTVC4BxWgaqTgYoRjIxJhjr1rKk6E1r3I4Oawp5cHFU4mbYw05W9KqGXNIsmOlRYXMaYkGKUNn6VniUVIsgPQ1TjoBcJpV6VXDcVKrZ6CoC4o4NXojgVVqZDjrTZcWaUUm2tGF8gc1kxYY4rXgGDxSNLGwmNoNX7ZWJz/CKzojwOK0YGJU5OK3RLRb3DJ4qrMF7DJqxHuYc4+tVrpvLQlTzQwijNkkQAjrWOTg5Iq85HeqcnJ9a5ps2SKEgJbce9UHOGIxV6U81QfrxzWEiWxmfSkY0dKjZsVBLYuR1oElU3lxnNNjl3HmqSI5jehJIzV5WPFZ0LqwwvbrV5Dx61qkCZbVqduqMYpaGaxHbsnmjJptN3AVBpEl96XFRhsjpT85oKHY703j60hJPXpTlA61LYDcE804KR1qTPpRWUiHMAR2FAGacF46U9VxWcmK49B7YrRtIRI2CcY61SjHNatoMPg9D3rlqTKidVptt9ocJFyB39a918OXIsbbYQVKAAknrnsK8h0yxa3Ckkjef0rto7lo4/lkPHrXk1ndnp4en1PU4dTQsQv3cZq1HeTebuV+H5/CvMIdS5UA/N71qRaoEKsrE7R175rlcV2O9SZ6jJqTQwJIuVL/LyRgnvVu31JJIiVIcdDj+9Xmkc6TqpeTeuTwxzyavWVxLHETDKFXPAz+dZOGuhSsekG8BZQgEeBztOB+dX7nUVKosT4xjJXqx9PpXmy6gG3vLwAMZzwKmS/wDKKM+XZxhQOgXvmspQaFzHo8V2s8imTIb+8OwHFaLa3YZ+zWsiFuD1+YgV5lHqNxcOYwoWP09KjgtbeCYyhsu3JPf8KTp6FrzPVF1DzTtlbaPvYPf8a0bXWZI3gIHCnAUckj1NeaxXkr7Yl+ZRkAZ71pwNcSSJ5ZAYHj8P6VzyhbUTgnuexWd/5aSSyLuduSCflHPatWLxFYiQN5h8w8EAZxj3ryuIYSRnkdyffhQOuKVLu3hcRxhsN3HJ/H2qUpHBUwkJO56T/akDyMAVGGyecdagudTHlbZGGwj5c88Vw0SyCZ1l+VX6EenatZp4toBJkZfud8n61mrplRw0UzZe6WRQVxtI4ridZ0Hw/rokg1GxjuFHdlB/WrjSSTTiCIlcA5B6U5WKRtgjngZ6/WuiFeUTf2S6nzR4t/Zu8PX/AJtzocptnmPKMcqPp6V8t+Nfgh4u8P3st6LRri3To0fPrgAf1NfpdcfeCqc7e/aoCVdSkihwRyDXoUsc7+8ZywS3R+RF7ot1ZQK1woTzCQB3GPUHB965+Syn3DgZyeO9fqT4q+FXhHxSnmtb/ZZxkiSMBSe1fO2rfs+6roZluNEYXkTIw3Ny6Fupx3PpXoRxcZaI5vq00fHDJyF/Gq7Rnd7CvWr/AOHGoafKtvcxTCdwFClQMH3J/M1wc2m3FtO0cyEKGxu6j0HI4rVVFsZvQ5/bgZI4pQuRnFas9owATrk1EYCvDcUpO5KlcoFaMVd8k0x4yKSgOUrGey81XZaustRbBWiRg5FJlpm2rLDJzUeKUmK5WKDpULpzVwioXHB9qLA2UinpxUTJirW2msvaqsQ2UyO1MZRVooKjKinyENlVlHeoWSrbCoyPSq5QuVCKhZcmrjLUGKEg5iuRgYphWrRWoyuaaY0ysR603b6VORimFaGKTICKZjmpiPSmketJMRXK00qR1qwRTSKrmArYpCKsMuaiIxUtgRU0j8alI9KZSJk7EZU1HVim+xouQmR4pw6il5NPVecmobNEh46/Sng02nqAahsuJ//W/OKG8xh63rPVba4/dq2GHY8GuAivCqhalhd/PSVTgg5r42otD+l6eK11PQZmGCRWVcpHeRmOYZx0p32gtFzVRZfmrmjdbnY2mjjdYnbSZIwmeTx9K9M0KaK9sUuDglcHPfIrjfEVgb7TmaIBpYvmUdzx0rO8GeIlsrOaC7BxGePx7V2U3oeTVkoy1PTbu6vpCfMOV9qwpo4blDFImVYEEVNbeJrW/bymh8onoc5Bq1JLAHyMfhWilLc7rQnGyPm/WLRNO1S4tY8hI24z1xXZeH9VRYRCSBgGt/xF4at9UmN1E4jkI5964KbSb/Sy0m3KDuDWlR3R81iMPKlO6O1h8Rym4NnnGWwO1drocDnfK4zkjrXz+LmUXKT/AMSsG/I16naarPNaCSBihPYH0rNUElc6sJj23ZnoF3HgM8PIUnp7VS80oPmOK5eyvbyASYYsX5weah/tG+kDCeIkeuKz0Pchimey6H4ga204oFE6g9c8j2rzzx74U0jxasmo6TGbbU1HIPCSex9/ejwnP5i3Fq3ybjkA9/WunVDFL6c1UKz2YYjCU60HzI+QdQsLzSLx7O/hMU0fVTVJWYnpXsHxSWO519WA4jQKTXN+HdDt9RvorWRggkONxrshUWx+e4rLuWpyxOMRTUykqa+qf+FM6BNAA7ujEcn+tcNq3wdvdP3yWEouYs8dmx71d0EsmrJcyPFhIcU9p3CfL1qxqum3Ok3j2Vyu2RDWeVk9Klo85ylF2ZqWmp3FqcwOVyeR2rvNK19H2/aTtY968u2tkY61rwNgDNc06aOzDYuSep75b62sUHyuM4qlb3U17dZaTB9a84iuWkQRhuT712Hh5pbiMWttG8swbA2jccnoK4qjUUe5SzJvQ9g0i61FIljL+dGvQGu6juZrSMRy/JnqvXrR4O+GfiO+wL2P7LG4HLdefavf/D3wv0LTFWW9DXsvGDIcgEelccpxtdnfzKa1PmceGfEuvanJ9nspJFb5kbHy7a9R0H4IandqJdclVEJ5VDyRX0tZaZa2oK28ewH0rVSMghV6CuWeMUdDP6gpO5wPh34X+FtCKzw2iySp0LDJ/GvS7W2hgjCW6KinjCjFWY0wBuFXl2AA7RXn1MZJ6HdSw0I7IhW2c8k9KsR2meWq3GoPSp0jfcMdK86Unc7U1sMjiKqMc44qxsPXFTAYOMU/FDbJTGxDb+NTHrnFMAIp2akHqOXnrQy+lOyO1OHNUhCqgIxinlMDNKoIFTJ864qkiJMoSQI457+lUZ7Ufw1usuTioJYlwAe9XBtMxkclLCc1nTwnGCOtdJeRYG5e1Y0xYAZrthM5pI4LU7URkyKOCa4jVY9xJAwQK9S1GMGP8a891SNVlz0FehQkcFeJ5xe24UlulYx6mun1Mhdy1yzlcnNepB6Hl1GQSHPNU5GHrU8jAdapOeasx3GMaqM2DUruMdaqO1NMQ1mzVKVqnd8VRlaqRMincPxWPI1aUxJBrMZWPFVcSRj31sZEaRB8w5FZ1jKxk2MMEdq6pI6xb+MW04lAwG7+9dFKRE4m5bSgY28VtQy5AxXLwTAxqfWtKCXnrW5MZHVRSZFXo271hwS8CtKN+lBumbUTjvxirm7vWPG+Oa0I5MimmaJmhE2DmraupPXrWYp9KlV8HOKpM0RdL4bFWEJIzVZSrDkVMpwMUy+Yl3U9TVYt2pysKCi0aTmowfSn7xQAwlgOlRlmz6VKSCMZpCwoE2Q7jTt9NJFQMeoFNEtkrvxVSRieaXJqB3wau9zCRQu/u+lcddzFXNdTezKFKHvXBX8/z7atGDLSz57VJ5nGTWVE+avAjbmpnYSuWRJmpFkxWcWI709JPWs7jsbUcgbAq0nrWRC5yMVrK2OOlAy2PmFKRzzTI2FW1XPaq3RaHw9a3rbkZrHjVUOTWjCx/g49ak0izXViCM1qRfMtY8fz4GK1I9ykBa2SKZogALisC/ld5Ci9BWzkgfNzWTJCzMWPJNTPYcWZIyOHHHrUTcVclxnAFVGUZzXMzRsoTkAZ9KzmkHpV2fOSCcj0qgwGazM5EZc1UllPIqZzx0rNkJ3YpNGQyWTvUQlbp0pzLkc1X5B4phY37CcjajHJ7mt9JFPArkrNiGAY810cJzWiYWNDPepc8YqFAe3WpcEdaDRBmmAZNKRnipFQ9azZaY4LUijBpB0qRalsTkKFowBUnKj1ph5NQ2TcMZNKF5pQKcDioZVhwFPC01eelTCsJsZYt0XJzXRaJbPfXJWEZ8rk+lc8mcYxkn0r1bwjoYW2eRSQzEE+ua4K1SxvRjdk5STIYKeneniVo+XbPsa6abTp0cLChIxyfWqz6cA/mSfTA4FebKSbPZg7Izw43A9h3qczbACuRjrmrBtogclsj09KkeHzHyPmXoOOMUaFcxIl/C5DbSD0xQby4ib5hlSc47VALGSQrhwpLcDpgVZFpOx29SP5etGgrltL55k8oZ29x2/CtKz1DycLKhd+iY7elZUdtLE20jJPQAVowWbM205Zh1IOAPWpbQJnTW011cKVAII+8xxwKt2onh3GIeYvbJ5ye9ZlsJjbKBkp1wBj9a1fsztCu0gNKcEg9B3JrCZUWaFuC/llGDF88jpW7Z37afOTKAxClcjn0/WsayVYM4IkwANp9R3xWrCTHEeQQx6d6wsEpdDWEd5cErJuKtyAWA4qZZUhMQVQxAGAT3FZ6QGQGVmyuMgA4OavxmG3IIfLHlj12kdvrUysK/Q0i1yBvlc8c7Txx6n/AAq9Hcs+HdiqJjoP0FV4JRKFd2IUjhiOtTvHMyGUuXBPTHRa55CUjTs0hmRTI7ZyRwDyD71ZlsYUkQIQUxhsc8/41n2N3dSbbeEfI3DE9gPSt+N4o4SshwEOAR1JPepuhO6M2ezLzi2jXaMcH/Gqo0uZiCiZUnAPc4roIriPzyHkxjJAxUq6jBnYqEbe+euelTKY/ayWyOeOh3RbJXauO3b61eTwtJsEyMMdwPX8a2Bf7yIZCFz3HerPmlODj5sfhj2qlUtsZ1K9TY5vUfAOjajbAapbJMmepxk14p4i/Zo8MajuGlt9mBJYLj5VJr6QDqWVpSZiTkDPSppL6zi3tKWYKM+wrpo4yUdTlcpPfU/PrXf2W9f0/M2nulztJ2qcAKDXk+tfAvxpZReYultLydxjGSMfXH6V+ocl/aSyb2y5J5HbHtWZd6gh+SMcA8c1p/ab6lrCX9T8hr/wPr2nLieym4GfuH0z19a4+ewuV3EwsNvBJFfsRqEFjdx7LmBJM9QQDXl+sfDPwNq8U0c2npbGUcmP5T9eK6qWZp7ilgp9D8tJLOVMh12n3qm8ZHFfcniT9m23cGfw1eHOTlZPf0NfOfiT4U+L/D87i/smeFckPGCQQPXFdtPExlszjnRmnqjx9o+agK811dxoV5bWz3UkZ2KcH1GfWsX7HN5Zl2HYP4scVta4jJYVA/Srci7WOeKgYZ/GqijOTKnfpTTzxVgrgVCwwa2jHuZtkJFRHIqY9aYwyMVRLkVaaRipsYppBoJK7KTURX1FWjUZANAFYr6UwipiMGmkUWGmVyB3FRMMZFWiKhZc9KkrmKxFIVqSmkUNEkWDSEVJimkVJSZHimEVLTSBigZAwxUeOasEZGKhIwcUAM203b2qTHNJjnNQ2Kw0Ke9PopQKQxKmAFMx3qQYxj1qGWj/1/zGubFk+cCpINm0Z4xXR2AW9BhmI2nvWnFodqpxO2V9AOa+Dbl0P6TjTuYEcyeVywPaoshDvr1fTPhHpHiNSdA1+OKfAPkzLjk9uxrk/Gfw88ZeC0EmsWLG1J2i5i+eI56ZI+7+NaXbWqJ+sJPluc/Zv50gB5HeofF3gyLw6tlfQTI0Gpo0gx/Cw5IPbvWbpsrwytn5SBxnvXQ3Ew1TS20u9/eRDlM9VPsaqKfQxxVNyV0eXQXyxzfK/wB09vauvivHkUMrbga8t1SC40m7e1mGCDlT2I9q0dJ1OaMhA2VJzitpTk0cFDFOEuVnojTPJwOTXP3eowxy+ROuCWxhuhrYsZ1kYE9etcZ41J/tWMrjyxGMY9e9JNnbiq6tc6q48O6PewGSEbHYAgr0BrM07SWsZnRpNyHtnoas+G75pNMYS4Ow4Bqtc3LLdhI+rHiupzVjgw8o3NiZFjUMvHPNWILjeMYGBTL+J1s0deSetYlpLM8vlrxnOfwrOD1PSVRHoWmIoAmXAdvwr0/xX4Ru/C1npd5ct50epL8rqPl3gZ2g14zp98Chib+HOPf6V6PqPjPU9d8O6X4d1BAE0l98T5yxGCORWM9Hc7I17pJHhnxChQakG6mTDH69MVyNjObc7lOCDmvVPE2ltqtq0ka7p0O4H2HUV43JIYpDH3FbwZ8xmScZ8x9I+GvF73cEZkZpNgAIY/1rvv7Zt/LDKw3Ht1r5o8L3yxjB4KnIr0CLVN7YzinU5t0exl2PUo8sibxr4dsdajF+igSLktxyefUVheJfgrrHhtNNuXlSeDV41kg7HBGSD16ZrvdK1KOKQGVFlToVPvUHj3xPruua1pjTSMNMs0EVvGg+7jrnHrxis5YhpanBjsFGU00jibr4G6+sST2kkZDA5BPSuQl+HPi+3vRZx6e9wx6GMZBr7a8MWct1plvdTbkEyhtrZyB716Fp1nBAw8tcN61jPFpHFPLqdtD5f8Dfs831+0d94qkNvEVUiIfe+hr628LeAfC3hmMxaTZIgJBJIzz61qw5AAPatm1YivNxNdtaF0MFGO5sxkZAAAxWpEN2DWVEQSPStSMjivN1e56KsjSjGMCrsec8iqCN0Iq5HLispxNoTNEYPWrKYIAqgjmr0bVzOOpvzF6I4OPWrqnsaz1YcZq4uSAetS4BzMurjFSY7VXRvWpwahxLjIUrTdpzUuQ1M2njFJxGpD0XNWNqjikQZ6jmpMetUkRKYzoDTk4IJpflJoOKpIm49jjrzUEjqeKJJVCY61SlnRBk01BkNla8OE/GuauZgqMce1Xr69B+RTiuH1PVoIwU3c120qLZzzmkSX12gi2jHFeZ63fjczBse1O1DVZHyobOa4a/nJ6HvXpUqR5eIrdiK6u/MJLd6xpXGSaZNPubrVB5O1ehBaHnT1EmmGars/FMkINQ1ZNhrPVdpBSzHBqsTQQxGbPNVJDVhjVZgTmgTRUcZqrs5rRK03yhVjKqRZ6VDe2QubZoj36e1aart6U7FbQE0cMsUtmRA5yvb2q/G5GDmtjULNZomZRhwOK5iKbadrngV0p3MXGzOrtZsgVtxPkAiuPt5wpGDkV0NvOCMUyoM3YmNaEb4rHgcZ61oKc00bJmmj579KsispHwa0I33DmqiXctqfepxKehqpuNSBgaoFImLc04P71ASRUg55FBopkyue9P8yq+RS9KCtCTzPTikMpHWmcetM5oC6Jd+fxoHPBpgzTwKaZlJkRU4qtKMVcNVJulXy9TORzeonKM46jpXnkxMkpc16FqW4RsF71xEkYDkGhSsZSQ22Gck1ohQBVaFcDHSreOMVDfUEiu4pFz161KVOaAtTcdiaCTBrXjckAViqCDk1qwE4BpXKsacQ4q+pxyKqQjHBq2Mdq0iCRbTaetXY9oIrOj6YzWhHhcGhOxcTVtnFaELPu3E1jRy84rSjbaAOua0TKbNF33H0qs4qwqpsyxzULsq8AUyeYynQ7iRVR1GDnrVudyCe1UHYkVhIqBnSxgE55qnJFgZrSkG7PqKpyfKpBHWsZDbMmVtpxVNhk5q5NEzuWFViCDg1JNiuwzVcocmrxFRlMmlcEgt+HGa6SAYFY8EJyDit2FflANVFg0XUIA+tTYBOagBx+FPVsnk03IGTADr3p/bmmilJxUNhccPfpTxVV51jGX6UQXSz5K9BUWC5b9qXHPtSLzyKfWYxudvNAO6lOO/NLUNgSRjmrirxuNV4VzyOTWnbwLcypbhsN61zVZWRrTVzrPCnhu81e582KMGOIgEHq2fSvpbTfC8FhbJ5cZQhfuH1PrXL/DW0jt5BK6Aoi43Ac17slql0odMYBr5/E4h3PYw9C2rPOX0m5xyQjPwD2FUm0fyAYpCGGPTOa9Qk095EK7Qfx6VVfSmkd5JRg49PSuGNY7OVHlP9iRlgTGDzjFWk0RpJiGBSNTwD1OK9Mj0kgDjHpxzTjpMpfaFy45JzgVo8QS4nmw0KaN/PlQSEg/dH3ae2kxq5lYMNwHHrivTrfSZMbO/PSp/wCx2WRnVdzSevbPpUfWO5LieXroLlftO0734C5xwP6VojRpY1QlMeYei8kfWvQTpDwgHbvOMDjNW4dLuZbgw+WQRz7AGp9uugrnBjRpmy4lCk9EA54pU0+RAsezykAJJHUn3r0YWDQlihHynnHp9ajurWKaJ5WQsx9KXtQjI46GzaR/mG1BwSBgmp4dKDEEDrnHPb3rorbT1YAhtv144/GpxAgB2AnHAIHapcx3MmGJVOJEByuFA6fjUqWuM56d6m3quYduMHr3pjShGZZCQmBjHU1i5NvUpRY7zJQ5yMqoxjH5VoQTEoAz7WPX3rPS5iJxtOD69ahNwd+wNgD/ADzQ7svlN5Z/JA4ytTrIZPmVsemOtc+t4nUnI6VPHcFDuQdfWj2bDkNoodoUHGevPNX44X8v5Fznk571jLeQpF5sz4Pp1NbtvqNobIxzOOT8uPvYrGVNkybS0L6RxOyvKR/s5qO4k+zGS4XDKmc54yazby+EmAAMDgc9BXOS30SiSFCWdSPvcjiqjTZMYN7nTtf+Yy7ZfLbggAdzVOXUgv8AouzzE4zz+tcobx8kF955yegGfSs+V9zZDbR7n071p7M2VJHR3OpzRylFIQeg96x5bu4cnc2APzrJaYhzIpzg8H1qnPcMWJViNw/Kk6VzSKsaTXQ5G/afaonufX5jWHJOQNseQCevSoPP2nIGSD3rFU2dCSOjWfPLcZq0Jo5F8udFdTxgjI/KudilYAO3zHrzVg3fHv7VsnYynFPQwta+HPhPWhIz2qwNJwxUcHnPIr538bfALVLeBj4cK3UZfcATtIH93HpmvqeO9JbBrQW6WNd57e9dNDGzXU5auDjI/KfxJ4R1vQ3ii1O1aCaRm+XB+6O/0rkJIGTHfIB/Ov101TTNF1uBoNUs0uVbuwGfz6182eNv2ebe9WW58IzrbSuSSjjII9B0r1aWOi9zya+AnHY+F3jwMmqbLk16Hr/gjWfDcxh1qMwyA4xjIPPauJni2MR616kZJq6POd1ozNPFRtwM1Ng5qNhwRWsTJyKpzRT2GOPSmUmCY0imEZp5ph6UimyMgVCfapzUTD14oGRH1qIjvUzdKibFJjRXPU02pCOcmmEc0wGEd6bUhphqWhDaYakqPNSUmMIqJl9KlPWm8GhlEFFKcZ4pKiwXClFJS0gHcU7NR0oOKXKNM//Q/L6fWorJxGgJ9cV6Ja3rNYpK7feUEZ64NfPf2oy3qk84NeoQajI0UaMflCgAV8RyOKuf0VQxKOhjv7X7ZDOQzrG4LbSQ2Aexr17XPifdajox0G1+bTXQIyyfM/H1rxOKeAgFV570+SQD7vGfSnFHVV5Z2uVJY4hKTACFB79aRZmjIGakQxZLyPgE/WvRtP8ABNt4k0S+n0mRWurILJ977y45rSKfQp2S1PI/EGmQ6zYlm/4+IslCO/tXl8Ya3k24OVP8q9omt5IRhlIx/OuWu9Dhnm3Ku1m5oTbPKxeEd7oradcq+CTjpUHi+zeXTlvU5Nuwz9G4q0+mSWa4I46Vr3Nmb/SJ7b/novPsV5q6cWZTTcLM8q0+/ubaN4onISTkj3rXF8JHV36r0Ncwp2Oy4xg4q3E3TNFrs8mNRxdj16xuXns13/MD0zWf5PlSMynBP9a2fDWmte+HhdqcNEpJHXODWXISWOacU0exCacSvE4jnVj90GuytJEnOYznArh3SQr8oJPoBmtTw/qEcV19juvkkbIGeueuKqrC6ugoYjllZnZA/wA68k8Y6IthdjUIxiK4OPo1erzEAgjoaq39nDq1k9ncLkNyD6H1rKFS2jOjG01UgeIWUzxSBkbFdvp98sgAY81zkejzwXLQyJ8yNjFeoeGvAzXciXFwCkY5x0zXS5XWh83Tcqcjp/DmnNd4JBYnn6V7DpHh6wj8uWeMOycjPY1Q0vTbexjWKBAgHH1rrYMKMV59R2O6piHJHSW52qFHQelbdq+whga521YdDW3AQTiuVxu7ke10Opt5QfrWvAw65rmIHwQK24W4FZygawqHSQuOBWhC3NYkEny+9aMUhFc0qdjdVDYhlwdtXgRWKkgyOxq+kpIFZuPc1jUNiFs1eQkYrEjcVoxSHHNZypo3jU0NUP6VcjkyMGspHzVqOTb71DgNTNdJMjFWkIxnGCayI5lzxVxZQRweawnTLUy/jHIp4bsaz1uecUG6UDmoVNlORoGTbT1nX7rHk1z73mCWU8VUbUkiOD3rSNG5POjqHmRTn1qnNebeQa5WfVx1BGKxp9bPTp+NdMKBhUrHX3OqIAVAwa5u81orwWFctdakzZ5x+Nc3eagdxyc1uqDOd4g3tR1pm6cfQ1wupX+5tx6896gurtm+YGudu7jeMd67KVO2hwVazYya6OTg1j3M2/NE0u3qazJZc5rsUTjlIqznByKqNJUkrdaqE1qombYE496YSaTNITRYm5DJzzUBHNWWHrzUOKpIRCRmoytWCKYR61SiTzEBWkxUpFJVqIcxHg0U4im1qohzDWXIrltYsCo+0QDpy1dSTTJUDLzyO4qoikro4CG4AA281vWlwwArI1CwaykM0I/dH9Kba3ahRk1uonPezO9tpckHNbkTgrXG2lwWAxW/bzgUkjaEzaU1cQ8dKzo3DjiralxTsbXL6njrQJOcVApbqalBHpzVCv3LSydjzT1YVVBNKMn2p2AtbvSgMahBPQmpOO9IpSJKACaaDTgaA5heRUm4VGzepqIvTSE2SE96gk5HNBY1GTmtE9CWYt/HuBFcZcRkSEYr0GVQ3WsG8sh99BUNEpnPxIQKsbeKsiPHQUFKksqFakSImpvLqRRjrQIg8o1ciUikxUqik2BfiPFX0TIzWdFxWnExGBjiqjsDJ0QVeQDgZqumMVOgGaqw0W44kznPNX0yuKzULLJu6itUHKZxyKvlAlP3evFQTSYXinoxINVbjcOAOKUtgKMknmcHoKqu+3kDFTnjmqcvJ4PNc8mbxQjSBugqCQ8dKfj5eaaV49KzbJaKEnJquYt/FXvKPrUyQn04pDUTLFsTxU8dnntWuluO9Ocxx4APNQx2sVo7cLxVjGBUJlHrSq4PQ00iGybkChPemhsVG7gDIPNVYlyL4PGM4oyTzWYJyO9Kt2M4zSsZuRdeES8PyKljiSPiMYzVUXAA96kWYjr3rNsaZdHpU2DVVJCegqyG6A9azlK5aHCpFUt14FNALdKsJgdetZNlpE0aMxxEMkdq6HT0gibbIBvI6+hrLt1SCFrtWxMuRgjjH0qxp90tzOGcYwcmuOtqduGjqfQnhXUDEix5xGoB5OMkdc163o+sMFDq4Oex6/lXzpo7hVXcNoOPqa9a0WZnA2/Kv9K8DEUtT6Ck1Y9lt7+OZcBeQPmJ4H4VqK0TugUfLjqPWuEtrhDGqr9PQ1tRXTRNuzwAOM8mvPnFrYHFHWMinhDgAimC3ErBecd8VhrqCffjPzjnaP8A69SR30pAYjh8k59aztJkWsdAkKANHt7kitu0gjAiDH5s8Dtj3rikvJG/dL8v0qxb3c9tv3EuG5+Y96agTON1ud01tHOxOcgHgj2p0dohkaTPXAwOvHSuVt9Vkik8xj5gI4BqRtZmtmaY5DOMhBwPQZqjkdOWyZtzxWSh9md2euMDisSG0gkG5ifJGcA/xVNJqcEsXILYHOBj64rKl1MABVATHQDsPepsXBNLUmlltkPTKE88+lUTcFmKxn5B93npWTcXHDYYgFs88E56kVTlmOxEjbKDrVxh3NUi5LcRqMBfmbkmsxpiDxhec9OlVrq6zhgxxjp3rLn1TAZ1GQmM5/lWipo0TsaL3WPnD/8A66rG82ktjOT0rCe6R9jRHb3xUMl2VBYtwBnHtVqmVznTrejOXGAOoqxFeM4P1yMnpiuHW/Vir55Y54Pb3+laRu3RMq2QRwKpQZLmdcbpX3M6YXA/OpFvYokw5BPWuJTUG24diuTkjt+dWEvY3cxIpUHq39KXIJzOqlvogfmbczDnFV/tMCErnLgjjOfxNc49w6vIucL/AJ61AJiSBG25iMcUezL5kjppLkEsW+Vc8ntVGS6icq+Cw6ZPTFc9JOVfyJJSxPUZ4FTNOWX5jkAdhwMUnAXtDTkuFZgykqMVDvd8Z5GOKpNMueDubHHpQt0FZQfun8+KlplKSJ5ozlW5z0x71GxZR93k9f8A61K1wpO5Dhj07mkkmwFZ+SeM1nylc43zycA8U3zW6rUUhjUZ6tUBlKKMcsf5UuS40y+JWB5PBqVrkA4U8msJ3bPXmlVth6/Mafsg5jdFxKD8+fwNWIrzpjg1zZmkU8c/Wj7VuJCcVLptFbmrqukaP4gg8nVLZJcdGI5FfLnxI+B8v73UtGZJQQx5B3L9AK+j/tsiDbxirX2tHjA3ZbuK7MLiXDRnFicCpq5+V+r6PfaLdNa6ihR0wDkY/nWOcc4r9DviH8OdO8X2U3loEuX+Yt6kdPyr4h8VeDtY8K3Pk6jFgMSAwHFfQUK6kj5+vhZQZxhUGq5HerT/ACe9Vm5rW9zmIzUROeKkaouPrWoCfWo3AH1p5qN6ho0RHmmvwMU+oH9aaE2RMR1BpuaQnNNNEkQB4plKetNNZMrmA9KjPSlJqNm7UJBe4jEnNMyaCaQmrKuNNJRTCazC9h2c0tR80u6pcS4u4+im5puTSsM//9H8iLO0gGpETPhFPfvXpn9nxiEPGQR6g1yieGpbq93RENvPy59al1HTtT8MXMUbsQs6kjByDXyD21P3tRszVmimjX5TjHoaWB5GIBOTXOPrcitukXmtbTdYtZlDONjr1FVHl6GsK+tjdnyq5A61q6Pqd1pzMbeZo942nacZHvWZJeQTooixkVTlaRfu1z1E76HpQraanWyXLytubnP61j3cYVvMXgVWtLxvuNV9pI5MAnGahXRrKSkjHv71ZIdrD7tSaXKHj2rzjqKZfad5gJQ4zWNaGbTbxlYnYemO9dtKppqeTWptXPPtftFsdVuIkGE3ZH0PNZkMm44rsPGCeY0MwH7xyc1xcKSK3zDFVFX2Pm8Q7TPXNE1dLHS4IEk2GRdrLn3q+wEoDr3rzdm/dIwPSvRNJP2qwQpzIoGampF7no4aurWZq2O2CQSOM4NcP4jhl0/UzdJllmfcrfkSK6dNQUDYwwc4rO8UT79PjAQEhsZ+tTF3VgqO0rndRXFpqFhFd2cgkRh1HYjqMVYs4Xdgtch4GVp7F4cfcbGB2r1fTtNKtuauSpe51wxFo2IIfDUVxIJnUAnvjmu+s7RLeJYkGAoxTbeLCgVpxoc1qeZVnd3LEKDNakQwBVSNTxWhEtRKNyFIvwHFa0LlSD6VlIKvRkiocBcx0EM2a3oJl8tW71zMDcVpxyDAFQ6ZpGZ00MwIzWmk3SuWilIAzWjHOcYNc9SB0xkdKshIFX4pRtrChkJUYPFW1mxwaydO5opG5G/ORWjHIeDWBHKMDmrazgcVnyO5vGodIrjqDUgnx0rESc4pv2sDJzjFJ0ivaI3xPt56VJ9rAFctLfnb1yKpfbe+8/Sj2Fxusjs/tw6qcGqUmoEEnfiuXN8w+YPkVVkvQxyDiqWGZDrnSyagp53cism61HK53ZPpWBJeHOAaz5rrnrVxwxDrm098x6nArLlvBuIzzWPLck96z5Lps5JrdUrGEqprz3wUHJrBnvC+TVa5mLDOaypJiK2jBHNObHzznJGazJZAaSWWqEkmc1rGJhKRDO+c1nlqmleqbNWvKZiSHtVZqkZsmmNjGKtIzZGaacdKD702nyENgajbH0qSmEjP0ppCbIzTcZp5+akOenSrSFciphp5phqiRhptOPrUJPOK1iO4hPGaiLflT2bHGKrsabKIJ0WVCjDIPrXE3VlLau0i/czxXayE1SnQSKVNVCVmZ1I3MywuRlV3da6NJymDXBzwyRTEgYFdDZ3ZmjUt24NbTjfVHPCVtGdraXQIHNbkUyuBmuGgl2t8pro7eRSBzUxkdKlc6JZARgVKKzY24q2soHBqmjRMsZNODAZxUPmKajD4qU2imyzu5pd5FVTIOppBMc+1WRzl4PxzTvM9DWabnk56Uz7QvrQkHOafmdqbv7HvVFZgxApJJ/LYKcfnQHOaBem7weKypb2ONdzNwPTmovt6Yz60xcxrk5HrVWRN2c1U+2JjOaaL5TzmkhleW3ZGJXpUIjBPNWpLhHU5bArN+1xAkZz70nEFMslNoqAoc8VUfWIo22yDAqWO+tZyBHICT2pODKU0TDIpwbJxQWxTAwzWVjXRmnCQOtaUfIHNY0b5GRV+KUDg01IpI10HFToPeqaSYUHHFW48nkVomZtFqNTvyavr2xVdADjB6da0FiSTlK0RNxEAHI6mobjhN2OtXfLVVHY0yXaqcjOap7AmYDnd8tVnjOM960HiKnIPFQMorkmdKKQVjwRil8s9Ooq3jA44poGev51i2OxEIRSSPFbIZJmCgeprmNW8XWdhKba2xNKvDY6CuPuNfkvJd07lieg7CmotmM66WiOzuNeaRilsdi+p61WS8fO5mzmuFlvzHIrr0zzW3Z6lBdRho8gA4watROaVZs6r7UMA1YS5Xbu7VyhvU3FT8oHc0GbEYkR8qewNBLrM6l79QMn/ABqo2obj6VzbXhA+U5+tPgnEzFGGGPSk5EOZ0Cz5yW70xbgoxDHPpWK7+W+0k4pyybhycntWMpAmdAlyWPBzWras0nzHpXJQTlWwBkmui011mJD/ACleorFs3idHABnnmraR8/Wo4hxlegq5ChJrNyOiKJEi962bWGCGH7S/Y8A96gtosD7u7+tNktrzUJFjC7EBwB/WuaVU3jEr3NybqUrFGAT1x3/Gt3RdPeXgqV5zxWtpfhgRqSwLHu1d7YaXHDEp2EMa5qlQ7aEB+j2ahT5/zba9F0wJGyjGABz/APXrnba0KKqoMZPPqa6S3Qo2SM46+ma8uq7npwZ09vcKOpOe/bitOK7BOUPPQA1y6Sep/EirCSOitsGW9fauSUTRSOkSch9/Rh2qyl2ccMMr2HauahnIJ3fMO5zV0SjbliFBOOKlRQORvJdyEblYDntU8VycZOWGe9c+b8RjaoAA4x6iiOeScj+AUOJLkdVDdOshYHYAOo9fSnC/3TMW/es4wfbFc81+0EflL8wHQCojeM+FWAxIPvMT1NLlBJM6U3olfLErEgzgdSaq/bA0hC5BIJxWObvEYz8o7DPWmxF2zLISrHp7UnFEOxalnkKs0nLL0/wqAy7mLbT8nTH+FROXAwjk45J781WEp3OrZKr69/rVco76EMl75y7imFQ/e781kySBC8inK89f8K1rmRNhXjcegrBuXbIeUda0hEi5nyysFZ1JAUA4rM+0zMrM+FU8k/yq3cGTBOcZzwBWPiRs+e/7sc49fxrqjFEOZILlYxtRiM9/X2q2LwBfMYkrxgDpgVjylc4XqOw6Y+tVjOUbHRemK15ET7U6RdWTaqB+p4BHP41YFxcRAl2OCeDngZ9a5Ib5SWznFTvLuYiRtxxzk1MokOsuh1BnZrc+WcqDljnljVZr6RjhAQcckH+tYKy5AVeQO2e1X0uIUBKZJrN0xqqW0kMY3Mckc9a1YrkhP3pwCa5sTtJ8z4HoKkM6MB8/fGPfvUukVznRG5TPHOPT3qUTFlzLj8K55ZAp3dqsrOGUoMs459qh0jSNQ3VdETzBwxqUzbxzzgc1z28ggu/WrUdzGgw5wKydMtVLmwpDbiR8o71CVLEY6GqhmBbjkVN56gfLyaz5WaRkOaMrVVmCnHXNWzINoJ6ntVZtgVv4cjr3zTSsO5UYvuODmonnZV+Q7fekchV3BuP1rNluSo2Y4FXYakW0ue+7J9Kui5G3dkVzvmZwRxSrKM8HBqPZFKqdTHdgYyK5Txp4P03xjpcltdoFnCkqwHOavrL781ZhuirZc8nv6VVOtKDIq0lNWPzo8XeGb3wxqL6deRkNH/ER94HpXGkdq/SHxj4E0fxvbNDfDZOB8rjrXwb4x8H6n4P1qXSb9DtDExydmXt+Ne7hsQpHzeLwzgziX6VCafJ8pIBzUBb1rvOPmHE03AppYU3dQWmDccVWkqQnAqs7Z5ppCbG5puc0E+tMJ9KTEmOJphOaQmms2KxcQAkeuKhJoJphNNqxaDNNLUGoycVIXFJ9aaWFRk5pmaaiFiYOMUbh1qHcKM0+ULE5I7U3fkelRg0m4UrDR//S/LTRdXWa5Cf3PmBr0LXoheWMLz/vGAyvtmvANHlljuFcHA5r1mx1FmswJWyRwK+TqJJH75hK6ktTn5tDknj3gjaCfrWZa6eElIPFdfNdBbeRU4PauPF0ftYQnkkVjAKlNJ3OlgtjGQc8VsrY3F4D9mXcVHPNc+7vkKGNamm31zby4RiAevuK0Z1wd1oUVne1uDBOm1gcGrhu4nGVPSp9RjF0wlYYb1rINoOobaanlNOZo24LtZl57HFS3VpFfQbB94cgj1FcwTLCeprd0+7Q8MeanlsWpqWhx+u6dfGMMY2LIDt+tcUL6a4URSDBXivokNEy4lUOjV494j0E6XetJCM28xJVvQnnFbUZW0PCzHBa8yM6GMtF/Kus8LaiiCe2l6ZGD/OsWG3K2Am9Fyfao9MASYlRndW9XY8qDsaOoXLwXUpU5AY471oreR6loBt5V/0gyht2OgHp9afd2P2q2TyVzJ14716D4W8JQW9tHPepvkbDbT0FZpWKdW5Z8F+H3srFbmQFTMc4Pp2r0y2gx0psEYwFA4HArVhjxWFS3Qv2j6liKIACrqJTY17VbRDUolyJY19KuRjAqJRirMa8jinyi5iwOKtoc1WHWp06U+QXMaUL4Ga0kfPesRCRjmraTUuUakbySDpVxX9OlYMc2aupNWcqdzaFSxuwzkHrx9a0Y7gnvXMCQ9etXoJwo561l7I29qdOswK+9L55HesAXQxkmo5bnjrSdJB7Y6RrtgMb+Khe9UjGa5f7UScg0v2g0lRH7Y33uuODVQ3R9ayGueKg85j0NbRpIl1WbjXT+tMN2duGrH+0HGKie5qnSRPOzTa53HrVSSbFZrz1VluCRxU+zJc2aDz5HWs6aYdjVVpj61Tklp8pDkWXnGOazJp+uDVeaUnvVJ2oUSJSJHmJ61WaWo2fPNVpHIq1EzY6ST9agZh3qJjmmVokS2SFvTio6KaTjrTuIaxxnNMDikYZ57VHTIZKT6d6bgGm80DBFOxmxRSE9qXNMYkdKtCGGmH1pSabTAYetV2PNWG96gdfStXsJEJNRtzUhHaozxSRVyBxxmqMgPbvV9+lUpKbQNmbKOCGGayZVlt33RnC1uuPaqU8O+MqK1jIiUSazvVkwCcEV1VvcBQM15irT2kn3cgV1GnajFMuM7GHUVbjdGKdmehwXAIyDWgrhsVx8Fx0wa2IZnHOalS6HSpXNhzjpVZpnH0qMS5GagldQpzV3B3J0uC+TmozdHkKelYTzlWwpxSLKwVnAzjvmpUzKRvTz+WFQH5m5/CmiQ/eY1yNzfeQ6TNlsHmoJtWmZ9yH5e3anzIycztftBHQgVi3V4isQh3N61z/ANtebIJ/WmB8cKfrVJi9obIuWC5Yk0fa+ev61lX1yIIViTmQ9fQVRQniSU4wMj3p3Qe1Z0IvmBw3FRPqTBgg5zWOZwBl6pC8iErM33F6eppXH7U6W81FIbUu549BWVDqZcZH3a5y7vHuSFzhCcYpby6jsrPcGzKThRVKaFzs09Qvfm681TXUWUBF4J71y81zK5DHgmrCltgIBLHtUSqMXMdQNWvYHVYZGLHtx+tb8OuSjAuEGe5H+Fcpa2s8eHnUhjU9xKeNo6UNXHGq0d/DqEcgDA9a14Z1IHYGuHt5ldVYfKBWytxHkKPSo9mdcMQdvBMCgycitWGZCBiuKtnYIGBODWpBdhSPak1Y2VRM7BGORz1q+JXwBXOQXokGfSrv2ketTz2NUkzaWYkHceRULSHuayDdqKQXiEfMaHUY+RGk7A8Gogo71VE8bnOeKztQ1y0soSwPmv2Veahu43JI0bqe2tImnnfai9TXk2teLbi/d7WyJggzjd0ZvxqO/wBSvNXJN0+AOiDgCuTu4lXKqOfWpukctWu3sRPGIiSOp75pmSDuz05qON2VvLYZz6mpFUg4pcxyastNK0i7sc1PbShEAQYbvS28BZDuzmtSLT8R7mHJ6CncOVksTmVRnkVYWGRgSnANS2sKRqFz9c9q17YqX2sAVHSoctRqJgYIGyQYPtUiqRhlOa6WTT45vmVMH2pBpTA8CpbL5TJEQZA23nvmphEBjt7VvR6TMK0I9IjyPM59qgqMTGgspH+dVwK3bCzdDwCN/Un0rUgt0TGeQO1aA7Y4FZykbQQ+GLav0rVt4xJj5c47VBaQmeURk8mu50XQJGkL4I21yVprY7KUSnp9pPdxvAqGNWOC1dnpejQwjy1GfUkVv2lhDFFknBHJA4BrSj2hN+MD0rzamItsejSodWQR2q7QqdR2rXht8pgH5lHSqYkUDfjn07077UysPLBJ+tckqkpbnZGNjYgXyih649a1FmXJGMkisH7WCPu7TR55LA5OOvFS4FHQiUIylhnOM+1W4ZAWBY/0zXPG8bIjRQfc9auwytMm5hgDr2rGUQ1NV3QHcBwvQnvSC8bYeMAdAOKzm2sBjGCfzq2i7x8mABTVNDuX4vNP7xvk29MHJqZ5RtJUncemO1Vi7E56hR0HSrkFufJ8+Q4B6ewqZLoK5rWsQ+ziZwQo6ZA59aR5I3IafJJHCgcYqp9pkk+WLBQcDPAx34p6TBcM/HB57n2qBE+2N1Ekgx7dqmK70Lr8wxxVHzAXXaxAPbH8qsb9qkE9O2aB2FPmLErDAbsMVWMQSLMgLuec571I02FJUcCmiX5MuRnHQUAU50BUGYbTnAx2FZV5ERLsRgxA69RWrOm4BixwOcVUc/KxHy5xg55rSDJuYFxGoBLHDGsqVYXg3IueDnJ5zWxd/NIVJwh7j1rEmU4wxHHOM1rF6mM0zGuZNufLO1h1zVV1bPz9TzWiY+pC7zjJqqWV0V5AF/DmuiJkV+Vb5D0p4ywyw5NNkKhiq5NRlwn1rSxLVy0hVWyc0/zVXjpWcZWIKtSRyYB9KhonY1hK5IZenaoVnO8lQKzWuDsKISpzz9KgyVbcw4H601EpM3hdRS5jVstjPtxUYn2PhnO32rAMrs2B8qn0qdbtV4KE/SqlEtSOiW8DD5eBUgugDtA3Z/SuaE2Vyvy5p6zbCTnrWTgUqh1SSKxBY9PersN1uHAx0xXILcN8u78a1I76JSqRgn1PoKzlRNI1TpDcl/rSM7TcA8VjLdRvjaQc1cWYAYU4zXPKnY3UiSUHbuyMiqLLnIcZq6rRs20nnrmopVXkLyaFoVzGXOFVABVQE9j0q/PFlOuCKy5Ay8CtY6i5i0t2E+9zipI9RhckJ82081jswCkkVBEpiy/rUSjc0jM7CO8Ejgg4zXP+NPCGleLtKmW5gWW7VSI88ZI5HNMhuD90DrWvb3MkeEJ71FKTiyKtNTVmfnP4t0KbQNan0+ZWQx9mHT2z3rk3GDX398SPh1B4u0+e9t1Ed5Gu4EfxEdjXwhqWnXmmXT2d8myVCcg5/rX0VGqpI+YxNBwdjLPWmmnmo2rpSMEyJ2xwKganNx1qBzj8aobYwsT9KTJpKTIqWgQvvTTgDNMLc0wtk1Nirik5qNie1BOaYWwMik0AE45IqNmzSEk0wmosguBPpTaQ00nNA7js0Z4zTM+tITjrTuHMP3DGaTcKj3j0qNnNO47n/9P8braVoxuWui0/WCj7J/ungVhabslBjYdah1GKW3vMBcIMEGvmakEfsVCo42aPT0AZCTyDXNPblbkv3JzWj4dvUvIDE7Ydf1rRu7aOOXHU96wtY9Z1lKJmLK8bAscitW0uVYgmqd5Dtt2uR91Bmqmhyi5n2N0wTmqUUxUa1jsi4ZPaq+OaeNqcA5FI3XNKUD0Y1bkRiRuDUH2XDZTrU5bnipoeCM81m9hjIpLiMYOa03ihvrVobpdwYHGex9RUZwcYq3EvyjPWsJy5dUVurM89vwdNtWtW5LEjOO1RaLbvfS7IAc5ArutS0NdXVedsiDg10XhTwsukRNLId8r/AKCuiNfmR89jKSjJ2LPh/QhCvmXHzvnjPau/ghCgAVXtYdowK24Y6UpHGlYdDF3rTijxTIo60I0xUMTY9Eq2i8UxVzVhBVJEOQ5VqwvH41GBUyitUhXJUPOKsL0qBRxzUwqmhXJAakBNRin1NiuYsJIRVtZe1UFODU4IocRqRoxy7RmpfPAFZgbFPD5qOUfOXzcGkMxNUi1AaqUULnLXmnPFHnGqZJpASKXKCkXfNpplFUy7D2pjS0mi+YumWoGlIqo02KiaakNSLDzVWaUVAz56mqzPT5ROZPJL6VQkl7UrvxVR35o5SXICe9QO3alLGoWNFguMZqrnnk1M1RHrTUSGyFqYakbrUZqjNsjPWmnP4VIRTSKuMRXIselJtqUio/eqcRNidOKZnDU9jgVFmkQOJzmoycUtIfaqSAZSH3paaQc0+UBucVE/XpUpqIjJ+laNEJkLcVXdiOlWyPWo3QHtSiPmKTPkYxUDirEkWORVRs/WqHcYy1WZTU+8gnIpPlc470DKEkSOMMKzHiNq3nKOnet9kAHrVCQI3yuODWidtzOaJ7DVY3+ViA1dTBcsVBHINebXFkysJLc4I9K07LVHBCTNtNVa5kpNHoAnY8U13Lday7bUEbCswNXmnRug5rJo3U7mZerNndEMis3fv/dnI9a6BnRhjg1CNKEnzo+CR36VApGZPHHIPmztHQVjTKVHyV1Y0S6RDJKwwOynJxTINLWW5HylgO/pVXMHA5PmEbs80+B3ZyxOBXatoSfMZCPbiqRtIQdjY444ouRyM51rUPcKXlO1ueKdfTxq/wBnizhOv/1q2ksgbxCq8KcHPSr91pdqfMKrh26HrTUgUGcfPvMXy5PHYVlwWk08Z847AOnrmuovBNb2q/Iok6VmW1u0YDS/M3UUN3KUCo1vFEY/lPTrWLqzie5EcJzGo5yO9dZLkDzMDK5xXM/Z/MlZuuTk0C5TKRckAV1mnWUUbie4+ZV5Ue/rVK2slhl3kBsnjIrekRwwQj7vWqUw5WVdQuJG+YHH044rHjnMh2EZNat5GXAx2qrY2snmsVyN3Q0uZj5C5bmQDArXjwByeaSK0dFGfmY1ILaUNnbgeuOBT5ilGxdXUZFjMYxwOD6VSa/uAmBIc5qOVQvK5bH61QMEsrYQHntQ5miudPpupXjybd524q7dalfwkFGwvc4zUGlWcyRbWxx155qO8bfmLaRjvRy6XGnLoRw6/dSMQWGAe4ArV/tWV0UoRuPHFcfJYeWwbpmt3TolaEwnIYHOeKg0TmTXk93NEVeU47gcfyrMjbahTBPpXRmxaSP7233NUDaFJME5rKQ3BvcwBnzCO3fNVZ4QVZ+1b/2MFnkPI96n8hHtzGygZrPUXsmcTcWm5o5YSCTxW3HpyXMKt92Repxir0OnpASRk/XtV2NGGEUdaG7ItUiKzsREME5561prYu33T8taFrZMVyR1rcjtVjUZ61m5sv2aOfi0tWVg33uoxViDS3t3BLbwfbpW+Ix2p+DjHalzC5EQRxDp6VYEY6Cmk9ulLkgZpXKSLSkLxT85rPaQ54piSuWCsxGfSpaFY0eh4JrSt18zGV471nRK7sFRTI3oOtdlomlm6JhuYiFJ65xisas0ka0qbbOg0TQbe9RWPDZ65znFelRg26hFGMdeMVi6fZ22nqIrZSDjqTk1rLM7Dnk15dWpc9ajSsXdwxyaapVjt6moNxJ24461LDs83lwp/WuayOpSJlJPy4x6VJFuDgsv0psnBypAb1p4k3DL/e9aBpj8srb5m/AVe82Jsi2yR6kYFU0a1ZcMSx78VaikjyIwuFH51LHzDohN1YA9h6mr6wyKdshIPZRzVQzgHoxb24rQtpkiLCRXZ2+YADJxj1rNoLss29sJCPNYkKfyzWkljC77SxzzgMe9Z9veM7b/ACiVAyARt/OtiG4QZcph379/wqTRJjoLQwlUduTnp1Pp+FTsXGICeD2p0ckQAkc/O3Az1pv2lJDnq5HOPQdagdmKMoOMfLSMTLtLHGD29KP9YCFXAFPRdvPU1LZJYTYxAzgDue9Sny/l5wN3Uio1O3lVzzUbE9CSe/PSkBJJNF0Q7sHrimNMhZcDAHoKiCknP+cU7gHYRxzmpYw3eY2VGSTz2qnPCRI25vlPQDtSSK5yYuAT+lIxKR5VfMb0NVEXKZ06ZcjHA4rLuoSg9+5FbkysuSw+ZgPlHQVnyIyrkDjtitEyJGBLDtTcx4J5qtLGgIVRndya6CaBkIcKcgdBVCS1zljuDH1reMjHlOekQJnPWoCEAB27vpWtJbtkHG71qk8W5D/CScVrGRLRlEMR5jcAVBkldxOD2rSeB2+Vfmx2qrJBu5zgjtVGbK5YYwBUZYnoc09kKZ3cY9qhMvzYXr71pEzYz7pDDr6UyR2PIqQsu0kndULbicsOKaEVpJpYwFGSW9PaphceWAGHzGoWYA8D5qqSTnPIzRyhzGuLrzDk+tSC68s7k5PSsIzdNoqQTjGOtVyjVQ6CC8ZTjitSHUEJ2nINckkoJBFXUlA+9WE6JtCqdisyuMmp4nGSqciuegukWIAGrS3igEK3PpXNOlY6FVN/HyZ4xWXcBW6DGKrtcEplmx7CkjkEmT0xWUWPmM67IXkcVQLnuetbE6KF+Y5rIcAHA71qNSLNkRHJ5jHIXkfWteGbzHG48sa5iaWJDtQ5NCXMqNjPFKVMpVD0OG5jjCwlg+CMivmT49fDx7xj4t0dPmTiVQONvrxXt9pIzQl2Yk5/KtiGUXVvJYXADJMpUg9waujU5WY4qjzo/MCTg1AT61678VPAF14R1Z723ixp92xK4ydrHtXjrZBNfQ0GpK587OHK7Mjc4OKgY/pTpGzVZj3rexDYF6YSTTS3rUZJ7VLQJiswFM3Gmk4FMJqbAmOLZqMnFITUZyOaXKO44sKaWAqMtTCanlQcw8uTTWb0phY00kClZdA5h5amlvWoS5PtTC1DiPmJt4pjMB0qItTC1JRGmz//1PyL8M2kMhbzOXJ4+ldfd+H4dRhKKdjHGDXmVndXNu6yW5ORXqOk67Dc4SRSjqB16Gvmavc/ZMNZo4YW17oGopFKMEfMPQj1roP7QN3JvzljXTa1Fa6pCm9cun3W71xtrYNDc9eM0U5KR0WsdBePINPKBeHXFYFpA9pdCLo5HPtmu3s442McUp+UsKyIZIn1y6BXKhtopKOoupTjuJBPsb+E1vIX2biOKjv9IUyJcQNsI6g9617aGN4tpI3DtUSizuozstTJ3cEnrU1vhunarl3YhRlOKowRGMnJ/KoN3ULDEg1vW0RZAQOtYSRPLIEHOa7mwtikaqe1c1ZdDOWIsiextNpDMK6SJOAKjgh46VqxQ9KqMbI8etPmdx0EZGK1EGKjiiq8kWTzSMGyeBSRV9VqOKPaKtIPStEQ2SKoFTKM01RUygVokSx6jtUyrnpUY6VOnStYojmHAVJ2pFp4FV5CFAGKcKAOPrT8A/hRJBcB+dSq3FRYpw4qGh3JA3rQHxTaKLBck3ntS7qQYFNxzT5QuP3UbqafekPHShwHzCkjvVdmzTm45qBjUNFKQjNULE9acT3pjHAqOUdyFmqIt609jULE1dxEbHNV2FTE9qhY4NFgIWznFRGpm5qE0guRmo24qY1EcUAQmmkU/FJVpGLZHTCKlIppGapE3sR008cU8imnNXYlyIm6VWckcirJJ71GwGeKloohVietKTmlOKbTQBSZFBqFjitTMkP50hx1qDcD14pSwAzTAU5PNRltvUdaaZfl4qoXcngilYXMTOQR1qi65Py1ZcgjrzVFlkznOfpVNCTFcEdKiZVIz0NOKNjO7mmEOMHHFNItNDTuHXmongRuascnrULFgTVWJbuVWgHY1n3FluG5eta+R1qFmU8A4p2sDRiQXTWx2S9q6GzvTIoZOQOKzbm1inQpKOvQisbZeaa7/ZzlODz0NDimZbHo8Plsck8+lbET5wDwK8+s9WjuABu2y9x3rfgvGz8xrNxsUpnZJKo4FTAJywXk1y4u26CrMV3MCOaTRdzoNwK1WkiRjuKj0qFLgsOasK561MhiRRIDtHApslsCjL/F2NWA3pTs/wB6kI5C606eaVfMXAAyOaibTBnco/WuwZVOe9UpIRnIFNDOJvbSWLkfdrI8rqdvJr0Ca18xSCM1h3FkyH7uBTHFIyUgUQq5PzDBp8s29tzL1oaN1OSKYzvuxtxT0OiNC5TmIZvar+nIgYM0gRU7etMMJcZ9amSJY14A/KhI0WHN+GS0A+ZwCelaCvaeWVZ1fI6A1yDLuIK8AU7aV5Bp2K+rGuYo8kLznoK1LLTQGLPxkVzKSkdyMVpLqU5Ibec+9Q7jWHOmjtxATjnNSiBGJyPzrCTU52GCBn1px1WblQQPoKXMzWOHNae2hReg6VRRY4wcLgjp61nyakxBJ+Y1B9rZ+QcUi1h0bbXchHTiqE0+4jcRn0qj5jP1NCgngVEkjRUEXFccqTiowzbssc4p0KM7Y9a0obIlumamwnSSKyLIxChM5rbtbELh36mrltapEuW61fViMgdKykrnPNpbDo41RcCn4A6UmeOKjYtjNTYxbHAkUZJqEvxnOKha5xT5SWy2eOTUe8Hoc1myGSbALYHpTwAq9hQ0S5Fsk8nIq5aqzn5Ru/WspFllfCgYrsdD0pXfa2VJHLL0+lYVZ2NacLm3pOiSzIk1pJh88sO1ej2kElrAsUjbmHJY4yayNK0v7BG6q7YbnBNdCLVQQrL1HrmvOqSbPVpU0hxuI4wrK/mFvQZqxBfROCPLZT71WWMI2FAUDpV0sQVZQM965WdLmTtLK+SFPIxzxVNUO8ZXOD0q+GLMCB9asAKRkjFMSnYg3zc4jWr0RlCLnGaXAZQV4zVgRs+CvITjNRIpSGoZCoXaM/lVpHmjlKhc57CmLGd24/p1rUjQugI+UdM1IXGRvISC8YwKvRS79qpGd+eTnt6VGsSxnDc1tQPAVSGJdrgc8fqTWE2VFj7Z0G0SR7WPGR3q2z2yuzICZDxnsPeo2ZM5PHuOuaeETorZGOSetZ69TS41QGOR8x9aux28YTMjbWPYelMaJQFMX5e9BBDkMcbe9Jodx5P9w4x/Sly4bEg7+tOVYyoGcZqRY4PulskD8KTFcEYk7I1BGc7j1pymMsxAy2foMVCWwQVX5RTVJ5LHnNJjsiyfL+6vLVFt2sdp4x6c0yN1RyU5foOwFSF0T5iRuPOM5NFxXKxYk4z92mcbiDyRinZi3FyuCcn60pUKoyOcfl+VGoNkUqiToMEiqckYC7VfH+FWPMdmwBwO9QyMNxDDPpTQuUoOGQ7wefX2qm7szMSd3rWnIiOSpBIHpVKQIG2oOPrWiE4mUVbkAZxz9Kgkif7xACjvW1IcJsGOevqcVgTq5lL9fSqTZLjcqYUgnOM9qpTKCf7uOc1osDwG696qXCZbrk46VsjGUTJm3MRg5HrWc+zdheT0NaxQ4weDVSWEL8yKB6+praMiGjNYMqkMeBUTTE43LwPSrpjYglqz50IOBxmtEYsJJVPIGM+tUdjsfapCuOvNV5Ljywxxk/yreKMmQysdxAPAqISdaCzOM9M1WdyvHSqaJZbS4KHrVmO7UnaWzWNvHJxxTWkxjnmpsUpHRC9bACnIq/DfBF3Nyxrk4pkI6kGrKzAZHGazlTuaRqWOwS8aUq3aryXSIcHvXHQ3Eh47VqxT5GSevrXFOi0zojVRvO/mj5D1qpcARrsBy/eqi3IHfFV2u9zbTyvepUS+YRlBPvU4khUpGV6/ebrxVedxj90Mn1rNMpLfMeRxWiQXOimvlGFt12oK2rBopHXzGwpGc+9cRFIT8u7OO1akExiDCUYyOKicTaEtLGj4v8PQeKNAuLJNkkgB8st0DV+emv6Df6DfTWGoRGOSNiPZvpX6LaUHIaVhiPHQ9zXn/wAU/DOl6vpi38enieeAMSVHTiuvCYi2hxYzDJq6Pz6lbBxVZnrQ1OzmtLkpIjLkk8jGOelZR6V7VN3PCnowL0wseRTSc1E7dhWjRPMOLU0tjmoiaaTmpsx3HljUZY45ppNNJxSC47dTC3c00v6VEzY6/lSsJslLDtUROOtM3im5pcoJjic0wtjjvTC5qMmlyjuSE1GzZ4pCxNRFsUco+Zn/1fx10d1WcI4GG4rt3tUTa8WAT6V5hDc7TkV0dhrEysNx3D3r5uaP1/C1Fsd9aSspUSgFe9LcLbyuSi7Tg9KqWl0s6ByMZPatCHyGm2k9RXLFuLsenKKaMZ7x7dS02QFFSaI1u5kuXk+bd3roL7TLe+s2g3gN/DiuRXSLzTnyw3Ke4ra5lyPoduLuKRcE9Caw4b+VL3hvlBOR61FDBMw3LkEjvVWW2No5d3ABqINlym0joLzVSzCNBwBz9atNbziBJMH5hmuL+0bpQqtu+lesabN9vs4VVMIgxj3rRwF7fQqaPZTZEkgrubeHgVBbWoUADtW5bw+lYSSOOdVtli3jxitiCGoLeEVrRp2FJoxbHJH6VbRBTFSrccZpcpHMOUVYVcUKoFSgetUkQ2KBipRSYp4qiXIcPzqcdKiTrU4rVEuQ4VIKYKfVIm44VKDnioxTxxTBMXFLjtS5yKUDNQ0WKBxS4FL0FFVYApDS0wmmAZppJzQTUJNAAW/CoWNOY5qE+9RLYaEJHrUTHilbrUZqCxhJqJqe3Woz0o5SeYjNRPipW9qiYfrVCT1IiKjI7GpTUZoE5EZqJvapT3pmKpJEuRCRTcGpiKbim0SR4700ipgB0oK5px0IZWIppGKnYVGRWgisw71ERVsjHNRMvcVLRSZWNR1ORmmMvpSQ2yKoXGanqJwQOma0IKTEKetRl+andN1NWHfSAYcYzQU9KkaMx8npUbscccVopdyGV2gc5wetRrC6/wAWD+lXCw25HBpgbceKq6EV25GCNpqu2O9aBwRVR1ycdKBlTJLbaGGOCM1Jgd+aQnnkUhFRgB7VAUPU9PWtCVUIBXvUXlseYyOOxqrDczLdijbT09aZvz1wRV2aLgkis/y8Eg9KdiNzFu7PLmeE7SOw4P4Vas9Sk+WG469N/wDjSzZRyAc1XbY/JGDVLsRJM6iC42ENuyPrXRx3MTAbSK81jvvso8t/mT37Vt2t5HMu9DxWc0xKR2YlfOR0rQiuuAH6iuUhvfl2k5q9HOvWsjVSOrWYEcVKH3DJrCinTHWtKOYHkGoaNE7l7Oajdc81GblFOCTTxOD900rCtqNCnHSo5ImbtkVZGc/WpyuV2569a0KOdlsI5Bk8Gs6TTQDlSGFdTLBkZSqJgdMsRmixtCs0czJalOn5CoNjdDXWJCjjc4xTWhizsCgj6UHVHFpbo5TGKXINb8tlBknb+VUJILdW2qD/ADoubLGwKAZQeamUhuelVpJIV3DcBj1NUhf7ZGUqdoHUGjcbxkDbyuKibOcA5qrBOkgYqc4pY7pGcheQKPZk/XYFoD1qdYs4xUTy/INqcmrMUjKgJUg1Nh/XIkiQMavwadLJgqOvrVSLUQG24+tdFbyM6BjwG6VlJA8a+g2KxWPljk1qpiMbV6dagKKxHzflU2F+tI5qlVvckEhzwKlDDPSqmcdqaZtvejkMucumQdqaz8c1Q+0LjPU1A9zgEE1PIPnLck8YGDx9apvNhuxFUJJUkOHNVztzjPFS1Yhs2xMChDLg0sWZHEY5BPTFY5edgFiXOehFeg+FrJbm4S2uF8uVh8rY4yKxqTsaU6dzX0jRmMmDa5OeRnNemWFlp1kDcFdjtwVx0IqfT7BrKNhI+5yeo9KtNGzvtZcg9DXl1alz06NItHyNvmo24H8ql+VseUMDANOtoUwwK4/CrCwlSCOlc0pHVcri2Z2O4YHer6wxp91e3fmnoADtz1qyqgnG6oTC5XjGBuP5VdVjtAxwelI0bhSEHSpYolOAzDpyadxoYGIIVR096twKHyQNgNM2gAsOgq1A6SEBW5HbHWs2y0SRQPjbnJNXhGq4LnhKhjMrShU4Pv0NWTkn5lyBxj371EpBrckSSJmMakM56ZzxV+EKke1RhweT61UjdQu2NSGPtVqHhDEp+Ycn61JqtCWOQyMUY52+tThhjaDkDtVeNRCpKjDHv7U98BCcjA9KjmKTJI0Z3+TIGfUgfhVwuFYqBkqOe9ZLSM9vtjkxu456+9Q2SeQxVuCOSfaosDTOgWQOcMMDt3pSxySORWeZsruCkZqWN9/ODgdc9KnlFYm3t06DPNJ5wK7+euCKq7gSxUYGe1ReZzj8M0JDLYm2b1Ucnn8aQ3KcK33m64FU+WYtnGOmai3KGOOfpQ0M0fNDHco4HGO9Hm84FZ3mOoOTtzTWuth+UDj1oSYy8XREYE4J/OqmT1znP41SMhf7xBzTjJsPynB61aQE8jbeg+Y1UYbeeM+lMknLHJ6+tVpJ/MO1c/LVpCZKZi+S1VJHGdy/rUUkp6E9KiY85NUiGPl+9nOciqEhRSTnB9atHYRhsnFV/LBJIHA61ojJmew3kuWyO1Vpl2n5jVnAz1Peq0u8KN/zZ9KtIhmfIxAzis6ZsjJq9KrdBVN1zxtyK1TIkingkE5x71Ql4bOK1GQAdKz5hjrW0WZNFFuVPoKpytkjirRkIUxjoaqtk55rVGEiCU4Xbn8apMWVgc1YdAuSeaqs2D6CtUiRxmbseakWXA+UcnrWeXAbrxThKnrVJC5jZjnkUfexVqC5KncWyK5zzSe9OSVgeuaidNDjI61brzOnGKtpIg5fmuYhuin0q+tw2Mk8VxzpWOqFQ2vODHrgVC6h+nFUFm3cU8zMOSeajlNOYkBMLfNzV9ZACMncfrWOZCwOeTSRySJ9DUuF0WpnZW97Jt2luAOPpW/bSJPGyEZUjDA157byyMVUtgCur02ZnJj3bmHPFckvdZ0r3onyl8dPCcdjqo1SyQx27KN69Bn1FfM75DEtX6c+JPDGleM9LuNN1B9pZDsYHlX7fka/OLxHoN74b1a50i/yXt2IDEYDKOhr2sFiOZanz+Oo8ruc4W5FQMfSnGo2OBXqJpnnqQhNMJoJphOKq43IcT3qEsTQWJphOKiSFcUnAzUBwTxSls0wnFQICRTDilpuf0oAUnio6XJNNbgUC5hCwHHeoyQaQnNNNBXMf//W/EmNiPwrWtLhVkUN3rIkGx/apYiD1PIr5+x+mwk4yPXLBAYlMZyDU1zC2N6j5hXGaNqEtuRGznae1d5FcLIgOc5rkrbn0FCd0ZA1a7tjgHp61ei8QSOhE6j8Khu7VZDlQKoNpz7N2OayTsaSm0zqrO+jnUFTzS38C3EO096wLItCQp4rpbeGa6wqDNdFBXFUnoUNH0Uz3BJHyjivXtMsUtoViUYAqjpGmraxKuPmI5PvXVwRY7VtUnZHmzqa2JIocY4rVhjqKOPtWnBHxiuJbkNliFK0EUCoolq2g5q7ENjlWriLxUKLVpV7VXKZOQ4LUoHekGKeKlkthTwMUACngE1SQh6GpVqNRipBVAOqSmingVaQDgOKWgU+mAuQakqOilYaZJSHNJkdqWmUmNNJmkIzScZoC4xsjiojmpWJzioT1pMY01GaeTUZoQEZ471CT6VI/XFQMaTQDGam1C7EHinA5FTcbQppjdPWn8d6aRTQiE0w4qUgU3BptGZFTdoNSkU0jFICDaaTbU5HambcVSYmMwKaR61JikNUiCIjPFRkYqbHtTGHerArketRsKsEdjUZFAFZh3pmO9WCOOajIxSsBVfrUZ6VYdc1ARVxAixnpUDYQ5FWyarzAbc+lICIzb+O9NMeep4NRsu396M0sc4JA6H3oQWJfs4A4NVmRo/pWh5jgdMioJGB7YrTQixTBFRuFIyR+VPwFJ71TkZi2c8e1JMQOVDYzTTkc9qqPKd3rR9o+baRxmmNovqoK4qHycHinpKpB5pSwqzIryn5SpHNZUrKp46ntWsxjBzncapuqlt/BNUpAZf2YM5Yk89qgkgETY21uNGmBxgmomtt45NGgmznZ7VJUIPB9RXPFbuykycgDv2NdnOoiGD1rKmhadSpH51aZmxLXWlwA2Nw61vw6osg+4Qa4xLARPu9KtRakIXCyIcDrUyj2BNnaC7J6HFbdndfLw2a5O2voZQCgIB9a1En44NZKmaxkdK10CPmp8d/EvWubEznoaRXcthulS6RqpHZxXokJ2nOasLcNnrXKWzlHyDxWj9oHSk4MtM6VJQwp5YYwDXPJIwHHSrKTZINK5ooo0X4HSqxUnmponDnYenvU5VccCgr2aKmXJwFzWfeWDyHexCDH8PWtLeynA4oklBBXuatJMnkOaXRLeQbWBbd1JPNRnRYvNUOuI19+TXRQnZw3PvTJ8E/KeaFYHTMi4t7eIIYo9nODg9qcbO1K/6OCueT9asTMpBjYU+2iWKI7iS2f0quYn2aMyKGSJyJeuevtV2OJSxz0PSrv7okHrRtXlAOKykzRUzOXT42ugckIR39a2LdGh4U8dqaBgA1OpJGaybNErFgOT940/zsVnvcovWmG4B+7UuIXRptJx1rNk8yQjHOKckpbqOKGIHI4IqSJMq3EkiAEkge1SbwFAfvVeWXIKk8HrUafvDt9KLmdyZio4Jz6UQoXfjg+hq7a6fJeMYIF3uBnHSux8O+F7qaQkoocnqwztA61z1KiRpCm2LofhlboRs8jRpMPlYLuwfpXt2jaDb2NvGXkW6eIYVwMEfWoNI06LS7YWyHzGJyeP5VvRRMVyCEFeZXr30R6lGhZE4hjY/Mw+meamyiEJjdzTIltxkyPsPuK2rS/uYV/wBGuIZueQygcflXC5NnYkU0cA9OO9ScP06U/wC2288ha4tEznGY8qKR/JEf+jOeeoYcipdwaEjADYJ2k1cREjOTgsOprNWIMoLNyf0q0N8Z4YFcUWAsyTs/GafEpBAJBB9RUUZEhBDYx2qcsFGXGfxoZaaRYRVcmKU9akgChypGAKpsc/c4H61aE8/l4XAUYHNQx3Lq8BtppkXmkgRtn8fWoo5c4x+J6U2KQrMzhMr0461PKOMjRJZW3Fug/h9ayI9fvYLkxxxqUPUMOfrxV6Ekl3b5cg4A9Pc1IrJgblwf5VWhakjSgvJbpMuuC2OnAqYswBDH5fQVSSUINrdumO9TCWPAbGCf1rFodydRuy247fQU6FUifDZOep+tQiZVGBznvQpZ2Pl5IHU0WE5E07nG7naO1Kt3E22NTuwKqySfu8HAUnNV4whbKHOPepaBSuaRkLcA4FVyWbKqNwPWqM0xRwCRtHY96hN26D5+FJ6DrS3Hz2NVnwOSMDsKqiUZYj5QKznvGfjbgdv/AK9QGZmJJ4zVqmPnNVrlRjLZ9artcIx3DJPXBrJck5b0pyycfIPzquUOY1ftLdYxiq/mFss5qnvPJamvJzntT5SHIvecem4VCZC2QvQelU1cHqMAU3zSpLL0H600hcxZMuSMDHrUbvzuz1qsZT99zt3dqjeX+6eafKDZYzt5J60x3bnHSqjSHPJ5qMynIyeKpIhskPGc9KYSp4BqB2LcnkVAWG4EcCtAtcfIM8VRnBAyPpV3fmq0q+tVEhoyiMnA/OqE2RlTWnIgxtHAqu8SsuMVomZSMKWMBsg8VVO01pzRFSQTn3rPZFU+tbxZhIrPjGehFZ0nJ56VdlYg9apu6kdK3MmUnwp6ZzVfBJz0q1LjoOtV8cZfgVotjKQobaecGpPNHYc1X3Jn931FQu5HLdaGkNSNPzgO9XIpw2OeK54MXHGcCplllUeWhyKymjRTOrWZRwn41Ju8zgdTXPxT7U+Y1ciuyOVHNc86ZtGZpsAp61IHGMZx6VniUuwyMDvUkk8WdqisuWxrGVzSSQjBFaVtcSoTtbaT6VzVnK87MiRtlfyrXEmzAf0rnq07o6qcrHSW0u05HJbrXm3xW+Htn4r0e41HT4R/aUaFh23YrvLaSFQrg/NWzayC4Uq4yOh+hqKEXFjxFNTiflpJFPDI0VwhjdCQynqCOKrSHFe+fHDwg+ia3LrFmirZysAQONpNeBy5Ne9SnofKVouMrEO7nGKjJOeaXOCabXZFk3Gk9qjY54oYgmmk0phzCE03OetKaYelQTzAXA4xUeRSH9KbWvKHMOLCmFs9aD0ptJofMB600jNLQazYcx//1/xd1q0+yTlMfeJIrIjY/dNejeIbRZYBMBkrn8q84YbXOPWvBg7n6rmNHknc1rWTkBu1egWExMa59K82t3GcnvXcaXOGTbWGIhpc1wFbU6QscFqupKjx4NUI/n4q4kGePWuGJ68mrECQ75QE6mvSdC05oow0gwWrnNE0ovdiSQZUV6jbQhcACuymrK5x16vRFiCIACtaGPvVeKPtWnEnasnK5xEkcfpWrCmMCq8SAGtCNaSQE6LVhVqNBVpBzWkTKY9B7VYApoGKlAqzO44CngYoHSngVHLqFwHNSKo7U0CnjNPlDmHAZp9NBHapFp2HcUU8CkHXmnirAKfSds07rQAUucHikooAKduNJxSZoC4rYNRtwOKOnIprGgpMYTUZp596iYikyhDUZxTiajY8UwImNQtzUpJqI1LAgZc8ilAxTqKiw7iGm47Yp9FMRB0pMVKRxioyDWhmxhBpAPWpMd6TA6miwDCpJphUirGKaRnrTsJorkZpmDVgp6VGQRVaMmxCRTCDUxFNIpCK7jvUZqyVPeoyvpVAVjUZFTlahIIpgRMKrOCDVwg9qgcNihMCk0gVhuyKdgMRjoacUL8GmrH5Z9RTsAPF8uCMg1VEGHHHFX/M7EA1ETuORxSYIhaMKPl4qnIcjGcGtFydprNlBPTP5UMCgd2T700jA54p8gOSvp6VWeye44z8p9eKEQVZ2UvhT81OWIHktz9KtHTo4UzvBx60xRbqPc9a2uS9SibWUfMr9aURyQndPJlatNIo5HOKz7m7DRyRueCppXJ1NLEcnKdKiwIznt1qha3sQt1Rc5HFLI7HJqiWtSzJPGxwF3Go/NHIHeoUdAvBGaGcEZ7jmgTJTAD+8bkiqdxHtA245q79oDL0rPZ15JznsKtskzWiKAlj0qnNAZR8nWthYjMeRkGntAqYAH4VKbGzkmSeEl0Y5HbtWlZ6i2QJTtrSa1ST5SBzVWTR4yNwbmqTJ1NmG8DdGzV1cyHOcVyqRSw8dMVtRahEiLGxAcD86GUpG/HIqcelSC4XcO5NZUFwlwGA4IqYSKvXHHeoKU7GqLp+h4+tX45iq5rCWUBd5I4qxBK8iZJ4FZSTOiNQ2fPZmyTxWpb3DbQG5HvXNqw28mrtq7yDB6CpuaqZtzMGX5fvH0quFHBY5IqD5hyDnmpnIFO5dx5CgZzSgI2DmqL3ARcDvTVnOwDuKOYLj5wCXIHOAB71Ezsm1xyO4oeTI6ZqsrHpmkmJs0ImE43e9Wdu35jWagK8jjNOaV5BtB/KlzDTL5kUJ8pzViNwUDH0rCXzEJH/ANatBJB5eAckfpUichksQdiVrNVpUkrVznBIx71DPEd4dOv3jSujPmJAxCZPWoJpflOev86tOGKqzDk1Tks5X2n5iGPAHJ/KsXIEyGH96u5encVs6bp890xkgXdsIB9ia1tJ8JXOowwmEFGDfMCOAtezaT4esdLQbkDv14yF/KuerWstDop0WzlvDHha6iufOlHVQRkfKa9XgggsYnSOJfMbocVU82MKpwQScDFU3ldXxuIVu9eXObZ6dOmkjUiuNkm8t8y9hVqS7Eg4+U/WshITEFkb5lb0NaJNu2BHx7dTWaibKpqSJIWcKfmPvWrCsBBxIAe4PFU4YlcBYI8yHvuGfyNLcWFzEu+5jKKerDnr6ms3FGnMjYRW2nO1sdB3psT5JOM47CsgSQxoETJI6Zqyk285iyvrz/hUtBzF5pTkKSFJ7d6aWcHaxznpmmBLVWDh2dhz0xzUkTJjzTINzHp3FFguW0MSxKu7MjHGMHH51YGE744+tUldSVPBHXPvT2YOQXJ49KmwGkpQkuxyAM01GEjgqpCDr/hVGOVATgbfrVnzMhFJIA64OKkC4GMnzn5R0AoMsioEBAPPPtVSOcPIY1wuMnNOYoT8r8+hpCuX45pEjJl9OlWwwUK6tkY6YrM3SkcsCfyoL3APmxuBjPGabiNSNLLOueRjpigtKAAcDPc9azFmm2AyNtPXil+0s7ZPI9T1rFwZamaTyH1Jphn2oQzADtjOaomf2zVd52CkL345FNRDnNV7t5VCD7q8VGyybCwbBHbpWSt2BkHLew4/Wqd3cyCIyqSoA45qlTbIcrF6TUbaGdYZZAXPb0+tJHdQTlpIZFfBxwa+U9f1/VLbWZNjHAYnB6HtXY/DjWb651GfzD+6Zec84IrojhtAcke/tMScjgZpgn35U9u9Z32jf8qnp1pvnhTgDI71m4jTNEyOwxt+UVF55Y5JwB2qOScbAEPzH+VVssSADUuIcxe88k4DcU0ygZLtkkVnOSvynrUYlUDBPPtRYdzT8/oO1HnY4b8qyncMvLYzUa4Ql2NPlFc0WYEk9aZ5w6Dp9KqiXd3oD9xVKI+YnMpBwORTTMOeMelVTNmmB8n1701ETLRkGOeah3cZphcHgmo5CQM1fILmJvNA7VHK27kVAX289aQuCKEhcxGwIGTUMnK4U1MwGM5qAncapESKhH9+s6eIMpKHFakwAyc1nFs1rFmDRkSxnBJ61QK+9bEo6msyVQeR2roi9DGRRd2UkKKznnfoRWhJJ5TDIyDWfOckkCtUZMrtL6Dk01ec7j1pDUbcHrTJbHPIwGBxSwTlWAbkCq5GTnNPXCjjoKLAmaCzPI3IwKspIEPFZYf0JFKJgDjNZyiWpG7HOp5PFWUuIz93G6sMMCMjNPWQR4IBzWDiaxmdB9saE4RuW68U5Lks4YnNYAuC3VeatxTLgHpUNHTCdjrILgdjWvbzspDAfWuVs3RyOea6u3uLWRlgiYRqoyWbvXHNanZCZzvxJ8KjxR4aeG2jDzAgnjJx9K+BfEekPot41tKcuGKkehHrX6WWt4iy5B46exr5i+Pnha1W2l1u0jIZSHcgZGBwa7MLUvoeVmGFv7yPko5pjHAp7KSAccVE3OQa9iB4dyMn2xTSadgmmmrsMZSHpS0nOeKAImyKbT260yrQuYKafWnUhGRSaHcaaSnEU3GKxYM//9D8pL+MS2rr3xXkdyvluy9817JgSJXl2u2jWtywxwf618/Tep+zZxTvG5kwydjW5Y3jQyda5xcjkVbgJ3DNbSs1qfPYeo0z1jS7kT4JNdZZRCeQKK8r0u5kQqic5r3TwtpsghWe5XDnpmvPnTSdj3VX906jTbEQIOOa6SKPAFV4IhWtFGMZpyl0OW7b1JI0xWhDH0NQxpkitKNcDPrUATRr29KtqtRxrVpFoE2PQVbQZ5qJB6VZXArSKZjJjlHPNTqKYo7mpQK0MhwHFPxSAU/FAABTgKKelAAoFSUUox3oHBijBHNOpPeloLHDHSlzSD1paAFooooAKa1O96Q0AMprHtTjTDQBGajJp5PrUR6ZqAuMYnrTC1BP5VGTmrGmITUdONMxUsVxD1ptLRxSHcBSU7BoxzQFxtNxT8elGKEIjx2oxT6K0uBCARxTsZ5qTGaMUJgREVGy+1WMCm7TTTEyrtppWreO1MKg1RBV2/lTdvpVkrimFaVgKrJnioWiq8VphXNF2BnGPFN2ZNXmTPSoylUmgK7RAc4qs6elXye1V2WnYDMkRlJIqIBicYrTZOeaaqDPHFIDNeNscHrVRsrlPWt5wBzWXdxnIbPSgCoiRn2p7Kijr+VNKge1RyxEH52GD6VcWQyjP5RBMjgVlZR2JVzxWq0cUjYwSfpUUlsQRtGCPWokK9jNMiD+En8KpTLHMSv3WPStzc6NgkY96ZLFDP1GTjrVQRPMZMMCIgVhyO+KkaJX6IPr0qwIniOe1G0PyOAK1E9TOkgGeQBj0NOIRVG1SD065q81vHIu3GT71G+n25Xk4Yd+aDNlEg46EAVAu7cA43Cr32Vl+7KSPqacrToCvl+Z74waACOOHGE604xrgHufWqc8mweY8bIfpxT7O5WV8ZXHueapMLFkQjGRUTIQckZxWg23ggjHb3qNstwozVCK5VXHzAc1mXGnAkvF+VbRhUgM/BqQRYXI4FK4HHgzWkme/vWpDfqIGDKNxJJPtWsyLIOgb681XOnQzEsV2k8cUrgVYLmJyNrcVri6RX2j0/Css6LJG7GAbiOhH9c1Mun3sa7nT5scgVEl0GmakUoPLHIFbFteRRgMQSvtXFM8uwxrx+PNXIrsx2y5B3Y+v61laxtGR3UNzG5JxkE5GfSidguO9clFqgSCMMBu55qwNWgbBc7cDvSuaKRrSOrNgnpQsu3IrAs9at596vGQy9Ce9SNqSkbkTB9TSHzG09yAMYHtTYmAYMRWMLlpsErwewqOQXLSDywQeuKpLQXOdM8odsL0HanoyI2CaxoPtEi/MuGNWoY5WJByCKzZVyzcyjA21JYeUZGRs5OCKaNPllaNl4HOc10en6E+7zXkx7YzWUplKFzOeJwV2AEntSxWl5dtGkUZd34wCK7+HSLdlWNl+pHXmuktdNtLQIFTc69+Af0rnlUOiFBdThLLwxqTyKlxCYxjqef5V3Oj+GbK0ljuJADMgIwe+7rXQQxhXBI/WpJI0DdPpXJOqzqhSiixHCkI2x4Qeg4pTcOFKkMcdSemKmEawhWZNm71pNu6QIFyvfnIrF6myaRNbvZNGfOL7hyMYx+tQzxkbcck8+2KjxHExAXcc5oubp5yiphfXA6YqUiubsTxyxwgeacE9hyal3iQ7kBQe/WoIhPJGURs7eCcetWY4doBY5x7c0mK9jRt5rZE3+T5snbJNXEYXKlSPLUdt3+NVLbyNpYMAR1yaWedFU85+lZuI1Is/wCjQY8wAgdatzX1i0QjteJCeuK5twHUM+Pb1qVIVYjcdgH4c0KJomjVb7RMQS5IHXjFWoGRD+8xgfrVCO5eMEN+8B9TTWd5SSflHoKiRakaE15FgeXw7HoBwKniud2VZT/SsiMkMTjP8q0RkqGLKhPqcUuQTkWRcFCd4Az0xUksqMFCsGzWTJmRd6MH9welW1WPZymCO5pSgg5zSgk/efN3HSlJEspKsVx0qCOWMMvzYYfkakaZDIWB5PHSsWguHngNkHdUiXDqNiR53c5FRY3YCn8hTWuGQkBckDHWnYakuhYMjMQWYgj8qd5pVNzSYx34qj9oiY7SGBPXPSqzmOX7wwooSBM1VnJOQSe4qrNOGYgKSe+aptIoAWIfd756VE0jk4zimDZK8y52kEk1XlJZsFuvBpoyjDGCTUTycnd19qqDtsZy1OG1bwrb31005UZzj8D71v6RbR6VCsFvAoU9WIw1abHJDYpWbC5bpW7qtkLcuCT+Ijin+aMc/KPWsppkfBjzikMjMeT0rJwOhSNhZgD1zTmmUqFHWsUSFiBjp1p5lwcUvZhzmsG3ctzmqRkCOQTnFVvtjfdzxUJkw2afLYV2XWm5JIzTDLx1qk0wxx1qDf6tVqFyXIZqUs8kSrbZLZOT3pmk6hNKht7ldpQ8E09pQPlXr701XUHIIJHpTcOwe10sbO7P3aj87a3y9aqLMeN3H0qIyKq9ck0cpHtC+ZHHK9aQzuT83NZhmYHrxThL75quUPaGgXJGTxTA5zkHis43LdAab9oNLkGpmmZBnGaaHGKyzcMBtFM88jgHFLkDmNJ2HJ9apy7M/LVTzWJ60NJgZJq0iGxs3K4FZUm3NaBkU9elUZTk/StIsxkZky55qk/GT1FaEwO3NZrvjgjmt4mMym3PTpUTCpzz7VXckCtFEybK7E54puRxnNKTjmmM+eKOUakOMvZeKFcZywqHKnpxTg2O9Q0UmXEuZAflX5fep1kDdazxJz1zTiT1HFS4FpmgJABTlc5zms1dxPrU6nGM1nyGymbMN28Z+U1r2107kKe9cuGOa07WbYc9aynTTN6dQ7yCbyipxx3qPxHokPiLQ7vTZcYnjPJ+lU4Lu2NrHE2fOY5LH09K1rO7Hm7CcgiuSK5WdcveifnFr2j3eg6pPpd8AJYicY6bc8Gufcc/WvqP43eB5klm8S2ygoPmbHUD0r5a3bhu9a9rDVLo+WxNLlkNbHFRtUp5GahPWu57HMJRRRWdgGYPPNNKnP1qWkIzTuBBil5qULik29adwI6TFS7RS7amVmNM/9H8q4iOlcn4rtmeJJh0Umumjk4qrrEX2jT5Ex8xAxXy/MfuGKjzQaPJVB6VaiQkipHtzE2DXSeGdKk1PUo7cJlTyT2xWs52R8rGm1Kx23gvw41xNHeXA+RCCBXv1nbhEHFY+ladFaxJHGMBa6qJAFrklK56EUTRL0rRjSq8S1oRgCktyizFH2q9GBVaMd6toK0USXMsKKsqKijX2q0qHNapGTdySMd6mUfNTQOwqZB+dVYhsetSgUwdKlCmgkUU+mgYp1ABUo9fWmgHNSD0ppCYvUUoo+lOGRQ0XGKFooopFC0UZpKAF4ozSUUALSE5pKaTQAE5ppNB6UzNS2A1j2qFz2pzHFQE0IBCewphOKU0ym2AlJ3paKgBuKXFLSgUwEop+KMU7AMopxFGPaiwDe9NI9qdzSHPSmhXDFGOaB0paYEXGcGjvUhFMHPbiqJY1h3ptSkZpCOcelFhEWO9IVzz3p+OaTp1ouBAVIpu2rB6Uz5SPpVAQ7fWotuTVk7e1Rkd6YFZlqIxEnFWSCTmlxjmkmBReOo2jwMmtBiD2poVcYYZqxMzHwe1Zd3Jgcitp4gM81myReYeASBUgZDO393OfSn+WrrtckfWtArtGHUjFQtKi5TII960USCq8ewAoeRUTKkhLO2M053GfvjHtUkWDwoznpVEMpraQyHG4k/WqVxYND+8gLA+/IrbaCRskgD+dVHglyd+QPXIosIwfPlUfOMj1FOWZuCiZU+4rSGlw7iXy31NZlxpYQ7oFK47g0xNkgLOd3enlT0YZqqIWAw5J+lVZzehh5IZh7HpQSXD8j4wUB7ngUFnR8BgM++aoySXLLtbLexORSwRF8YUAjtTTEXWa4I/cjd7Vlz2lxuLFNh6/LjFdBBbs3JGMU2WKRSeDirIuczG6Z2yqWI6HpWh9khmAeRMHtyR/KrEtjHIwfb831xU9taADG75vTNBSZVaGONQ3JI6dajMkudsas3sBWr9nvACYk3r6Y5rTtZYVTa0bRyDqHGCfoaQzlolnSQAowLe1dHa2+3FSTw+YVYfKAelXLZRGOeal6DQ6O0XGT1pJ4AImIzx6VpouSMDKnvSsuAc0ijjWtQOCOtVJbLAyABj0roJE+Zgw5NMWIOvai40cuLHzDhsnb0qGe1ONgbGfauiZGV9kajJpgtpVk3Tpx2oKuzmo7JkXr0q/hcAEcelb0djHKrblyvscVWOnTIHaNfMUdv4hUyWhV2RQhVAMZGKsxSkS4Tv2NVIg4fy8En0xyK0BCEAZkIPrWTYuU10eNsZwCe3pVyNE64rHgR5H47da6K0jllONv4+lTLY1jY0LRYmAjI+prq7CAyAbRlF6kdawra1yMs3HsK2Ybhrf93EMLjn/wDXXHUZ1ROotbfILQgtg88VPIWgcSMNuK561mZB5gJUeuTxUr3pyChD9+a55K5tGdjfXUuMooY/QjFEt400IR12vmspHmkkEgB2981c89FALAE9s1k6Zr7Q2ILo3S5uZBGq8dDVkvCP9RJuHrjFYcUjs3mMgVfRutXI5BITg/gKfsw50aI2yZXON1T29o6/JHjnkgnk1lGXyx854J9KmhnzMBGdzngZqXArmNVYwiGJDj1q0rLDEh3o2Ouev5VTa0v1jdtgJA6b1Gf1rPVrpB/pCDcTkZ9Kh0xqVzYEiSynzGCr7VLFcxIciJJSp/jBNZkckwbIAY+mOKvi+mSMpJHHuboQuDmp5Bpmob85G1UCnttGKjluI5iQoUFe4GKyIywOZOSfwqVcknYpOPShRHzFsSgfd6/SpTNcONjSHB7Vmea3QkjPSrlmN6YlPIPfjis3FFc5ZgZlyjMcdc1BMHnk2t931p08p2fKQfpT4ChCoAS2M81DHzCQweXwvAPp1NaS+ao4bIHXPNVy20Er19OlSrxEJM9evNS0HMSKd2Dt5HFP/fZ64UfnVYgmVQrE+w4FTu7A7dvX3qLFqVyQuUHBYfjihYsYMgBz2Bqk1wqS7JWyfT0pV2r89uTkdeadh7FvahJC/KBSs0QBUDGaq7rj7y4Oeuec01pFByOlTyktk7cLt9OahY7vkUY96jLEjJ4+lQtLn5RkAUWGTb0jI3dM1G8iu+F6etQ5B6/rTWkXoOTQhWFkZRUDNuUnOKN0o9gfams+T83FaxQPQj34O5RSCZ8FQBz3p4CNx0FNZRzgcGtLEtkDO4+6xB9qd5rbfmJOKru+KhMhz1oDmLokjHzNyaGl39Tx6VnmTPFIWGCB1NHKHOWWlANRGYE5PFUz8vfrUbNkYPSmiHIstcZztNIsu3vj3qhI2wcGqckpbqeK0jAm50S3O/ryRTTOB/nvXPrdbfumnrdBjycUnTYrmw8+enAphmyADWZ5wJxmm+Zg8HmhQC5ptKAfWomuxnb0rP8AO2nLdKqTTAncKrlQKRuPOMVXMxPU1jm4YEEtk0rXIYY/Wq5Q5zXWfHOaDc7hgmsL7QRyTTftYDdetLlFzm4ZhUfmA+9ZQuR1B4p/n55BoURORbnkDHGMCsyfYTz2pzTGq7EMOa3UTJshc45FVnckVJJk/hURFUZsqHg80zk05xzzTCewquUQ7co4prSE8DioWNAbtUWBSHg4qwpGOTiqtLvIFQacxd3ovQ80ebms/cacJccUDuaAkJPFX4bgKcHmsZZM96mRyG4qJI0jI621lQtkHpXQ2MheQY5A61w1vIVAYmt+xvpIVYJ/F1zXDXh1PQpVNLHQ+IdHh13SprFjgOMHPQ+xr8+PFmhr4f1+70yE5jib5eOxr9Era8SUYHBA6V88fGH4fxb38S2iFiV+dPb1xW2Dq20Zw5hRuro+TjxULdavTRMCSaosMc17MZHgX1sxtFFLiqaGJRS4NLioAbRT8UuKRPMMwaUL60/aadtp2Gnc/9L8moXJqxJ8yYPeqUXtV0ZK4B5r49XP3Ns4TUIStwdozXufgrQBp9kly/8ArZ1B+grkNK0RL/UIhIu5QcsPYV7TaIECoBgDAFbSva7PFrQSkatrFgAVsRryBVOADpWlEprnTBssxKKvIvIqvEucA1oIorSJm2PQYq7GMmq6gYqzGRmt4mbLqCrCiqyGrK8VqkIlWp1A71CoNTKCKd9CGTipBUAOKkzxSTFckBHQ0fSmqM04jFK4rkgHGafkGmAEe1PA9KExoUU+mAGnDii5dhaKKO1BiFFFFAJhSE4paYeTSbLUgyaSgg0Y9KzlIrmI81GWp+BUJGDipQcwxjk1ETmntxURquYEwJplFFJSKCilA5pQKpIAwadSinYqkgGYpcU7GaBTFcbjjikqQ5zTcH60C5hmPSjFOwacMnp0pxJIwOxpCM1Lg4waZVDuR4pMVLSYpiGUmOc1JijbQBE3amEVOVphWoYEBqm7FelX2FVJUOaaegGe08oP3aaJ5T/DU5Vs4AJprIynmmmIRJ9xw3FSnpkc1BIHAyBkU22l8zKZ6VaAkORnPQ1IhG3BoZcdOaapz1FAPUjeMA7utARR2q+NrLxUDxNnnihiTM6fI6LgH8az2gmlOwYC/TNdCFjHBHPrSuAetWmxMwBo0SoGk+Ymq8mmKx2oSM9CD0rpf4cCqflTb969KpMgx1gkiXbvbI7sM5prtIuQQGz1AFazJcKxJOQT3qGVSRmTgn0phYwQ4RtrggfSmSOnJAzn1q88S9Qpb6mqkySPwqbfqai7BxM026Op3u2T/d6CgWUC/dfBPtU/kyKpJjP1WocGIZZZB7kcUcxnykEtkyDcMYqkEwxzuBFX/tmTsxz7mo5pJQu4ofwpKYmh8E5XhjtP51oCdMZY/lWIw3kFetWFjlP3h8taKRNguPK/5ZHJzVyw2KwLKOafZ+RHztAJ7mti1hhkVipyQe1VqMhZscIpx7A1BKhkXEqFl963RGuNvSpBb8feOKoZyAZEfy3bAHQGtNWjkj+XqPStK4tBKihgGGe4qglk8cjJCuAOuDxUsqKLMb7QODipHdwMquSaijikB6kflVwhSvDZ/AVIzMaNlyzDGagMaLnJAzWyIhIMjiqs1smeWzikzREEcEQwQMH1q35MUigOAcdKRAq8LUuM8UIbM+CHy8hjgE1aCMCWXnJzxUqQlsgjinBGTg549KYjOmsoLt/MYHeP4geaiW2mH7uX5vStpImb7vANSCxLg4bk1MkBn29kHcBO5xW+LGdCEUA49xUaWghGAc+pqeO1DZZXCt25rBlplxQ8ce1jjAxxUkMypLuBJ4xWcTImd3QcZp1sB5m+RvlP91c/1rCceptGXQ3YzuyVPXtVtLkH5WiVvfFVIUkRd4VgG74x+ValnYT3YASSFMdBJIE/PNZ8ppcWKVs5B2gVpJMu8MyI20ZHHeshxNa3DW77JGzgbG3D8DTBLKWxImw5NJwTKUjqLbUJ5QYiIsDoCgzVr5ym4RquO44rANir2yPFPCJSeVaTB/LFOVLlITGJVcAZIDZrJxNIyNYSKfvE7fz/AJ1InlsDkbSaxPP2hUc7fap0ugM8/L71m4jUkdEPs6jhlZsd+TULS9h+dUvNDRqY1C57461MGRArN8/qM4rNxLTJlnVX4YoSKuxIsrK5l2e5GTmqEcttLLjZswM+ufarZmt8GIKzSjp2A96llouP8h27gxHcUQySpKxV9obj2IqqEIOcg5700yKzqn3R+dTcaZdEZZtynIHpUiXARSrxbs9Mk5/SkUoigbwaimn2puZcAfdyKiQI0lkAG4qFU/jipgzcMF69DWVZzO6fvkKA9CR1FXdrO42sR+tYtFouCZZGKKoDKPSntkRYPXI9qqwRlCySA4PTtmlVTj75OPU5qbDJ2w45HAx3ppMgxtFRqnkEuxz7E1OtwroSq5YduuapJA2MG0jJHJqRXIXA59OaiZnlyMbfrTkHI7+9PlDmGnf/ABZ/GkklGB8vTtSSMMlRk+9RYXGdxGTSa7CuKJSwGDtp5+VdzDPbNQPKitsg4HrRJd3MiiJ3JA6VHKx3HP5Zxg7faolkaPLdahMmCccnvVSWV2PB4qlAHIuG6aU4CAAUwsCuR1qiXOMdakQkcVdhcw/c6jDHAqN3fp2qUlfXmonAI6Uw5iE4A4qL73JqUkVWdsE+9AmxskqgjZyaYJCKY1QlsUCZOWJ5JzVWV2AzSNKAOtVnlDDmmmJjDOQduMiq8zgjjrTWI9ajY4HNbwJbKxmcHjjFIZG6mq8zlTleahM+eOldSRg5svJdgHB4IqY3GeQaxXcDkU0TEDio5Lgpm75wbqajeQEcVj+cw61Zjl3Dk8U7WByBp9rECmGZMZB+tR3HXK9KzWfBppE3LjXOTxmk+0n1rMdsHI61D5pxiq9mLmaNoXDdc1aS53cZrmPPIOM1It0y8il7IPaHUmX8aY0y/wANYsV27ryeatJJu7UcgXLbSck1E0oA461GzcVXZuadhkjNu61ExAFJk1G7UyZMCSelBOKjGT0qQZ71DITHdqbk04Y7UxyB1pWKTEyM4phNR7+eBS7qRrEduYHNaMEiEZbrWO7GhGIYVk2WmbyynI54rYtrhQAO9c0rYwa0YJDxWFSJvTkegaVKuN55I4q/4o019Z0GdUYDajHnoeK46yu3hfcD+BrtrXUA8YjYcEZPpzXHCajLU7JrmifnxqemzW8ssRTOxmB9ua5WVdrGvqDxt4YSLXbqS3UKkilsAY5xXzNOjAkMMEEj8RXvYaSaufMYmk4yKeBRgU/YcUbDzXWc/MMop+3FLispK7J5hoWn4oHXmpgvpRYW4wJ61Iq9hT1Unk9Kl246CmP0P//Z \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/src/lib.rs b/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/src/lib.rs new file mode 100644 index 00000000..2c63d72a --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/skeleton-app/src/lib.rs @@ -0,0 +1,163 @@ +// HYPERWARE SKELETON APP +// This is a minimal, well-commented skeleton app for the Hyperware platform +// using the Hyperapp framework (macro-driven approach). + +// CRITICAL IMPORTS - DO NOT MODIFY THESE +// The hyperprocess_macro provides everything you need including: +// - Async/await support (custom runtime) +// - Automatic WIT (WebAssembly Interface Types) generation +// - State persistence +// - HTTP/WebSocket bindings +use hyperprocess_macro::hyperprocess; + +// HYPERWARE PROCESS LIB IMPORTS +// These are provided by the hyperprocess_macro, DO NOT add hyperware_process_lib to Cargo.toml +use hyperware_process_lib::{homepage::add_to_homepage, our, println}; + +// Standard imports for serialization +use serde::{Deserialize, Serialize}; + +// STEP 1: DEFINE YOUR APP STATE +// This struct holds all persistent data for your app +// It MUST derive Default, Serialize, and Deserialize +// Add PartialEq if you use this type in WIT interfaces +#[derive(Default, Serialize, Deserialize)] +pub struct AppState { + // Example fields - replace with your app's data + counter: u32, + messages: Vec, +} + +// STEP 2: IMPLEMENT YOUR APP LOGIC +// The #[hyperprocess] attribute goes HERE, before the impl block +#[hyperprocess( + name = "Skeleton App", + ui = Some(hyperware_process_lib::http::server::HttpBindingConfig::default()), + endpoints = vec![ + hyperware_process_lib::hyperapp::Binding::Http { + path: "/api", + config: hyperware_process_lib::http::server::HttpBindingConfig::new(false, false, false, None), + }, + ], + save_config = hyperware_process_lib::hyperapp::SaveOptions::EveryMessage, + wit_world = "skeleton-app-dot-os-v0" +)] +impl AppState { + // INITIALIZATION FUNCTION + // Runs once when your process starts + // Use this to: + // - Register with the homepage + // - Set up initial state + // - Connect to other system processes + #[init] + async fn initialize(&mut self) { + // Add your app to the Hyperware homepage + // Parameters: name, icon (emoji), path, widget + add_to_homepage("Skeleton App", Some("🦴"), Some("/"), None); + + // Initialize your app state + self.counter = 0; + self.messages.push("App initialized!".to_string()); + + // Get our node identity (useful for P2P apps) + let our_node = our().node.clone(); + println!("Skeleton app initialized on node: {}", our_node); + } + + // HTTP ENDPOINT EXAMPLE + // CRITICAL: ALL HTTP endpoints MUST accept _request_body parameter + // even if they don't use it. This is a framework requirement. + #[http] + async fn get_status(&self, _request_body: String) -> String { + // Return current app status as JSON + serde_json::json!({ + "counter": self.counter, + "message_count": self.messages.len(), + "node": our().node + }).to_string() + } + + // HTTP ENDPOINT WITH PARAMETERS + // Frontend sends parameters as either: + // - Single value: { "MethodName": value } + // - Multiple values as tuple: { "MethodName": [val1, val2] } + #[http] + async fn increment_counter(&mut self, request_body: String) -> Result { + // Parse the increment amount from request + let amount: u32 = match serde_json::from_str(&request_body) { + Ok(val) => val, + Err(_) => 1, // Default increment + }; + + self.counter += amount; + self.messages.push(format!("Counter incremented by {}", amount)); + + Ok(self.counter) + } + + // HTTP ENDPOINT RETURNING COMPLEX DATA + // For complex types, return as JSON string to avoid WIT limitations + #[http] + async fn get_messages(&self, _request_body: String) -> String { + serde_json::to_string(&self.messages).unwrap_or_else(|_| "[]".to_string()) + } + +} + + +// WIT TYPE COMPATIBILITY NOTES: +// The hyperprocess macro generates WebAssembly Interface Types from your code. +// Supported types: +// ✅ Primitives: bool, u8-u64, i8-i64, f32, f64, String +// ✅ Vec where T is supported +// ✅ Option where T is supported +// ✅ Simple structs with public fields +// ❌ HashMap - use Vec<(K,V)> instead +// ❌ Fixed arrays [T; N] - use Vec +// ❌ Complex enums with data +// +// Workaround: Return complex data as JSON strings + +// COMMON PATTERNS: + +// 1. STATE MANAGEMENT +// Your AppState is automatically persisted based on save_config +// Access current state with &self (read) or &mut self (write) + +// 2. ERROR HANDLING +// Return Result for fallible operations +// The String error will be sent to the frontend + +// 3. FRONTEND COMMUNICATION +// Frontend calls HTTP endpoints via POST to /api +// Body format: { "MethodName": parameters } + +// 4. P2P PATTERNS +// - See the P2P patterns guide for implementing P2P features +// - Use #[remote] for methods other nodes can call +// - Use Request API for calling other nodes +// - Always set timeouts for remote calls + +// 5. SYSTEM INTEGRATION +// Common system processes you might interact with: +// - "vfs:distro:sys" - Virtual file system +// - "http-server:distro:sys" - HTTP server (automatic with macro) +// - "timer:distro:sys" - Timers and scheduling +// - "kv:distro:sys" - Key-value storage + +// DEVELOPMENT WORKFLOW: +// 1. Define your AppState structure +// 2. Add HTTP endpoints for UI interaction +// 3. Add remote endpoints for P2P features +// 4. Build with: kit b --hyperapp +// 5. Start with: kit s +// 6. Access at: http://localhost:8080 + +// DEBUGGING TIPS: +// - Use println! for backend logs (appears in terminal) +// - Check browser console for frontend errors +// - Common issues: +// * Missing _request_body parameter +// * Wrong parameter format (object vs tuple) +// * ProcessId parsing errors +// * Missing /our.js in HTML diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/index.html b/src/new/templates/ui/hyperapp-skeleton/ui/index.html new file mode 100644 index 00000000..61a0b456 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + + Skeleton App - Hyperware + + +
+ + + \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/package-lock.json b/src/new/templates/ui/hyperapp-skeleton/ui/package-lock.json new file mode 100644 index 00000000..d6458a90 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/package-lock.json @@ -0,0 +1,3674 @@ +{ + "name": "skeleton-app-ui", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "skeleton-app-ui", + "version": "0.1.0", + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1", + "zustand": "^4.5.5" + }, + "devDependencies": { + "@types/react": "^18.3.12", + "@types/react-dom": "^18.3.1", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", + "@vitejs/plugin-react": "^4.2.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.57.1", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.14", + "typescript": "^5.6.3", + "vite": "^5.4.11" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.4", + "@babel/types": "^7.28.4", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.28.3", + "@babel/types": "^7.28.2", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.9", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.9.tgz", + "integrity": "sha512-e9MeMtVWo186sgvFFJOPGy7/d2j2mZhLJIdVW0C/xDluuOvymEATqz6zKsP0ZmXGzQtqlyjz5sC1sYQUoJG98w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", + "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", + "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", + "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", + "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", + "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", + "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", + "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", + "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", + "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", + "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", + "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", + "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", + "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", + "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", + "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", + "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", + "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", + "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", + "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", + "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@swc/core": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.29.tgz", + "integrity": "sha512-g4mThMIpWbNhV8G2rWp5a5/Igv8/2UFRJx2yImrLGMgrDDYZIopqZ/z0jZxDgqNA1QDx93rpwNF7jGsxVWcMlA==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.21" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.11.29", + "@swc/core-darwin-x64": "1.11.29", + "@swc/core-linux-arm-gnueabihf": "1.11.29", + "@swc/core-linux-arm64-gnu": "1.11.29", + "@swc/core-linux-arm64-musl": "1.11.29", + "@swc/core-linux-x64-gnu": "1.11.29", + "@swc/core-linux-x64-musl": "1.11.29", + "@swc/core-win32-arm64-msvc": "1.11.29", + "@swc/core-win32-ia32-msvc": "1.11.29", + "@swc/core-win32-x64-msvc": "1.11.29" + }, + "peerDependencies": { + "@swc/helpers": ">=0.5.17" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.29.tgz", + "integrity": "sha512-whsCX7URzbuS5aET58c75Dloby3Gtj/ITk2vc4WW6pSDQKSPDuONsIcZ7B2ng8oz0K6ttbi4p3H/PNPQLJ4maQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.29.tgz", + "integrity": "sha512-S3eTo/KYFk+76cWJRgX30hylN5XkSmjYtCBnM4jPLYn7L6zWYEPajsFLmruQEiTEDUg0gBEWLMNyUeghtswouw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.29.tgz", + "integrity": "sha512-o9gdshbzkUMG6azldHdmKklcfrcMx+a23d/2qHQHPDLUPAN+Trd+sDQUYArK5Fcm7TlpG4sczz95ghN0DMkM7g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.29.tgz", + "integrity": "sha512-sLoaciOgUKQF1KX9T6hPGzvhOQaJn+3DHy4LOHeXhQqvBgr+7QcZ+hl4uixPKTzxk6hy6Hb0QOvQEdBAAR1gXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.29.tgz", + "integrity": "sha512-PwjB10BC0N+Ce7RU/L23eYch6lXFHz7r3NFavIcwDNa/AAqywfxyxh13OeRy+P0cg7NDpWEETWspXeI4Ek8otw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.29.tgz", + "integrity": "sha512-i62vBVoPaVe9A3mc6gJG07n0/e7FVeAvdD9uzZTtGLiuIfVfIBta8EMquzvf+POLycSk79Z6lRhGPZPJPYiQaA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.29.tgz", + "integrity": "sha512-YER0XU1xqFdK0hKkfSVX1YIyCvMDI7K07GIpefPvcfyNGs38AXKhb2byySDjbVxkdl4dycaxxhRyhQ2gKSlsFQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.29.tgz", + "integrity": "sha512-po+WHw+k9g6FAg5IJ+sMwtA/fIUL3zPQ4m/uJgONBATCVnDDkyW6dBA49uHNVtSEvjvhuD8DVWdFP847YTcITw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.29.tgz", + "integrity": "sha512-h+NjOrbqdRBYr5ItmStmQt6x3tnhqgwbj9YxdGPepbTDamFv7vFnhZR0YfB3jz3UKJ8H3uGJ65Zw1VsC+xpFkg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.11.29", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.29.tgz", + "integrity": "sha512-Q8cs2BDV9wqDvqobkXOYdC+pLUSEpX/KvI0Dgfun1F+LzuLotRFuDhrvkU9ETJA6OnD2+Fn/ieHgloiKA/Mn/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/types": { + "version": "0.1.21", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.21.tgz", + "integrity": "sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.23", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.23.tgz", + "integrity": "sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/@vitejs/plugin-react-swc": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.10.0.tgz", + "integrity": "sha512-ZmkdHw3wo/o/Rk05YsXZs/DJAfY2CdQ5DUAjoWji+PEr+hYADdGMCGgEAILbiKj+CjspBTuTACBcWDrmC8AUfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-beta.9", + "@swc/core": "^1.11.22" + }, + "peerDependencies": { + "vite": "^4 || ^5 || ^6" + } + }, + "node_modules/@vitejs/plugin-react/node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.15", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.15.tgz", + "integrity": "sha512-qsJ8/X+UypqxHXN75M7dF88jNK37dLBRW7LeUzCPz+TNs37G8cfWy9nWzS+LS//g600zrt2le9KuXt0rWfDz5Q==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.26.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.3.tgz", + "integrity": "sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.8.9", + "caniuse-lite": "^1.0.30001746", + "electron-to-chromium": "^1.5.227", + "node-releases": "^2.0.21", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001749", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001749.tgz", + "integrity": "sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.234", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.234.tgz", + "integrity": "sha512-RXfEp2x+VRYn8jbKfQlRImzoJU01kyDvVPBmG39eU2iuRVhuS6vQNocB8J0/8GrIMLnPzgz4eW6WiRnJkTuNWg==", + "dev": true, + "license": "ISC" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=8.40" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.23", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", + "integrity": "sha512-cCmFDMSm26S6tQSDpBCg/NR8NENrVPhAJSf+XbxBG4rPFaaonlEoE9wHQmun+cls499TQGSb7ZyPBRlzgKfpeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.4", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", + "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.41.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", + "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.7" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.41.1", + "@rollup/rollup-android-arm64": "4.41.1", + "@rollup/rollup-darwin-arm64": "4.41.1", + "@rollup/rollup-darwin-x64": "4.41.1", + "@rollup/rollup-freebsd-arm64": "4.41.1", + "@rollup/rollup-freebsd-x64": "4.41.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", + "@rollup/rollup-linux-arm-musleabihf": "4.41.1", + "@rollup/rollup-linux-arm64-gnu": "4.41.1", + "@rollup/rollup-linux-arm64-musl": "4.41.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-gnu": "4.41.1", + "@rollup/rollup-linux-riscv64-musl": "4.41.1", + "@rollup/rollup-linux-s390x-gnu": "4.41.1", + "@rollup/rollup-linux-x64-gnu": "4.41.1", + "@rollup/rollup-linux-x64-musl": "4.41.1", + "@rollup/rollup-win32-arm64-msvc": "4.41.1", + "@rollup/rollup-win32-ia32-msvc": "4.41.1", + "@rollup/rollup-win32-x64-msvc": "4.41.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vite": { + "version": "5.4.19", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", + "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/package.json b/src/new/templates/ui/hyperapp-skeleton/ui/package.json new file mode 100644 index 00000000..abc8ff41 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/package.json @@ -0,0 +1,31 @@ +{ + "name": "skeleton-app-ui", + "private": true, + "version": "0.1.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "build:copy": "npm run build && rm -rf ../pkg/ui && cp -r dist ../pkg/ui", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1", + "zustand": "^4.5.5" + }, + "devDependencies": { + "@types/react": "^18.3.12", + "@types/react-dom": "^18.3.1", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", + "@vitejs/plugin-react": "^4.2.0", + "@vitejs/plugin-react-swc": "^3.5.0", + "eslint": "^8.57.1", + "eslint-plugin-react-hooks": "^4.6.2", + "eslint-plugin-react-refresh": "^0.4.14", + "typescript": "^5.6.3", + "vite": "^5.4.11" + } +} diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/App.css b/src/new/templates/ui/hyperapp-skeleton/ui/src/App.css new file mode 100644 index 00000000..a31ef746 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/App.css @@ -0,0 +1,154 @@ +/* Styles specific to the App component */ + +.app { + text-align: center; +} + +.app-header { + margin-bottom: 3rem; +} + +.app-title { + margin-bottom: 0.5rem; +} + +.node-info { + color: var(--text-secondary); + font-size: 0.9em; + margin-bottom: 2rem; +} + +.node-id { + color: var(--primary-color); + font-weight: 600; +} + +.not-connected { + color: var(--error-color); +} + +/* Main content sections */ +.section { + margin: 2rem 0; + padding: 2rem; + background-color: var(--surface); + border-radius: 8px; + border: 1px solid var(--border-color); +} + +.section-title { + font-size: 1.5em; + margin-bottom: 1rem; + color: var(--text-primary); +} + +/* Counter section */ +.counter-section { + display: flex; + align-items: center; + justify-content: center; + gap: 1rem; + margin: 1rem 0; +} + +.counter-display { + font-size: 2em; + font-weight: bold; + color: var(--primary-color); + min-width: 3em; +} + +.button-group { + display: flex; + gap: 0.5rem; +} + +/* Messages section */ +.messages-list { + max-height: 300px; + overflow-y: auto; + text-align: left; + padding: 1rem; + background-color: var(--background); + border-radius: 4px; + margin: 1rem 0; +} + +.message-item { + padding: 0.5rem; + margin: 0.25rem 0; + background-color: var(--surface); + border-radius: 4px; + font-size: 0.9em; +} + +.no-messages { + text-align: center; + color: var(--text-secondary); + font-style: italic; +} + +/* P2P section */ +.p2p-form { + display: flex; + flex-direction: column; + gap: 1rem; + max-width: 500px; + margin: 0 auto; +} + +.form-group { + display: flex; + flex-direction: column; + gap: 0.5rem; + text-align: left; +} + +.form-group label { + font-weight: 500; + color: var(--text-secondary); +} + +.send-button { + background-color: var(--primary-color); + color: white; + margin-top: 1rem; +} + +.send-button:hover { + background-color: var(--primary-hover); +} + +/* Loading and error states */ +.spinner { + display: inline-block; + width: 20px; + height: 20px; + border: 3px solid var(--border-color); + border-radius: 50%; + border-top-color: var(--primary-color); + animation: spin 1s ease-in-out infinite; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +.error-message { + margin-top: 1rem; +} + +/* Responsive design */ +@media (max-width: 768px) { + #root { + padding: 1rem; + } + + .section { + padding: 1rem; + } + + .counter-section { + flex-direction: column; + } +} \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/App.tsx b/src/new/templates/ui/hyperapp-skeleton/ui/src/App.tsx new file mode 100644 index 00000000..8a3aac9a --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/App.tsx @@ -0,0 +1,149 @@ +// Main App component for Skeleton App +import { useEffect } from 'react'; +import './App.css'; +import { useSkeletonStore } from './store/skeleton'; + +function App() { + // Store state and actions + const { + nodeId, + isConnected, + counter, + messages, + isLoading, + error, + initialize, + fetchStatus, + incrementCounter, + clearError, + } = useSkeletonStore(); + + + // Initialize on mount + useEffect(() => { + initialize(); + }, [initialize]); + + // Auto-refresh status every 30 seconds if connected + useEffect(() => { + if (!isConnected) return; + + const interval = setInterval(() => { + fetchStatus(); + }, 30000); + + return () => clearInterval(interval); + }, [isConnected, fetchStatus]); + + + return ( +
+ {/* Header */} +
+

🦴 Skeleton App

+
+ {isConnected ? ( + <> + Connected as {nodeId} + + ) : ( + Not connected to Hyperware + )} +
+
+ + {/* Error display */} + {error && ( +
+ {error} + +
+ )} + + {/* Main content */} + {isConnected && ( + <> + {/* Counter Section */} +
+

Counter Demo

+

This demonstrates basic state management and HTTP endpoints.

+ +
+
{counter}
+
+ + + +
+
+
+ + {/* Messages Section */} +
+

Messages

+

Messages received by this node:

+ +
+ {messages.length > 0 ? ( + messages.map((msg, index) => ( +
+ {msg} +
+ )) + ) : ( +
No messages yet
+ )} +
+ + +
+ + + {/* Instructions */} +
+

How to Use This Skeleton

+
+

This skeleton app demonstrates:

+
    +
  • Basic state management with a counter
  • +
  • HTTP communication between frontend and backend
  • +
  • Error handling and loading states
  • +
  • Persistent state across app restarts
  • +
+ +

To customize this app:

+
    +
  1. Modify AppState in lib.rs
  2. +
  3. Add new HTTP endpoints with #[http]
  4. +
  5. Update the UI components and API calls
  6. +
  7. Build with kit b --hyperapp
  8. +
  9. Test with kit s
  10. +
+
+
+ + )} +
+ ); +} + +export default App; \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/index.css b/src/new/templates/ui/hyperapp-skeleton/ui/src/index.css new file mode 100644 index 00000000..71b2fd6f --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/index.css @@ -0,0 +1,131 @@ +/* Root CSS for Skeleton App */ + +:root { + /* Color scheme - customize these for your app */ + --primary-color: #646cff; + --primary-hover: #535bf2; + --background: #242424; + --surface: #1a1a1a; + --text-primary: rgba(255, 255, 255, 0.87); + --text-secondary: rgba(255, 255, 255, 0.6); + --border-color: rgba(255, 255, 255, 0.1); + --error-color: #ff6b6b; + --success-color: #51cf66; + + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: dark; + color: var(--text-primary); + background-color: var(--background); + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +#root { + max-width: 1280px; + width: 100%; + margin: 0 auto; + padding: 2rem; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: var(--surface); + cursor: pointer; + transition: border-color 0.25s; +} + +button:hover { + border-color: var(--primary-color); +} + +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +button:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +input, textarea { + padding: 0.6em; + font-size: 1em; + border-radius: 4px; + border: 1px solid var(--border-color); + background-color: var(--surface); + color: var(--text-primary); + font-family: inherit; +} + +input:focus, textarea:focus { + outline: none; + border-color: var(--primary-color); +} + +/* Utility classes */ +.error { + color: var(--error-color); + padding: 1em; + border-radius: 4px; + background-color: rgba(255, 107, 107, 0.1); + border: 1px solid var(--error-color); +} + +.success { + color: var(--success-color); + padding: 1em; + border-radius: 4px; + background-color: rgba(81, 207, 102, 0.1); + border: 1px solid var(--success-color); +} + +.loading { + opacity: 0.6; + pointer-events: none; +} + +/* Light mode support */ +@media (prefers-color-scheme: light) { + :root { + --background: #ffffff; + --surface: #f5f5f5; + --text-primary: #213547; + --text-secondary: #646464; + --border-color: rgba(0, 0, 0, 0.1); + color: var(--text-primary); + background-color: var(--background); + } + + button { + background-color: #f9f9f9; + } +} \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/main.tsx b/src/new/templates/ui/hyperapp-skeleton/ui/src/main.tsx new file mode 100644 index 00000000..a3ad16d4 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/main.tsx @@ -0,0 +1,12 @@ +// Entry point for the React application +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +// Create root and render the app +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/store/skeleton.ts b/src/new/templates/ui/hyperapp-skeleton/ui/src/store/skeleton.ts new file mode 100644 index 00000000..5c2dd18b --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/store/skeleton.ts @@ -0,0 +1,101 @@ +// Zustand store for Skeleton App state management +import { create } from 'zustand'; +import type { SkeletonState } from '../types/skeleton'; +import { getNodeId } from '../types/global'; +import * as api from '../utils/api'; + +interface SkeletonStore extends SkeletonState { + // Actions + initialize: () => void; + fetchStatus: () => Promise; + incrementCounter: (amount?: number) => Promise; + fetchMessages: () => Promise; + setError: (error: string | null) => void; + clearError: () => void; +} + +// Create the Zustand store +export const useSkeletonStore = create((set, get) => ({ + // Initial state + nodeId: null, + isConnected: false, + counter: 0, + messages: [], + isLoading: false, + error: null, + + // Initialize the store and check connection + initialize: () => { + const nodeId = getNodeId(); + set({ + nodeId, + isConnected: nodeId !== null, + }); + + // Fetch initial status if connected + if (nodeId) { + get().fetchStatus(); + } + }, + + // Fetch current status from backend + fetchStatus: async () => { + set({ isLoading: true, error: null }); + try { + const status = await api.getStatus(); + set({ + counter: status.counter, + isLoading: false, + }); + + // Also fetch messages + await get().fetchMessages(); + } catch (error) { + set({ + error: api.getErrorMessage(error), + isLoading: false, + }); + } + }, + + // Increment the counter + incrementCounter: async (amount = 1) => { + set({ isLoading: true, error: null }); + try { + const newCounter = await api.incrementCounter(amount); + set({ + counter: newCounter, + isLoading: false, + }); + } catch (error) { + set({ + error: api.getErrorMessage(error), + isLoading: false, + }); + } + }, + + // Fetch all messages + fetchMessages: async () => { + try { + const messages = await api.getMessages(); + set({ messages }); + } catch (error) { + console.error('Failed to fetch messages:', error); + // Don't set error state for this, as it's a secondary operation + } + }, + + + // Error management + setError: (error) => set({ error }), + clearError: () => set({ error: null }), +})); + +// Selector hooks for common use cases +export const useNodeId = () => useSkeletonStore((state) => state.nodeId); +export const useIsConnected = () => useSkeletonStore((state) => state.isConnected); +export const useCounter = () => useSkeletonStore((state) => state.counter); +export const useMessages = () => useSkeletonStore((state) => state.messages); +export const useIsLoading = () => useSkeletonStore((state) => state.isLoading); +export const useError = () => useSkeletonStore((state) => state.error); \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/types/global.ts b/src/new/templates/ui/hyperapp-skeleton/ui/src/types/global.ts new file mode 100644 index 00000000..f4b35ac5 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/types/global.ts @@ -0,0 +1,32 @@ +// Global type definitions for Hyperware environment + +// The window.our object is provided by the /our.js script +// It contains the node and process identity +declare global { + interface Window { + our?: { + node: string; // e.g., "alice.os" + process: string; // e.g., "skeleton-app:skeleton-app:skeleton.os" + }; + } +} + +// Base URL for API calls +// In production, this is empty (same origin) +// In development, you might proxy to your local node +export const BASE_URL = ''; + +// Helper to check if we're in a Hyperware environment +export const isHyperwareEnvironment = (): boolean => { + return typeof window !== 'undefined' && window.our !== undefined; +}; + +// Get the current node identity +export const getNodeId = (): string | null => { + return window.our?.node || null; +}; + +// Get the current process identity +export const getProcessId = (): string | null => { + return window.our?.process || null; +}; \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/types/skeleton.ts b/src/new/templates/ui/hyperapp-skeleton/ui/src/types/skeleton.ts new file mode 100644 index 00000000..0e20d421 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/types/skeleton.ts @@ -0,0 +1,41 @@ +// Type definitions for the Skeleton App +// These should match the types defined in your Rust backend + +// API Response types +export interface StatusResponse { + counter: number; + message_count: number; + node: string; +} + + +// Method names must match the Rust function names exactly +export type ApiMethods = + | 'GetStatus' + | 'IncrementCounter' + | 'GetMessages'; + +// Type-safe API call wrapper +export interface ApiCall { + [method: string]: T; +} + +// Example of how to structure API calls: +// For no parameters: { "GetStatus": "" } +// For single parameter: { "IncrementCounter": 5 } +// For multiple parameters: { "MethodName": [param1, param2] } + +// Store state interface +export interface SkeletonState { + // Connection state + nodeId: string | null; + isConnected: boolean; + + // App data (mirrors backend state) + counter: number; + messages: string[]; + + // UI state + isLoading: boolean; + error: string | null; +} \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/utils/api.ts b/src/new/templates/ui/hyperapp-skeleton/ui/src/utils/api.ts new file mode 100644 index 00000000..e291d6ea --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/utils/api.ts @@ -0,0 +1,90 @@ +// API utilities for communicating with the Hyperware backend + +import { BASE_URL } from '../types/global'; +import type { ApiCall } from '../types/skeleton'; + +// Generic API call function +// All HTTP endpoints in Hyperware use POST to /api +export async function makeApiCall( + call: ApiCall +): Promise { + const basePath = + BASE_URL || + (typeof window !== 'undefined' + ? (() => { + const [firstSegment] = window.location.pathname.split('/').filter(Boolean); + return firstSegment ? `/${firstSegment}` : ''; + })() + : ''); + + try { + const response = await fetch(`${basePath}/api`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(call), + }); + + if (!response.ok) { + const errorText = await response.text(); + throw new Error(`API call failed: ${response.status} - ${errorText}`); + } + + const result = await response.json(); + if (result && typeof result === 'object') { + if ('Ok' in result) { + return (result as { Ok: TResponse }).Ok; + } + if ('Err' in result) { + throw new Error(`API returned an error: ${(result as { Err: unknown }).Err}`); + } + } + return result as TResponse; + } catch (error) { + console.error('API call error:', error); + throw error; + } +} + +// Convenience functions for specific API calls + +export async function getStatus() { + // For methods with no parameters, pass empty string + const response = await makeApiCall({ + GetStatus: "", + }); + + // Response is a JSON string payload + return JSON.parse(response) as { counter: number; message_count: number; node: string }; +} + +export async function incrementCounter(amount: number = 1) { + // Backend expects the request body as a JSON string (per generated WIT signature) + return makeApiCall({ + IncrementCounter: JSON.stringify(amount), + }); +} + +export async function getMessages() { + // This returns a JSON string that we need to parse + const response = await makeApiCall({ + GetMessages: "", + }); + + // Parse the JSON string response + return JSON.parse(response) as string[]; +} + + +// Error handling utilities +export function isApiError(error: unknown): error is Error { + return error instanceof Error; +} + +export function getErrorMessage(error: unknown): string { + if (isApiError(error)) { + return error.message; + } + return 'An unknown error occurred'; +} diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/src/vite-env.d.ts b/src/new/templates/ui/hyperapp-skeleton/ui/src/vite-env.d.ts new file mode 100644 index 00000000..151aa685 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/src/vite-env.d.ts @@ -0,0 +1 @@ +/// \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/tsconfig.json b/src/new/templates/ui/hyperapp-skeleton/ui/tsconfig.json new file mode 100644 index 00000000..7a7611e4 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/tsconfig.node.json b/src/new/templates/ui/hyperapp-skeleton/ui/tsconfig.node.json new file mode 100644 index 00000000..4eb43d05 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "strict": true + }, + "include": ["vite.config.ts"] +} \ No newline at end of file diff --git a/src/new/templates/ui/hyperapp-skeleton/ui/vite.config.ts b/src/new/templates/ui/hyperapp-skeleton/ui/vite.config.ts new file mode 100644 index 00000000..3683e564 --- /dev/null +++ b/src/new/templates/ui/hyperapp-skeleton/ui/vite.config.ts @@ -0,0 +1,67 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +/* +If you are developing a UI outside of a Hyperware project, +comment out the following 2 lines: +*/ +import manifest from '../pkg/manifest.json' +import metadata from '../metadata.json' + +/* +IMPORTANT: +This must match the process name from pkg/manifest.json + pkg/metadata.json +The format is "/" + "process_name:package_name:publisher_node" +*/ +const BASE_URL = `/${manifest[0].process_name}:${metadata.properties.package_name}:${metadata.properties.publisher}`; + +// This is the proxy URL, it must match the node you are developing against +const PROXY_URL = (process.env.VITE_NODE_URL || 'http://127.0.0.1:8080').replace('localhost', '127.0.0.1'); + +console.log('process.env.VITE_NODE_URL', process.env.VITE_NODE_URL, PROXY_URL); + +export default defineConfig({ + plugins: [react()], + base: BASE_URL, + build: { + rollupOptions: { + external: ['/our.js'] + } + }, + server: { + open: true, + proxy: { + '/our': { + target: PROXY_URL, + changeOrigin: true, + }, + [`${BASE_URL}/our.js`]: { + target: PROXY_URL, + changeOrigin: true, + rewrite: (path) => path.replace(BASE_URL, ''), + }, + // This route will match all other HTTP requests to the backend + [`^${BASE_URL}/(?!(@vite/client|src/.*|node_modules/.*|@react-refresh|$))`]: { + target: PROXY_URL, + changeOrigin: true, + }, + // '/example': { + // target: PROXY_URL, + // changeOrigin: true, + // rewrite: (path) => path.replace(BASE_URL, ''), + // // This is only for debugging purposes + // configure: (proxy, _options) => { + // proxy.on('error', (err, _req, _res) => { + // console.log('proxy error', err); + // }); + // proxy.on('proxyReq', (proxyReq, req, _res) => { + // console.log('Sending Request to the Target:', req.method, req.url); + // }); + // proxy.on('proxyRes', (proxyRes, req, _res) => { + // console.log('Received Response from the Target:', proxyRes.statusCode, req.url); + // }); + // }, + // }, + } + } +}); From 1512b8c5a567018e9e880431c5d83d00eecfb8d8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 12:29:00 +0000 Subject: [PATCH 11/52] Format Rust code using rustfmt --- src/new/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/new/mod.rs b/src/new/mod.rs index 534e3550..8ea42ab8 100644 --- a/src/new/mod.rs +++ b/src/new/mod.rs @@ -23,7 +23,7 @@ pub enum Template { Echo, Fibonacci, FileTransfer, - HyperappSkeleton + HyperappSkeleton, } impl Language { From 9cf72c36ae4ab71b990abe231b78f3867b40c8dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jurij=20Juki=C4=87?= Date: Fri, 10 Oct 2025 14:55:13 +0200 Subject: [PATCH 12/52] add resources --- .../ui/hyperapp-skeleton/resources/README.md | 85 + .../example-apps/file-explorer/Cargo.toml | 11 + .../file-explorer/explorer/Cargo.toml | 36 + .../file-explorer/explorer/src/icon | 1 + .../file-explorer/explorer/src/lib.rs | 498 + .../example-apps/file-explorer/metadata.json | 18 + .../file-explorer/pkg/manifest.json | 25 + .../file-explorer/ui/.eslintrc.cjs | 18 + .../example-apps/file-explorer/ui/.gitignore | 24 + .../example-apps/file-explorer/ui/README.md | 56 + .../example-apps/file-explorer/ui/index.html | 16 + .../file-explorer/ui/package-lock.json | 3628 ++++++ .../file-explorer/ui/package.json | 37 + .../example-apps/file-explorer/ui/src/App.css | 167 + .../example-apps/file-explorer/ui/src/App.tsx | 66 + .../file-explorer/ui/src/assets/react.svg | 1 + .../file-explorer/ui/src/assets/vite.svg | 1 + .../components/ContextMenu/ContextMenu.css | 37 + .../components/ContextMenu/ContextMenu.tsx | 130 + .../components/FileExplorer/Breadcrumb.css | 70 + .../components/FileExplorer/Breadcrumb.tsx | 49 + .../components/FileExplorer/FileExplorer.css | 18 + .../components/FileExplorer/FileExplorer.tsx | 311 + .../src/components/FileExplorer/FileItem.css | 115 + .../src/components/FileExplorer/FileItem.tsx | 311 + .../src/components/FileExplorer/FileList.css | 30 + .../src/components/FileExplorer/FileList.tsx | 104 + .../src/components/FileExplorer/Toolbar.css | 47 + .../src/components/FileExplorer/Toolbar.tsx | 55 + .../components/ShareDialog/ShareDialog.css | 193 + .../components/ShareDialog/ShareDialog.tsx | 193 + .../ui/src/components/Upload/UploadZone.css | 38 + .../ui/src/components/Upload/UploadZone.tsx | 187 + .../ui/src/contexts/ThemeContext.tsx | 56 + .../file-explorer/ui/src/index.css | 120 + .../file-explorer/ui/src/lib/api.ts | 2 + .../file-explorer/ui/src/main.tsx | 10 + .../ui/src/store/fileExplorer.ts | 110 + .../file-explorer/ui/src/types/api.ts | 2 + .../ui/src/types/caller-utils.d.ts | 17 + .../file-explorer/ui/src/types/global.ts | 10 + .../file-explorer/ui/src/vite-env.d.ts | 1 + .../file-explorer/ui/tsconfig.json | 29 + .../file-explorer/ui/tsconfig.node.json | 10 + .../file-explorer/ui/vite.config.ts | 67 + .../resources/example-apps/id/Cargo.toml | 11 + .../resources/example-apps/id/README.md | 3 + .../resources/example-apps/id/id/4247a91.rs | 10009 +++++++++++++++ .../resources/example-apps/id/id/Cargo.toml | 35 + .../resources/example-apps/id/id/b6ad495.rs | 9968 +++++++++++++++ .../resources/example-apps/id/id/ce0d06e-2.rs | 9943 +++++++++++++++ .../resources/example-apps/id/id/ce0d06e.rs | 9925 +++++++++++++++ .../example-apps/id/id/expand-id-old.txt | 10207 +++++++++++++++ .../example-apps/id/id/expand-id.txt | 10166 +++++++++++++++ .../example-apps/id/id/expand-sign-old.txt | 10319 ++++++++++++++++ .../example-apps/id/id/expand-sign.txt | 10205 +++++++++++++++ .../example-apps/id/id/id-expand.txt | 10072 +++++++++++++++ .../resources/example-apps/id/id/src/icon | 1 + .../resources/example-apps/id/id/src/lib.rs | 52 + .../resources/example-apps/id/metadata.json | 20 + .../example-apps/id/pkg/manifest.json | 19 + .../example-apps/id/ui/.eslintrc.cjs | 18 + .../resources/example-apps/id/ui/.gitignore | 24 + .../resources/example-apps/id/ui/README.md | 56 + .../resources/example-apps/id/ui/index.html | 16 + .../example-apps/id/ui/package-lock.json | 3384 +++++ .../resources/example-apps/id/ui/package.json | 35 + .../example-apps/id/ui/public/assets/vite.svg | 1 + .../resources/example-apps/id/ui/src/App.css | 173 + .../resources/example-apps/id/ui/src/App.tsx | 182 + .../example-apps/id/ui/src/assets/react.svg | 1 + .../example-apps/id/ui/src/assets/vite.svg | 1 + .../example-apps/id/ui/src/index.css | 72 + .../resources/example-apps/id/ui/src/main.tsx | 10 + .../example-apps/id/ui/src/store/id.ts | 39 + .../example-apps/id/ui/src/types/Id.ts | 32 + .../example-apps/id/ui/src/types/global.ts | 10 + .../example-apps/id/ui/src/vite-env.d.ts | 1 + .../example-apps/id/ui/tsconfig.json | 29 + .../example-apps/id/ui/tsconfig.node.json | 10 + .../example-apps/id/ui/vite.config.ts | 67 + .../resources/example-apps/sign/Cargo.toml | 11 + .../resources/example-apps/sign/README.md | 46 + .../resources/example-apps/sign/metadata.json | 18 + .../example-apps/sign/pkg/manifest.json | 11 + .../example-apps/sign/sign/Cargo.toml | 35 + .../sign/sign/expand-sign-old.txt | 10319 ++++++++++++++++ .../resources/example-apps/sign/sign/src/icon | 1 + .../example-apps/sign/sign/src/lib.rs | 94 + .../resources/guides/00-QUICK-REFERENCE.md | 272 + .../resources/guides/01-COMMON-PATTERNS.md | 1263 ++ .../resources/guides/02-TROUBLESHOOTING.md | 954 ++ .../guides/03-WIT-TYPES-DATA-MODELING.md | 734 ++ .../resources/guides/04-P2P-PATTERNS.md | 1079 ++ .../resources/guides/05-UI-FRONTEND-GUIDE.md | 1553 +++ .../resources/guides/06-TESTING-DEBUGGING.md | 1232 ++ .../resources/guides/07-COMPLETE-EXAMPLES.md | 2046 +++ .../guides/08-MANIFEST-AND-DEPLOYMENT.md | 330 + .../resources/guides/09-CAPABILITIES-GUIDE.md | 485 + .../resources/guides/10-SQLITE-API-GUIDE.md | 693 ++ .../11-REALTIME-COMMUNICATION-PATTERNS.md | 744 ++ .../resources/guides/CHANGES_MADE.md | 73 + .../resources/guides/README.md | 182 + 103 files changed, 124301 insertions(+) create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/README.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/Cargo.toml create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/Cargo.toml create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/src/icon create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/src/lib.rs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/metadata.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/pkg/manifest.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/.eslintrc.cjs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/.gitignore create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/README.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/index.html create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/package-lock.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/package.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/App.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/App.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/assets/react.svg create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/assets/vite.svg create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ContextMenu/ContextMenu.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ContextMenu/ContextMenu.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Breadcrumb.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Breadcrumb.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileExplorer.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileExplorer.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileItem.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileItem.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileList.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileList.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Toolbar.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Toolbar.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ShareDialog/ShareDialog.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ShareDialog/ShareDialog.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/Upload/UploadZone.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/Upload/UploadZone.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/contexts/ThemeContext.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/index.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/lib/api.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/main.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/store/fileExplorer.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/api.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/caller-utils.d.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/global.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/vite-env.d.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/tsconfig.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/tsconfig.node.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/vite.config.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/Cargo.toml create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/README.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/4247a91.rs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/Cargo.toml create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/b6ad495.rs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/ce0d06e-2.rs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/ce0d06e.rs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-id-old.txt create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-id.txt create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-sign-old.txt create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-sign.txt create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/id-expand.txt create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/src/icon create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/src/lib.rs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/metadata.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/pkg/manifest.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/.eslintrc.cjs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/.gitignore create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/README.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/index.html create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/package-lock.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/package.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/public/assets/vite.svg create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/App.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/App.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/assets/react.svg create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/assets/vite.svg create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/index.css create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/main.tsx create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/store/id.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/types/Id.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/types/global.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/vite-env.d.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/tsconfig.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/tsconfig.node.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/vite.config.ts create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/Cargo.toml create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/README.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/metadata.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/pkg/manifest.json create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/Cargo.toml create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/expand-sign-old.txt create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/src/icon create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/src/lib.rs create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/00-QUICK-REFERENCE.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/01-COMMON-PATTERNS.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/02-TROUBLESHOOTING.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/03-WIT-TYPES-DATA-MODELING.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/04-P2P-PATTERNS.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/05-UI-FRONTEND-GUIDE.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/06-TESTING-DEBUGGING.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/07-COMPLETE-EXAMPLES.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/08-MANIFEST-AND-DEPLOYMENT.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/09-CAPABILITIES-GUIDE.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/10-SQLITE-API-GUIDE.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/11-REALTIME-COMMUNICATION-PATTERNS.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/CHANGES_MADE.md create mode 100644 src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/README.md diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/README.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/README.md new file mode 100644 index 00000000..9af449b0 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/README.md @@ -0,0 +1,85 @@ +# 📚 Hyperware Skeleton App Resources + +This directory contains all the resources needed to transform the skeleton app into any type of Hyperware application. + +## 📖 Development Guides + +The [`guides/`](./guides/) directory contains comprehensive documentation for building Hyperware apps: + +- **[Quick Reference](./guides/00-QUICK-REFERENCE.md)** - Essential rules and syntax +- **[Common Patterns](./guides/01-COMMON-PATTERNS.md)** - Ready-to-use code recipes +- **[Troubleshooting](./guides/02-TROUBLESHOOTING.md)** - Fix common errors +- **[WIT Types Guide](./guides/03-WIT-TYPES-DATA-MODELING.md)** - Data modeling constraints +- **[P2P Patterns](./guides/04-P2P-PATTERNS.md)** - Node-to-node communication +- **[Frontend Guide](./guides/05-UI-FRONTEND-GUIDE.md)** - React/TypeScript development +- **[Testing Guide](./guides/06-TESTING-DEBUGGING.md)** - Debug and test strategies +- **[Complete Examples](./guides/07-COMPLETE-EXAMPLES.md)** - Full working apps +- **[Manifest & Deployment](./guides/08-MANIFEST-AND-DEPLOYMENT.md)** - Understanding manifest.json +- **[Capabilities Guide](./guides/09-CAPABILITIES-GUIDE.md)** - System permissions reference + +See the [Guides README](./guides/README.md) for detailed navigation help. + +## 💡 Example App Ideas + +The [`example-apps/TODO.md`](./example-apps/TODO.md) file contains 12+ app ideas ranging from basic to advanced: + +- Todo lists and notepads +- P2P chat and file sharing +- Collaborative tools +- Games and marketplaces +- System utilities + +Each idea includes implementation notes and key concepts to demonstrate. + +## 🎯 How to Use These Resources + +### Starting a New App +1. Copy the skeleton app +2. Read the Quick Reference guide +3. Find a similar example in Complete Examples +4. Use Common Patterns for specific features + +### When You're Stuck +1. Check Troubleshooting for your error +2. Verify all requirements in Quick Reference +3. Look for working patterns in Complete Examples +4. Test with simpler code first + +### For Specific Features +- **State Management** → Common Patterns section 1 +- **P2P Communication** → P2P Patterns guide +- **File Handling** → Common Patterns section 4 +- **UI Development** → Frontend Guide + +## 🔑 Key Principles + +1. **Start Simple** - Get basic functionality working first +2. **Test Incrementally** - Don't write everything before testing +3. **Follow Patterns** - Use proven patterns from the guides +4. **Handle Errors** - Always provide user feedback +5. **Design for P2P** - Remember there's no central server + +## 📝 Quick Reminders + +### Must-Have Requirements +- `_request_body: String` parameter on ALL HTTP endpoints +- `` in your HTML +- Tuple format `[p1, p2]` for multi-parameter calls +- `.expects_response(30)` on remote requests + +### Common Fixes +- **Build errors** → Usually missing requirements above +- **Type errors** → Use JSON strings for complex types +- **P2P failures** → Check node names and ProcessId format +- **UI issues** → Verify /our.js is included +- **manifest.json missing** → Run `kit b --hyperapp` to generate it +- **Capability errors** → Check Capabilities Guide for required permissions + +## 🚀 Next Steps + +1. Review the skeleton app's heavily commented `lib.rs` +2. Pick an example from Complete Examples to study +3. Start modifying the skeleton incrementally +4. Test with multiple nodes for P2P features + +Remember: The skeleton app is designed to compile and run immediately. Build on that working foundation! \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/Cargo.toml b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/Cargo.toml new file mode 100644 index 00000000..4aa010cc --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/Cargo.toml @@ -0,0 +1,11 @@ +[profile.release] +lto = true +opt-level = "s" +panic = "abort" + +[workspace] +members = [ + "explorer", + "target/caller-utils", +] +resolver = "2" diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/Cargo.toml b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/Cargo.toml new file mode 100644 index 00000000..0218351a --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/Cargo.toml @@ -0,0 +1,36 @@ +[dependencies] +anyhow = "1.0" +md5 = "0.7" +process_macros = "0.1" +serde_json = "1.0" +serde_urlencoded = "0.7" +tracing = "0.1.37" +wit-bindgen = "0.42.1" + +[dependencies.caller-utils] +path = "../target/caller-utils" + +[dependencies.hyperprocess_macro] +git = "https://github.com/hyperware-ai/hyperprocess-macro" +rev = "9836e2a" + +[dependencies.hyperware_app_common] +git = "https://github.com/hyperware-ai/hyperprocess-macro" +rev = "9836e2a" + +[dependencies.serde] +features = ["derive"] +version = "1.0" + +[lib] +crate-type = ["cdylib"] +name = "explorer" +path = "src/lib.rs" + +[package] +edition = "2021" +name = "explorer" +version = "0.1.0" + +[package.metadata.component] +package = "hyperware:process" diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/src/icon b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/src/icon new file mode 100644 index 00000000..d0d597fd --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/src/icon @@ -0,0 +1 @@ +data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAwBHpUWHRSYXcgcHJvZmlsZSB0eXBlIGV4aWYAAHjarZxZkh05j6zfuYp/CZyH5XA06x308vtzREo1Wj/c2yWVlMo8J4JBAA53ADzu/vd/Pfef//wn+BGiy6X1Omr1/JdHHnHyRfd//Hd//h7eP32d+T/8fC/8flVwf/nBr68Cv/7t+5G/E3+n75u/75d0ofSnN9Tff4d/+34of/t++n2b+JcV9V8Xivz60/dDsgf+47/+x//vnf54ZqdX55kr+1N/HurXo9hXvHCxMcneVvnV+L/wdbNfg1/dT79dyP747Re/dmD3Q/Iv5HDCDC9c+3uHzRJzvLHxd4w7JvteTy2OuJNPIWWXcsrhxZZGOqmnmHa8KfHd+Hstwe477HY7dG58Aq+MgYvx1N8v9+uL/99f/3qh97a2KPD0v/aKdcUoMwTtYtKfvAqDhPfLj4pt8K9ff/8Pw3KRzKu0zZ0HnH59l1gl/OFbyZmhEy8s/J2/N7fzcwG2iHsXFhMSFvA1pBJq8C3GFgL72LHPZOUxuRwXJgilxMMqY06pYpwedW/e04K9Npb4fZsQwhAl1dQwzUgTW+VccnW55Y4PzZJKLqXU0kovo8yaaq6l1tqqYnG21HIrrbbWehtt9tRzL7321nsffboRRyJWy6ijjT7GmJObTq48effsk2+suNLKq6y62uprrLlxn5132XW33ffY05140smnnHra6WececPFlW6+5dbbbr/jzoervfTyK6++9vobb/62mlnV/cVm/7Tc/2618GM1DObMZpkX/bIa327t1yWC4KTIZlgs5oDFmyyAQ0fZzPeQc5TlnGzmRyQqSmSVRcY5QRbDgvmGWF74bbs/LPcPuzni/v/VbvHPlnMy3f+F5ZxM9y+W+6fd/sVqR3C3FYceYFMYalN9IvxmAiiAk7meP+utkgdRom/wfzxrNvArlBlXfXWuEQ6eceJ84FFd9sYVzhi7AZa+FkzL61q3v04Ptd1TYiwjpbEjhki3Y2bP5p/Rzhz+YLW7p38nX+4SWr6rD5mvn9XYa9+Tv3uPc8YmAN/hUqDauCl0UHLtMkZNgK3LL4w7WG+v2qE5WaKt46Y67sn7+8uH/RbPsUppzZ7rdr6feMPKo67rfr0GW/Caaq8593vt3PWMFVlM4G6AzvQT/I/YTtuX62G/l270jsPSGJR3sf94zvsWwV9leXvhjK0D1G+UHHgs9oAtZSPzsLcF9pBrexd2x6ZlnvJd5fxczG8szspH2/h99K3dVSZv1bvT3XpR95ulJVYXnrMfnPz9O74zWMQgINL3FpIIz8yavx9MW2T3XHkHVh1W1l8rVvet/vfTwSJ4otnq9URTj0RQrXo6DDXKys+e2idzMtk/2QULCIkP1Zu79n/ifvbzNgNvCvgVzifXXD7HwhZieqVK/D6eu1Pa7bbiz9wFYFsgTCSL57NzOxH6snwZMc5JBALyICB+Spz52cPx7YLvvuySFl7uuVjHoM/FtPxrNdYBLOFjoEebtY7TZ9IL91lEGgGOnTKpuudFUC2uzNdYI+GEb5fgOjtTL6HZXutn35b2K/x++870IgHgS/65aii4zAgLj6tj7tO4NVlzj8uKMHxgmWW0JPcOROZNvBIix7YtVtfJVX6FhEeMyG6HkvfOeDa/9+TBseGK7guhHKEG8tkcdouYHKfxoxNouEqPswECDWgCaAiIm1rbC1Osp7y04RfThcHyxI8CG6nn3NNcB6tbAJRtlk7+l8Hz51L9c//5edZI7vNRH0b5s9MWAMn+qfy+wxuNh8rJovvvrxxXNnGhkd/4cpbPuXXP92c3XvVXQNSzzKsNYr41L/1865/OFt3sAv4HA+qIdoUZmiEKeF30A8J/nO9nc+BWfIt0EO2Zq2v71Headude0Buo5sfkIz2w7OZL2nhja5X4T7mtxjZqT33rgpt018YKrmU/cBXy5Y2jdhIHybPP2P/t72EvYfEDG5QyJn6Gp/ZXk4v3VAzFHVjzJsmS9sIxFwAPqz/cfuvB64obr+49ENFIAFIQ+32J5h1AGScmymY/vDLikgTkkn8NIqPyHQIGilzvO3XlSDqMuXg5o7JQFUDjYpDdB9RiYAhyD4uszNVx1Q9RlszzFvR5c7dB2KdbXku4OcnxcA/WkBbeTnboLhZhz22AMn7/8iUHl8r2ZmEoCeaK2PGGjhWwEcl87RMjwIUPE/pd9HwMaI35NdSDHXsptVvbqXhL6mZXoiaS9Jq5GgG0KiYqj2S6wKy+L8AUwTPHu6Pnixo3Wau1ENuFL2S8ESKDK7HZ+A1uA3awKbhNJ19fAQZLwwrNY5PsHkYC+8k8gtsEHrH4ACIBuDEe9vQ29vSBGAmWBfPv5NB5VuGJ89j7djA26tHyJp/wc3QfDwTgpAcfqWORJdiIndhTMtGLXYg82HfS0pu2GB5jFzaOTHszOIyRQfqNiuGpT1o/4Zh5fjI2kiP2GsDgy3XAX91J978k0Mn39wjFrZ07qwCl8ToIWYYMsEuZe47IpscObPQBrM3eMwiOfxKMcgyeOmRQlVSNXrvpPN9wCJCDNM0VWUgMC5aWsAA6ix95KIF4Ybwb9kDMR4EAKAdagpgQzuEinktY7DFJBhiP7FJhl2HDNWGopbOGcTt0SzoPbrB5axbFFR/xE2eKky+cwqhp4exAO6V68B06h84AczPsDpUYwHLCRRHYoY4Zb5++l99vvSPARmogliGdnU3rcwL7r34PTiwGYBH3wO6sdQF0ADa7SL7LWK2hF42Y1FoccSQ0uiu+uPdm2YD65sGwOqt4E8Jc+LdeBKW5iuu95G5im7inr/I02IhxryFa8EIHFdiMVpLej3FxyUWawfzz7gW64bQshOeGY8Nj8G5SNcl1uj8gTWkbpELPHnI81Ip82AEVSO5k50q/fhBG5SLfX2eDuOckg2FbMMIB6V1ETfi0iRvuGOOYD1AltvGYhOnxloWm41Ir1e9y8EaShCeYPJtfosMtt+7RBb159gOFmVlEFpcvENji2T9gHxw4QrDZFvusN6dQdhrNT/B8O7xuNzg9dLmdNDs5nwzRC8wdJQLbZ5ETx+DBoX0g0iVzLJjQK+fob+iI0MztdvB7LoGfIV9TBIsVwX7x09iMOWsf+VPBXhTWAaMBl1CYyCP2dyvUT3sDX4JOecJLfqmN76PqCZE2QGEIk6UUSTU2RPiphAEZO4CoRRjcH6sJwIWSydSATJcnRA82As3FPiiQm6Ex98bUhLZYcyzlTWiNltHDfR3h964I1cXya2E3SwE3PdkwZDD78h0el5zNcouI0lggVZhyJNEmHPRshz02DOMKAeCgYkh+wnU+I1pyrLrWbu2huwSuCMMM9OFwXBjXmAp0J5ifD95HmFUo5qjsUiBVIrwE8eO+y3XJjbMvHr4c4nlyNwIDTXjZLPhkja4Qn5M7wDhJY3t7FI1gDXU2ToLCQh4UBQGkrAueT+olFifcQOYlHCHRLRzHQ0C4oZdA0JFou7WwS2WIsRLt+7GlMNlcL/gMbNyXcVqg0QfZELHcSTvBGRJB+fN+pPtxFxGAUIIzFakOFk6QtIJhcFgiD4xH5KLeYDrAELq7vn5OcKz61iqKziYTUoQpspt0QZ5iDUQUTuIRxQO9v2+eAwWD60w0qP8BDjmha1iNhMH2gFmScRF3YT/QIxWKskYmXxD3cH2SCJT5dtRvgmkA8CwXrbZCHzgkCYwrQBLgADOTut4aBwZbd5TIIJkNHJXARetjOcScxzkTDFnPNgBczBWDKx3OJgltREeqsoHKUO0h8oLCR+5XJIEwmN0CJxYrhUTUgimuUlGCDm9H7sCVUORHSxNQNRQAFJ8ECgsCu9FSZezlBa7klHDLIvMn+AneT8DfO9acjoz7CEqk4U5yQIyA+SFFMAn2sSv5kXpw9Cu+3rkcaYC7wk3Jk0mKdqJK3cIMbDX5PDU2WOxOIncTeBdNIr2L9D7AJxEIuW7BryFRl7Ert0N7mMB0aeu5OryjilGZ9J9RYAR0RRzSD7yJmF3KPV1ZIQFN8MmH6uoX1tnJ6NFVEv9COeKtow3uXDaJM4FxAIrQEXgVzBWlBDGD0kmuyJrC9rOZ5Yzx2ojuSL9y3/1UOwjjZZUo0GCEJHJxX8gShBsChXqoihIeVM9JYsY1YI1JKD9czqTI3bE+KO8LAAMNJXEQnBnOja8MopXNw+Oz1P7CXQY/ZUc7qS5LcuK5DnaA258FW8Ef65GJIS7aQMCOu03BiJQF8hR2/wLZ8oK7IyIEgtxBgsc7D6MhdSA8WP1riC2MicAn6DxeydsxXBPTJKKgMmSfpCICympvWBwhsUiqyHVWNyaUl7hGIoA4W0UfspHS+DESRqYF0TH/xaHhmJslX6hSUXlGzIBnhUTgxFiIWG4AY5GqJTkRFWiAjiFhgYPXVDgAmDVGh2Hz2AROmuA6j5OBqOVGjrfcARdJpDp2qnfp8pIzEJHEXF6XCrrc32947yWj6/nrixeGgE6Zb/fmKpIjgYJIK/wrYDXYpdEx9gYJDFZNwCipShSU7yuX9hfGueFfGSky8xuzuSFNJ56j8s2ei9uqJmw9Bil+HoToLXu9GMmzED8gCBaM6eGIoAI5B6Rqju9hCalqkuld8h8I60CC4RLKqHigkBmxDXxCN+U3SldKqbZ4gAAV7mZMBhFohMem8gP8GIxBXIEzb0HZYkeJY2L0GGoCNZWbamO+GW+PSzm0utEWD479cQD4AYIQlQEDhwF0nniAR5bSgW825RSsiVFK0eoGerF4pebGZh8ED2Gpch6GBAtgQOBHVGUMIEDMFJATJ+UlQzeHG/Li8WB9QBrG4y4jOBnLw5ZwoEOOisOAmzfAx/KLDQ+NOzRVmFKKyBIMzuq9bKXKI2BG4uqw2qr0wI7Mqt5I96p5tAYn4sqJHZeWI0ujKzIYQ2ocVovLqIMkW3seFxh3CWAAgEBGBZ0/kHh78dCOB+lMsggZGlxAiEZul6FYW/7dJX27dagC5vc/TOaJSmMLfs5zrjtxeHwDvINGQqi2dS2OCDEMEcwlq3SYX5UWW90BlHCRFyWFAYGwWlVgD0GIF1Ddg36eDSVzQOt+AxGihh50H/7N9iPwqr8Oo2LGw2pgFQgPVkYSmRu3JqMFXQ6pLr6C9apETrBy4jONM4gO7eFAZU/pEoC+H9LIhNeFuFRRW+JJuuZEwV29+nrpkawSAIJrQG6WshKKfCT2SIzm3UveOCIHsIds9S3ijj1AYQvPgHeCHK4BrN/1EJmSiUg8FQygFm+R+zeugepVOaaLKCSpUNiURAyrg/9iSuTdeOJCMB7MysIE+1hx8kg4cCbWUFvIs6QrRZFg7TgkBzAiUHH384Aj1ce3zMku8folVcuWdRikshvmn3i+F3DzfZj2Zh9IKDwuN8Y/MDuPploaugL8SItcBVva2jWPfCIE3yuIY9IWGHfkLIgyGEtDwRT4q5BFX4SGX4KbEvCCBEFT77g23EJ4IOKJWzrlZtYEdrwZnsp6/ABrV3CFvEiahgmqdHXwEZ53weOI2qeYgcgSjgTmbgi/jFLc8GyY54bLXzJxSPxoNOjwEg6CGWTHEcXg1WlD/AmeiCd2L0F2Cmtz6M/S2Vs4N7sLo0pVtRT8FCoD6ltxSHpKlcCwVLnHb0lZXBlTdvZWBdvjYKEXQXBRYxgZhYRQxtPUzvHsBRfaOFDip1MK8qqyT+L3Z0hgIRXQl3vu4+TTuNUlBQnD07kTOD18+xGXTcUg6BVPN6Yi5Oi9PJxVf6LSB9TVA53uDUty4moogYZAId29kJr04poRhorhGlkbxovTsNtwTJ4io6RbEBaMhzZ3L0WVV9XP0t3gIRfSK4NXFeKHnqGpQo6UYrdxQ7jDjKWtjIpGJlT4BBreRZXEHqoZ6tfJnUt95mDNBt5eUTdTPUYF7EBhn7x0I9JkuIKViE9ka0GLLJ0C2VoZgQnJ8WIppBgoJrvElmEKeM+tXONbSSSEV+Z/MJYk2KSgUUfSJh5oApvJVhUIG2S4vXa0kgB7SpgrRPyKlUy/QDcVrRAFHZUPFgGbqzqIBphARlHjPSmsAioaF2HlxxcVuaqoLI7OnnGJBNVpYtiqJQOm6kSp4VuHKuFP1Je9aFaEZGvMw7uX1vUIYNvhUsMco11d71bSJ0BwysVLVBhHayGPZU5wkCRxzpDAic2DriqAoBCAAiJL4kePBEPjDUvrb9L8PMMbRP+Q9HpqK6KSYXlXraYt26t7CfNLGM7YcJMM9AiIGpZoPX8uLANuIuWE2bj19Soh4uzcHcUG+8K3ljqW26q4EUeaFYEeUgQwH9mf/BjN2QseupNjhaCQhBCYHedXVRqVwL4EBff0uDO/QZOS0X5pIaG4LPm8ECRiqdDOMhygJz7h641kTzgAnJTtVxMJb1DdESP1/Y2hTHXDSCUe6vQi6eFIJoCrKyJFiwpIK8JgoXqnqhoRCIxOSgog3JpnXbK7dW29Qobf5GweXgUDyJJw6boxJ2nWs9Gg5EbmDfIxPo39oeELeqryFDuBm/lp5S9pJXC1qbhflPK7SmNqIReQD8pEtpviE4fMyppxLPVuXy5kDYKInxIp8cC5kJAsRfdRlusIquus8lbZFvWuwM34VKFOlVCrIuieBAYdFkVG6RIq8Nx1Mf8hG5Bw1XfqpGlY7QWqKlaDbiywvGf4WpbiOVVSnXBjwfBgiDZ4yd4/k5OHbDEuurGotVOdSpIklamuUk8ZuNd0TBY7VXEFlsNC71G1Bk4IOqgfJywn1YxihU5y2314dtbbofU3CCfvwy9B99XUaFFiCWzwQN6Q2Z/ahJDWWRB3+wkJEwZQAc4h81W2qBovwNWWoSiBImGC9Oa5wNzQXsU5YUuE9FDLAFGEwMVzizr6/OGKUlCLlldEIdN8B5FN7m7cF84CFuG6NV75BgCySNOsD0BIGAjDqytS0GtKXeGhQnDUrhCBdD1kNtj3UB3EDSwQv9QcQuzyerKouFlSSa48XPet/hz7rs760l3QSRD2s0V9sAFQR3652WpdAgdSclQvA25KUGCeKx5PpkDbwbNhHE99fGtR1PLX9cR32W/oI15U2FqIVuLpyHW2Sp4Quqgc5BL5G1DFUdlTNhE2fyFfLe8ls0POJ2l2Qw8BBRbWJHoiXqgOhUpUpO2DkR3PCGEYK7H3HdKmisqF1io7ePgKz5NzVjWBZy7EB5oLZxCgwAjw+oLODae61YHii0JtWdWNDBazdQ0RpJwIQ1N7RbIV2QB8d1VooL5emKfAxcNTJ0QdYYR3elxP8EQcIMClWUgTQBPPXXBmdlflsAk6gcQJhuDZJBHxq3YRdtmOxMDPkRUKoIX8QGdIpuGRR70INZhZPNrzEJHo8Kw+CFIdnVMA/cIeSiY7oGWrsA5iFraEzAgCQMm4xkH4RHI3qpz4V7sRD87iLDHziOhK8AenQTnn7rCM+CxaBfAhw9X5fJ0aKpnqP8AapulSJHHtTQISWOTdqR8810PSMCHQ6ZokFVeEMyQiXwh44HdPSRSOFWVexTvoCHPDVEpASXkJaXMlknaafEO9I6hcLusnH2Aza2GhNZBe8LFQuHiR5IJuaJQlW8MY2imFoHmbeQAehypUmYag6MgBxFRUgeGbO0H4RqSfRhm8msaawtkiuLAuEh46lHv4gEAiZauLC/khS/tsjZMBihHZtVgXBZp2gBdMpXLkOSKrSv5Jpemr9GSjGXO5KMol6E+jqh9MQPF9AoBg4MKV/0SntRUx5ytYRCKQ8Q2neBXWkYh1/bwhFX4lCy8wDf7eQBY+Vh1W/xOBlxtIpcInZlXpDioKq1NEqlzYEFSObDOa5L7RYPgdBrXJo6FGNfFYRahVt9b7IRhSB2q4gQID+4F0iydFHN8CdRItiuqNHHBIbZbAZaAog43f2crIOOVDpxSNjla1EtXTJHfHlUmxw5E/kKvQRMlmFBBW76r1JWu3kEXxXEgEGI/WIDBIUE2tPMjFFqwouxIlYLbciIgnm4PhS1OrV7BESFfCAr5d8cqK5BJQq5QJdEhtqyxUlVQe18nVEe5qVJJPUcUTAgysIGtU7EOQAyBo757VXY/oiuDtKxtfHVbOU0ttTHh2U2uJZKuhkaiWrrdOh4WA2kAE5JX4D8Rw1ZDP0jyoP0t9afANdguLUcO3/rS5QI/50oOIAWXq4K/kARI9Vj4H3gngq8SrfoDGz7rggcABwdWfd5IHmaSuIhfAiLkJfMSlnIgUuTQOFUHzo8ZYj5qYggyvg4DRgx8TdyhDdwHuECdJEVKqvhUaCiPzj9FhXJo5uSJGEIutwjyyXQOwkGCNtno5yWN3n8tg394V0dxx+sxzqJStyUSFkXpd3jSzygZwN3Yyk3kjShT+pOKq8Bim44DbfbG0JlXQ/cjKc2EVMQnlCLqg4hUYLP1490nxZuNOVWVNEFT5P0JBnCpwSu+IueaBUABFHQvjXcRf9RDhA/3oA5/tlh4AQAXYOAQ/OYv7kQqdxjcOwbi6pgf3p3e8OBYBSFhVEnsFliBpJ4esvgoqHy6DogAO/YUysmRCBKApFfqCYynjK7mHAAlQ0xYWW9VB0eiet1t/y0woJ00gJXiBZuJEtAihjFnRMRqIwJ+BY9ggOm2p4bc9ZsCEgii8A8lwquajoDYA0K0QY9VQdnWYPBGaaPKrwQ0pmC6NbGSWfAzHlDyWP9VZcUKf0xMO7aXG5NTwGo5H0FYcRPkX0t4hDlCHVlTyTDBXjLvPVV1wSirBPHi8p/5sgXlcJQJI+kIlcyFU05kx1Mfa2VXwWRPfRLKKRaQDwg2vgwWq09Or+GJGoPUzjIc+TRtiUceSQdipYSmwaz11+T3qfAFuR/1CyLXoGllRk5eWyaG+uLoaugEotcJdc1J/TWAVVGSESCnb3k/LJDInO050F7VWmqY9o98IB/JH186InLFJIBlsJAPHpAtf1QLHSBq+YKeWWsVKVhHmErBphUXwylt+qscNIUd2wJ7lS9k5jh00eorWXBUI0Bxu00QlohjRKEWHytmmDr/5KhB0QAW1nrT1Z5mObIT9JiCaQbdtlwya9bmqz1vFjBUqikmoHTeN/GxpHKLcjZdAOFH4BC1RkPhKElzlYmndxSaJIKlAbDcnKkQTtyrURosF5qCD1/yyKBEiALkOoVXK6AlnDnFoGpaI2tA06NReol0b4qpZeWt7gy2NP9llr4IGyjMVyfUqpYRGU98bTe0FFRDGqtK516Dc6dWakFuDLLeqjN+uBC3Y2z337iSk7i4JVLNF3iZLFnt9CQ/ojTyYxLMyxHCNnXonWkr1lobhQUEDOBoz3IHNTS5qiEysmMgfrAIZMN/kmlvzlmTXSDgtVhbh20rdapVo8Ecz1KQ0Vc6J2wOH9NbGKysIMEJBZI+QEQR3ixEVjaKpSCk+Kriej3xSoJYq+St8omZdUNlwFrB/Kxtymao/LvREfMNnQc1sLykzQXqqeD9KzEPPQAzWdqSIhDQOKMEhnwJRIyqC0KbpN42XsAwyOQFkFQC180ArPJSviiY3cU3I0gehzjC0rsS9wHHpljA0ei0lOjWKu5TCVS4/qmfp0XABP7dKkZb60iBs2SP2L8I9We6LEAIVZ3hx1FghAV1VKymnL0zDYwlCyWUQJQ2UgM/vm91+yCyrP8ACMhsb+S73mcQsBPeNo8Yxj4G5oybNeU+KCNc16oKOANPILvgoCU96TW6iOWcrGBaMDw+6VoOr/g2V8AjF1MGiKuiHpeM+mgIBgwkzXAuZ67j8467c17pbVgJQ50/lOhaRVdUnMaHxdLxBYyj9asJvqrvLbzEljSU5co+mE28nwfal9s9VcKv7AliT6RWmikWl7RsaDyoX37ceNSPBciCS0HAa+V1DPdGo+QUdfCG6k8rPUBvStcZ/bSJHE81Vw0DkEnWw4uEdUVRbk0FOnQaNu6gVC7MBp6Z1KAjdQtQEYgSYh+VENKyEs+abdKAHy0+VwmfVOIV3diTiq3sa3h0pT3U0ybLAyLJB3rOKFAjgc1SdUSqrEweD46sM1nkAx04DFnifpm5UuIqwNjZvn/latZMEQ0REtbRFekD8qwWsAcWk+f2sIwbEtEPKpKSKc1C9B8bSYdisl63LChKQSVW+szybLS4JNVHJhoyyC+vMJCB5lkOE3aoBFx9VR1PtcOHmE37uVVqAWI7+DY9Da9Rh4pkIalBcepKfXHx4Vef1r4rYg2IhQ4lXm4SCBIH8IWlgQx0RkEZlRXwR3e6X5kzI4JAFVfq5fHRN7ZxOdGsk8Oi4FFuM/sxKcUBvQ4qDi2ERkuTgnrqcXYMfSC7iF9zQ/El1Y90bVHA8qg5ApNUegXIlzZL8iXINLbkBQwGiTtgB3h8ykAvV7nAL6qGGQdPY/sTHoG8QZxToJSt5kr+CryXNZZRak/BIroDpbwRxNLKtCSV0P/RwqYiW6kJLkCfBdZUqrDsZuBYW1Bi6CJB6dHsiCO+Snh2IwRLUM0k6MBDhRenrbwA5muIlakoX6QCnysw2zw1t0KytiLeGNOx8wRQ71pJmc4iFJ9otnRWuhnGOVBCJ7lhWJ67WEP81iQJ4WfcgSyxDtuCjkEmEj3fsGApQMxhVQ1s1eMBWo52qrl81pK/N1mpMwQ4slBNjfFqXNBmULmjTnnsqeRfrzyxf1UeVg7JlM76Un0bYs9YCsrH/OWlaBoQyuiPij1KRkI3uQWdUAryII1j20ZhKw0eljUT8pSDDewfrHUBAqgSFAR2vL6ofQ2CSa3JzWcOdi/V04A8oA8fBsfE+mgw+Fg9zJsWQyZNak02tGamfFFAuBDB3uxe9hpmemI3aERBkDRxqIBo9G208NUjjwq90zmMGG9rRZMJXTBL7hW9gYx3zSEpbUBXNQrFBxO3Q6ESVkRToZOfuxbTXVacdSsp7eXgNpWpKOQMUkFESW8gbBingAu1OgBafpPnquQkxApSg9ML58HNsgBUQelOqFiRu6vpUN5VksoYmdB6hac4UqyCudhjov1nlj35pcAruQbRai6Cp+sqSOm9VvL/psNU4ya4CtKiPolllPASF5z++rk7eVZOlbp25QspqdpmcvRPUBdysdy8XcfcCndegFTysaXC3s6JsrQJ13TzLU2saAh4K8hl/uVODk4I2smwQGm93vZGurTKDpm4AQP3xNCqKf/kCAGN01AebDFDWrpNY12oxqmFJ6qsToLOimqCPAPcAXKyuq4KwjQ8olb1bVq6Z5aEYVB+5z46Uks1EcL417+ZAMXIwxh1jRck2YztoX90IbwyCRZUQxKlnM0H/vWaaqBwSlcEPgA2cMBg5y1rzVyXpbFXp8gwC57UOPYx8dp0t0aiOht0y+upqahrkKA4X3BIhpN+isrlO9oRCgiJwJ0A/wQ2QRY0wkcgQd4VBFh3RkMhD0VfNmhz3NIUKTYRxJmWrNguPmUkAkCSgUe0zFN1eWeVm7R4SCZ4k5EabxW4z6a06uMEDhvAzgm3H19WC0KkrsE61iKcBJa+yyQGgk6UNvDnCeY/GsEvSCx8pu+p8HdCEDJVk/Ao8RLqgmW2RdqwYKucHPStqm5I9b7KFrPvQbGI81VWJkagCjVYSIkivA39lC1LUvYVUKf+ASISrxr/R4CQY6CLoJtSCtmeCln3RrDOBjwaKV15Dmi494283aAhK7mLzk7AQKFUhua+wiHD5+6v4mKzufJOMvoILUbk9wErkuMalUQYPZlV4RKj2JfOT10ogAUGUNWdtX4MckRu7eGuRtDsBvUrSVc8miaKomPawsGBNs4y8BX85qgZViOsEtjRvFnVKTzCyeExymA5RbM3/wqRZE76uueKiroUOnOiAQRz4zf3OJ4jcXb0W2qjiEBLiqDtHECD/WyZdo6kq4uehHsHsKJH0kOqRDII6yeSDRCRFkswQeYQMJPU6ouuNZISe1qBX9xoRvToLQ54rauGCCVYJ2oCLnFL1f42MCNx0Amk3EX5NjXllMQivhQRXq/UGO6KHloEGjhqPHTZbmqolCahd0oImtJEawr1qpe7mYHwqeAzd+AUJIMSM+lhrSe8FHdTFWXi2xS6qbqx+gimnpZVd04opO4KjE+WQMmTb0sAsT1QhwkVlbaiGYc4pD8TjsZdU/PjFATU2pyaKmuLiTWr+rohWxCE0huo1mgLH3TqmSTRFErnmEGHZLFxzlupK1qb2AOSX1afgdFgdYc6fOV1eq/JA0/EFFV3xUuQ3yQWxklMFCnU4oNsEtI7WN2LZBmlPdfsBj2l33sk98X7sQgItS858NeEB0Xr8tsIYIbjPCFWDRtZpmBLu8B+sZiRRzSJU1dFggJX+GrRlqhZPXFW2Nmr+DYLTNGxyWRe45XWuBOqeNITkso4gSIORR7HLtcESuSKixwJWVBFai2rEna6yiAaFvua22CRSXYdPnJorvL3Cvfgy+GezWlGnQcM3Xw1oXiHTgFd2SM8aUmtFI55QM53TQPOijjRtCcfkLVxH8yQ42TCKljAm0HAQfRiZZ30o6EqGgOKxKwvuq5M/924okjsqVXNHCZUMEKg+MhT6mvHR6QLZBnaMTsVD1ae9k73mNdACCEeV0r0B4YfgqQhG60DC/VAGvaPycG8eBnistYF2NjRzifo1C+Gyyd6aJE6qqiNlIFoqjejsXz9WBRamloq7saURKgwZRU94dYqXSrA6UgxvDip1xQszPmxdJ5m4hkVsVOxm8fuuASVyjaop+LlXH3FPLx4avik4tgsWDYsMUftDboGqw/xL/I7lwNTKjoGkTUgjYxq+N8jOwE/DVLtZQewtmM3XNFR/4OlMqsen23ND8i8OHW2IqvSqQlfkj1aTzk8DpXj1VeMGGaDRbvg+Dz65NMFD4rYOrxvXDtmys+lpzFenSDz4mARZpy6d+AGeJJtrsvOKp30FnBTfZN9Yp/o17kyb+bMPnPBL53QWD9uqnSgV9gvQFXtD5fOxraOg/trNmS2I8Vys7Y/TB3HgoDPpIIv9JqRU5yczaAxNMyZPlEmfpZFVidyq8iEQVBEdQPGWCAzu7moDA0An3342fHtKt+Yl31KdAHTZ2Ls17ew8enW0c+Zgi0ZQi46hAf4a2DmqDE5NdtvRjpoe6t5ugFSTClqQcQx2NeMdk9pEyHSdEtZwMkT8uilUAFzVOtVsjTdIStHQQjknoS51BiqRClHXqgLC3jfcWDB8eDRUhaahlZIXP9CJPQgAX4dPB6rau+1ArKauXgy1K3ECMBBcD+VL1g7v/RuuUA0DzapBDRUgIOBS8vxTWwyTyw//P8gWnciFdemzAeKzk5dP86Rwva1RAKfDiQCA2mtZFAwAkA7liUiPuP3SoQh9egn5XuUb4o41Qb/ACbSHagwg6e6CEQLv6rDVSBnhTTLuR8IDjew1DX+6SvWrePQzW7eyWl1dvBkdGMlPnVAirwGae+LUrVtv2Kv4pdFudIWO3XjImo5HIWSk39UfATiP5BY5xGrZFz0Dqx02/a3jgVDx3AGhpd2vnSXojJm3k67exlg0VqredspcvHKTwJJYB/jqQlDdomv+RqfnYLNWfsANwV2uqyEgQnMenUZNOiWEHLPKMbt6UGDjEfQ3OQgfhlh2NBWmpqmid6xhpY8nUW22QrInF642MCU/VH/Fa0bbn6BWlKDSEdhFJweyTTdVrUHpghQFB4Yk4PdwSNKt4DprVILAmV0lzqhyBtGhI1reATea2pZqVb0TTka8ITSxL2SnizJ1G6kDQ5bPqtirjHbQBlNTX7gmOjtOFyDF94n16YBCVjbvllZ0HL5qVkun+/C0pc94UEe1gqJFs7mjmOX8tyIVOVVQwuXSjcXkQkVONWg5Gf7BLIvaWzyJFeE19sATERVZR9qL5tEiUKYhnaT2+BVDTVZyalOwrlO4Wx8ioXPEqluAJvhtBanPPXB+OHTXaRlwEvqjTo3o5PhqL5qP0vk7nrVWnfMJWaO9UaQXJH8gO1ZqUT1UvqWDY9oBsqmrT4DfTSGI2kQecas1roOOAVcrhXSpGPXRnC0bukFEZioaaps4FKzKIaCXdndBKDXNKAkkrtg+c8PK7WwftrYOJgIlVQiY9MEF8IaNCcyFqIGIdc3tVLkBVyDj6GiARiR0rCJJUk69mI37PvPkgHIas9SBEo2W2klad0lfMFtA4rv03hCwrikIMp8Xyqe85avWuVaG1ARQVzcIAwZtl73TKQKmTnTmFpBgHnO1ouMHh29JkR9VxaB/yQzx1GksRQPetsCcgCUFofM6qSIuk1k1KejqU33YsKyj8Ihc27aj6XWNc3DrCP3VYOi7285W6qQ+YeIEuKrS8U+QQkoIUR010gfOI0uLPolIpQ7o3Wr+aRAg6eQyEgUfOZoSVWJ0Gj0mCSLNGtkBuogTBA0EiRCS/5KaJfJvGJzEooYKeLbU6hAR9xt5mESPhz6m4XDrpY5jlRwhmyciRWVur2btVs2g6uNH0HldQ3rQchwzaRRJzVQopXdI3kfqgN416IkKQuSQuKrNIW/FSBg6iBEfmnfrc6yIARW6wSjVjzWOx1Zst3Ws+my4nT40q+lACxwXEQBqgToaldWUh06g3aHzWyrRwCKCKhFRh5lD1hCUGzrWd4/ObH2vU85B5GNhfaRGDF6nh5BhS30N6VV8F2FiH7oADukQL9GTnY7ldZ2tl6BgU7I+Eaq+oc8h0Aj+nGwWTCBYY9M6FhAdlDXpYaLr7x1BB0/dW+gim5pOUg4aqtSAPfhVUR0Y8GgCAGmrMwjcBBDQoJ5mhzQA7PVORat7KqlIOpGlh066R1CbMMg6PqcKuNxx9aX2ok4/na0P6kCNFaP5dv5T5Sen3hc+eAvBow/kQIqzVXXBxqtVA6pmTJqGDLaGUtfBFHastJXjy1Hm3WACIbKj5o7YENyjqua4dbgFsEg6aqdxqTRWtc/IEj1raok21U8k2bjm95EJrmrQR/BMlEG3hlUxciDBQ0ZV38hecICvBWv8LGEcHsNaoBaDrd+S6MOBxKi6pLFmnXa3TxN4OvC8CkpAHRwfg3WPgN2q1H90flAY8Zq4gtri9UL9csevCypfLwU9WJvopfKNL0rdqnSzHVuVN4I/a34beA8ZvY6n4eqoguDACY038jwxqiWnUS4S7R32yQA6PnUgsEqO+MPyIoXAPJdAS8K0GigCEXhTF5p9deuS4Cs+62hyY3VwTi22gKfwL7FwOx4FUKvsP1nfOD8fwSJ9574Dyk0FzBlfUW8Byqfp8xIFjJr8QUIAU1WUeCF3mg1Nebj9QaEXTcqSsvXhZwBdl4JUhbvpI1SIBSFGLjhmVg94FZkifyJ3wtZ+7yN2hKgXPHuA4HAr5F+8zY7/HY39ZPxBU0+asyGfDvv8gQDS9aHPxln6QLs3bWPsUq68E789QkbpkBsqYWuEU+Tk6NSTT8JviCSRpUK+RuHAgiLS38av5Tlbn6aUYd06NV302AOSpLnaqakqAAAAho9oX9NU51xnexNJrGiiuamgg1x/VcdveeUfF2u/lz2QU0Yab/nO5SmNqp2qKdqpxLB0TAj64lQp5Rr15xpw6fWzjbyuqlQeSWlBT73sGIJOTG5SDJ65l4bEle0Rx2xdO3h+3tEblX4FKC8krMcj6vAtWbnpOMQB4oArnQ6HZqtKkjBU9Spzne5gL3q7xsFtvlNnhcfISzPGQYOS+pw2r2e6VQ3YNL5JkT6insW8WpvghoeTNOiThjTGJIJJR0QqmBvVoxbJFioLU9gXFaT1/t+b6IHPShS4+B2J6UQmIq8ZVHjJ4Iz6BZSrRpC4b7r6DBioqmqsgAX+vSsPoJO7yn3uzWpz+K3JKfSRLc06nkA+EaBifLTPaVKZSPNBT4TjLaVn8o4Nq2qqbDt9IkpVq3YBdFnNz60+NsmGlHRZpY5Vsb9XnSCN5+uz0+T7vAoE4W1wBH7gmvVAij4rB1ESNfc5jgbCas3J6q0EuQ4ZSI14lfCzDqDYtdRDYXsUlN6pcaNGmYgXCgDedQXBbaku8zIbqGVohAJFKtTTPwWT3zekkheiNbg/3jC+V4y/vUIQoA+1CWonkSZ1akZdcN7kg30+Eu8r1cE1w9JQQ1ebQW9HcWp25ekjM+wj2nQmVOdRtzqs/Xy35Bs/10p2LafvFDt0+L0g/+Ma7ecF63tB+V6QSFhL47M6Ro4qcF70QXWFby8s6ahEmFQz02ECubPOwT+QWv3g33vwa5e6GdPtnzsg3vRM/vtUq79us35uewa0yBWOZt001U4ea0MjZS85QUzQWJrkuz5wRyWwSQqZ1qlb9pa86/pZRxwkJTxQrf6lupLINinHIRHCsNXMqTlutGWIwAbQ6/UZl2Iyorbdk0zwQvm/iK591lAOcY8xNPEA8x9viMptQjBJZ+vw89CnmHSdnK/WjIehAGuqxkHsh06LdKuiKNPbMTsUJJIbaeLd/wBnyvztca5CuAAAAYRpQ0NQSUNDIHByb2ZpbGUAAHicfZE9SMNAGIbfpkpFKg7tIOKQoTpZEBURJ61CESqEWqFVB5NL/6BJQ5Li4ii4Fhz8Waw6uDjr6uAqCII/IO6Ck6KLlPhdUmgR4x3HPbz3vS933wFCo8I0q2sM0HTbTCcTYja3KoZeEUKQ5gwiMrOMOUlKwXd83SPA97s4z/Kv+3P0qXmLAQGReJYZpk28QTy1aRuc94mjrCSrxOfEoyZdkPiR64rHb5yLLgs8M2pm0vPEUWKx2MFKB7OSqRFPEsdUTad8IeuxynmLs1apsdY9+QvDeX1lmeu0hpDEIpYgQYSCGsqowEacdp0UC2k6T/j4B12/RC6FXGUwciygCg2y6wf/g9+9tQoT415SOAF0vzjOxzAQ2gWadcf5Pnac5gkQfAau9La/2gCmP0mvt7XYEdC/DVxctzVlD7jcAQaeDNmUXSlISygUgPcz+qYcELkFete8vrXOcfoAZKhXqRvg4BAYKVL2us+7ezr79m9Nq38/V35ynEo427UAAAAGYktHRAAAAE8A/6+Hng8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfpBwMEARhQdJLfAAAgAElEQVR42uy9ebylV1km+jzr23ufc2pIZYCEKUBIDUml5kpAUbvhXmwHuvnZAg6giA2KzYxexaG1r1P3xZaG9ipgtC8oDrRIg0yOFxVFaZIaU0mlhjBDCCFJpeZz9v7W03+s6V37FKZI7araJ36LX6iqc/bwfetb613v+7zP+7xAN7rRjW50oxvd6EY3utGNbnSjG93oRje60Y1udKMb3ehGN7rRjW50oxvd6EY3utGNbnSjG93oRje60Y1udKMb3ehGN7rRjW50oxvd6EY3utGNbnSjG93oRje60Y2pGbxQX7R37+4enZshsAzAQFID0IMABJGABIAUARevTpAYX0cJJOlBOXkIgAtvhwgx3A/b+JUCBAGEKBAMNyuVn0kAHERPQoIIQSBceGu4IgACSfsCQS2lFuApeT+/ectW3y2nbnQGwIydO3fONo27go4rCcyQ7IFsAQzDbnRhk6X/MWxTpmsjwjYHonmIe5jxpyDjRiXKexQ+kiAhBQOS7AFAY2pASCAoAPACyLLlozHylMKPkb5W+bt68nII33Ma4Al4f/+mzVtOdEurG/9sDcCePbtXOvJqAXMgW0e0JImwKUeAEykJ8Ga7xa3HsmODAXDld3GDp10sIG5++/tkNNJeJbM3kHc/oynIny/IA2ggeJAufm4LoEG4Thf9lDZ5CeFzFL0FUJCT10BQC+B+CHdv2rR51C2zbvyzMAC7d+2ac417Ih0vAXDK0fl4TnuQniJBRHcbCBss7s/g4zshuOMIYUBrNjajjyCUU1rmdx5Qo2BAqnNc2YUInkL0MQiijZuaAhS/X8FzCNYibmx78qe/uTyDPlxBtEj0UgOvnqAGwL0t9MUtGzd3IUI3HrkGYPee3Vc64vHOuRbkiKCcow9HNL0cW0YXOwbsFNhGd9zFHZk3a9y4Htnvh4u/UP63ypZM7gNKrMB4ckPmFckqgHDBCSFjwJAD/gwrxFgjXKs0HkKkjxLAGAdEzEEQRAkD730PkhfxyU0bNh3vllw3HlEGYMetn2B/MHgyyEsdOYJznuEU9nRso9vvy2nOsI/DNvJMHgBBiATljVeQNxpNCCBYkI6OgsTKkCTnILju4XWC4MKezoChzx4G4CE1IjzDfo/hBpoYPSjCh8EgJavCYiWg6C2IEnwjoSepJ4nyflbS5zdt2vyFbtl14xFhAG7dcYvr9Zq1jWtmQA6do0jXuojagxwFF9u3BL0KwJcOzgjHh1fFHS8q/jQfw/mNLsb46aAWARdwPvkMDAYg0Cmg+wnAywc809eUSSBAn0B+CzREc+EAme+trAwUshHRmOTPdfIRpYAcpDkJTtCx0XD0qS1btqpbft1YsgZgxy0fb5r+zFrn2HfOiXRtAPyomMoDgVE5L9UCAQqMcXrclUo7mypRtvHGEx4IJwfAM4bpwV6EzScVBz3Ag6q2aHLco3GIaYIC9mf/XwkhLA6+uQiDVwaIIGMDRMwSmrjAAaJXfs1s8AQ0EPy8Wn9w4+Ytw24JdmPJGYCdu25h0/RWE27GOYLOtSQ84TwdfHTdQXIEMJyegE+7zzgC4dSMmy+66L52ruPWDfu1RvxD6s5FTyDGDEwQg4EDwpZUcdhRQouc4hNBp/Cq9IKcMRAQEcLyfha/ggS8wqZPL3AhIQlKHgT6khoBjbz64Xt054YbNs13y7AbF2u4h/OmxjWPI7nSNU3r6IYO9A5uRLINwB5GENoYp7cEPEiB8gw7pI1nuRAwdDE44j7uHyHG4lR8TzAibTQAHpCPwXwb4nsKgo8JBg/IE/TB84BXuIY24xPB+MTPlaI30sbv8HHzKhouHyOJNh7/8T4YPkdqpfh70hNoCbTx960jRXAIunmCpx3daToOAV5/277bVnXLsBtLxgPYs3fXHIDrHZ2apjkJEiRHDAdp2jCKcJ8imiYU5N/HkN8jOvPFBYBjxQmo/jQgPl38kS/AXvQgUEXqKjSB/GHWg8geRnw5U3iSvkRljnIawf6wJCUoQY7FmpDJFZJiHKQmAoUu4gGNWj8n4XMbN268t1uO3ZhqA7Bzx61sBv11DhiQTo1rTkVKjSfRxv3pY0jNiP4r7oO43Z2Ma17YfTFPH6MDGZiNMZxQSrExEwCzUSGDR8CUCwwbLRONkjGyxsSZEITBE2AxIIID6EOcIBcyFtZwGDRTivca358oyPk6lMIFF++BCi6DA9TzXrOQ7t6wYeOXuyXZjQs5el/Ti3vuUQTm6HjaBWy+jRvOI6fX02YHYpot7WDVYJr5k3EXFdp9Yu0o/yDQB4DC0mFB+CLqV85qJUqxMn4QOb8xZZDO8RTzM6XvkUnJQvqt4BOBAchEJqYrd0z7O3k3Ac9MmIPLCKEKhEk4B8CLo8bppJd/9O233zbnpc9u3LCpyxB0Y7owgL27d1LAYwXMh/VOKf+ZXWSJjEQfZjqOOHb6LvJCiMLzd3F7M1uR4r1HK8LEHWDE91mCh+wCVE6/jMcvWWY/WYKQeBlMbIWUIAxfgIRVCGTmCUUeoiJUSCL4A+VyTWaQMX/B4JGQAaeIeIfAFaRbvfe2vU23NLsxVQbAA5c51zQ95zzJlnQi0QbXHy3BlozgXljULSMAFxF2j+IpFKAvvC6BgT76x6PwHnmQEaRTGwHFALYJnpIHMBLkI9TexnSjjy59S8hH5D6BfgGTSAAe0ApKf0+AYKv4XQS8CB9rALwicBj9BU+wlQqgKQVQMH5f+H2ohWgBjIg4Z4Sn6OkwIt3IOXeyaZp5kq5xzdp9t+8bdMuzG1NjABz5KADD4E8zHvTlCIz/R5dO9cCGzeV7loqb/oh1tTFCiCdt8LSjm84C1JGsvAaWn7FgcfHYFkucb6oLc0Yvox+k+Wr72uJHBA+B0SshY3khIZLjbgKyD2EcEZaSRtCEPymwCfGJAwHv6Np4p2v23b5vRbdEu3HRDcDuXTsI52bp6Ai2wbVlqxgPxxWeYuOE+ANUjOyVgEDGgnrF3eBz+FCof0oxNErRjc9bJZzIyaX3KbaXi9h8uDZFk+DN5/j4qRGkT46NZLySaCCYU4SKKcXAT4j3QfoY0fgYCaWfI80HkeclXU9OhUbzErykVCgVfu7pMIJzI5ILIJ54+x37LumWaTcurgdAN+PCOejDeRjy4C66wTEPH9zfmENPiz+A95EgH2G2QBoKUTQVpT0CaOYt1zb+1DN/VUQAQiVxJBwx0PoUcTgVd9/W8AWqoAKSH5A9LfIKJENGRCYHpn9Vv0kOSo7vM/ifOAv2NuLf5KMP4A0TObImcyZFDhg5snV0QwlP3Hf7vkd3S7UbF80A0HFV9G1lvV5ktF9hB6ZoIBEBQMubS2g5JLiM/ScMLr6v3jZKsYAKEdDHrEB2/42/XX7ErPMRHW0yyQH4rA10ZupxOrWREUzkuCWh/QIo2sJk0ACc2bmXCSugLGAU5xL08V7C9QUvIngYjnIMtRUkH33HHbc/Zd/+21y3ZLtxwQ2AI1cCHAFOiiAWQB8JtwmODxtCaRNJcX9HbR1ziBJJWwtMFF3ARMolv5dOeVQHaXHZk25X1AOIMl9JYiif4JT5UCClCQVzWsfQIpUxpP9TCkmi5gByiUEpMrLJDUExfZhu10cvgxVJKVunpH8gF0IHz5wd4Mg5DkkOQc42aNbdefDgXLdsu3FhPQCyB0chE3uSC0/l/UxLwkmZQabAXCWrVkF2KRPnc5lwofqWWrtyVpczPUGByL5Bxh+ZBMEKxghCcDkqyJ9UEf0KLCfrGaQvUxYeK4ikOwOXSiwnPADJpYxpLnosM5U2P2p/Ro4MhoAcOpdo1qD8aN3+/bdffvv+OwgA+27fx24Zd+M8YwBoaMPycJz55OZnFC2e9RmDB12utsvUv3hgK/nbKYMu43fbjcWckocF2vNuK+qdyaQoFx0pCH/EQEZISYqxst7CAgjIZH4LaL+r/nsCEev0QeE0JKISad+tIFCamY4FQGAiL8lOKSOwSOdGdPQAFzzwFAc95fb9d/SIbv934+GPh2QC7t6zO3m8Q3qIDiNktlwE3UifF3gW76AA72OdbHCxS2meT1RcGi5+LgxIJiZQcUsVX3xPoNGKIZdPViF8KsArWn3eyvsWoZ+oQ+BZaMc5eQGJcvRRtRjpWmUUi7IOSJvJw4Xa7OMXpcrEyFWM+zsVGuUSCAQqcy4cIEQ6ZvySzgEjwbWi2MANAcw4aK0c7wFwX7eUu3GePIAsjeEiCY4FxIp7Np+ygDOndxLPYcnKp7SeQwUSkgRdDJNTMJFi9wTohRg8FP+QZFEJsiTgwucrbD4wZNlBc1pnCWIXMcNyeucLtxTFFMCkqEM0XMBxb4HFz4805Pgd8U8DY8LF37h8/eH3uQQ6SKEnPUUXDC4xjO958h3779iwf//+qw7eeWe/W9KTG7t373zEu1cPeYN7du9ir9+7HuQC6eTIBToons4tQMcg41Xk84oKRzr3Ul7eCSnVF3BBF0/icj3M+YEi6RVLe1KMrhy82wM5FOMIvmiIFOc+avozC4xFF4WQM7UBiXMAIxXAxcIg1d+TpqBHpP2HU1suF0Ul1yRWLrKWJGuMJqHLXkSRNEGoMqRCNSERqgnlAPRADCRJXgMADcFTgj8GcT6qJEmQHFyubFAWL8xQSFFET20TILpAaqC8RIo2fFFOprAwKBDomLEQNM55qt0oDyvoJSZtGCPnGGEfl4tHpPQo7UwqlX4kk1kMf8KInI8KrS6twRKDIclTF1W3olEXcRkXod0I2lCSpznQcvlYcSlzMBcmDrm6LZ9NLmycdJ+U4F2RqfSOHLXetxs2bBpOjQHYGwzAOoELzhEkhyTbSMgfpZ1OoYWDi069PARX6nWSih8henDRHqr+gqzgW2qHaNg/sDp+GFMZK8o9pdoPVudXtbHJaKDR+kjee9ILLZ9rtQrj5+cCBJ+VhXI9EUwDg0IUoHI4g1j5FI2BoFLeTHNhTNWMQXQkXmRQNHYI6Zkm3gJ9VCMq1Q8AHFqkKgihNTJmUQI96iOafVHiGjmC3hAiaB6WCkBbYawuZIbiZg2U7mR4rRktWo1KIo9MCDBZ5ZzLJitYrFSctSoWZA7R7FpP816IqX6sSCXVhMfdilFOc4Wn6qJCjUPhmOTnZ9LFNIp3JYgdryZ1dPI+V8EKcJIfSTgG6aiAo5s2nr/isIfEABR9VabJih09wuLJsH7SzY9HCA3bt1TvltfXal3IuzPutyQQmsvykUp9mc9/VTCebA4R9WJIykLW6JheBCw+QU4RjuN9pSipqIWPFTaFpehI+Lg66PPxoHRshHmjFR8GUtVkDBS8gldiVmMojAgHWvA0Yo2jrahMZ6R3RBu+S55lFiSSLhzSKfWa2Uwxw+MymYlySNkdZeoymb2A6LkpBoeB3FTSKVKYgvABNBkXY2VjSFloGfmIjb2cvC3tIvMxkmyQfbiiMb1B3ilguskBMRadwSWK+FXKVeVTKIWKiegWSs0K9TtnnSLhPXpzKnFbCnjpmE0UnBGrKoJTDnTOINHeh8u8RMKl9HK37dt7n6B7N23YPH/BDUBwxCKn3qWEOItufgTsxHKCxure3J0nQt9aZPtLux7DzMtYXMr/+dSlJ/zK57M6a3ZqfEOq8gaSSYrLI1GKaVsKlTcoMQ1otAvNobHIe7E2wCv5wkreQlALKM5rFhMkalfIM3vgbCllzKV0TqOPGGG1MUQ4Ci1BF7eld6H7ipU7iTs6lje74ILGDR69GXpj0JVc+LgjirdFpQvz2dYLPvsuMZORxWBiXGeiAA84l2VTsp/klC7T1Hn4EiM4u4aSIbZAcHSWglcRcz7e0MQSxuKZrjfcdzp9Qls60rsQpgAuF3pVPSmiBBzhooEpKpU5mxMnzxc8ySXLllrWEdSIjLEBIXk5B+fhwvdHjvwKyF+2d9+eByF8adPGzQsXDgPYu5v9Xu86EBEDcAtgEPh0odItH2flsEiRU0DgaaQ9oqmOHXnSHqw2gr22ljlVyOqF9tw3mj+pD6AydoAxpCBpd2dvIoOhhjkc4Yl4Mo/PU7xo+x6SzkeRktzuMK5LZaWjaApUORJFyajMnAwJ0ngLZh2HUKGwKaKeqUv90NJpHjZ6kViP1+ajdrkKUJnxjCKkbLouKYYIWYrFEihUhQ72+ZRUqbW0KnBACm2Kgc6hWcKYkwGPNpCOkvfWjtpYjtazAYrMq8zJy2qCze1UGrG1k0dTbz6OkhvPRCmEgYn6YPmqroS48btSAZyyfEbWk442hZIaeTlBDbw+v3HT5iMXJguggoXnGRBdcrOsT5M671hkCbaDTvTKYBdv5vGIi+c1ZvLTQ7bAvux5ZAvxTJyXHnvKLiTkPvCCYV6bFryLi9WZ3AXNQjjTImDefsqZRhqFcNoEQ056KFtLB8uuzqVUJcehTGMwCirMJKyUk1DUSClso9J7QbnUMvm7yqmIRESKu4wWmPMqLd2SDc3RWKgKDdMZQNCS3iCqwiibFUoZnNJ6KVs9ht+ZfEviQkSvIIBz+X3O0sjt5ygxVMI1qCyz/ECTYht9pGL7dE8o4jYo9xs5GWEZ+pz6KZMdFxjzJcZ0jifHANdY8GbFc1xU0kpaGyUNlQpfnWfjFPG3x992296rJ5GleGgQcO9u9nq960iepnM+9PYLXifC3w27Lx/z6WTx2YCgap+RnEuJMRFgkPvsLwRX16n2wC2g4sfOnrGSYRTAqnABWLgK9j2ySLLVASzyYaoUAcev1SqejANbWa4kpzilM11rDVcVJIsy9y2MMYyApLxM287YAJ7x+rPXbugaBgjPRpyeNqA/Y/YjgzE0p6diqBy9mtS+Ecxqz6nnc86PhrlSWT+WTiLjbXnz3Ku8TFRZUvaceIbVkIkfcNEzZXbVU8EHUZirxgNiCWGS5TA9IHIkWdBkxxg/BM8pb4fgSzmV5AMjBuFKEqSA1zGOjImLVAorB6nx8j0A8977T23auLk9bx5ACKSqOJdZYqsgc8g6XEX2BoYtHBe5DLIoAGjKcyhGn5WeHqpiXRuGp0PNcgU5lg8wN8kSgWis6Mi4wTQnNgqlqbD46cicxleFKsazs7gXMExEc+1SMe3WxWQ6A+2qTZs/Q6nKjgGtmYheDVwG2g0XwqcbcXTVvRXGYXFtWK1PlJLI2s/KQWwWfrIki3QSkyrUB3OSRuYDYVq/RLA5FUYxEkyiw8bsH+XXl5MnEzJYeyERI1D68CQhSdalY3B5NctVMH6qdMvejMk8GdcSWR3LWNYsMJubXyB7TsXC5GcQNwnJiscSC9nKvYUGPB7ggOC1t+3d5c6bAfDe05KBKjY9s2E1LisLQDseOsusD6be22Zvqdq4NE64qTMsGiTiWGsuFNTOWoOq2J/Z/kQVrsrJd7JIwthnZrQyNh0Xx8+h/HQFahw5JGqNEOb0EHNDQSdI9ak8fvhUnycUYnXQTIgcSaRqrGJeEkPSZ5dfHFNoii6xcWdLbj3iIcHFTX/3KLUMyWbEWpHcXyGrP5mH4mPsa9zh1A8ifU9AOgwU4o3brmQb43/RrcznrC8bNl+EN0WjyqxxmYrQEqb5fC8sRtCksHz6nc06FSm5SicjYcCpRD1mbFLlZypMC2FINLY+ejxKRFoWQ+0JtnThPxB90V27d+/ehxUO9M7SRrjScrMo2oRckQznRlWr77E8uDdcW6vOa5Zp4slStL/MS1+FFpxkt2nARdh2oTDin+ZRCbYJWUEs6vIgGjcNRdgDZxYqL6G4V3YYk/+br1UGsZRVPI5ERwXKTSmljEvbK/NZqgSkzyyCUnhgaETyJrccW54lfZYUWslbeKzwIJRvoHRqVqRzZ0+9Lbms1LwFMkgmslvNJOgCb/LrPnkFinBRuMUEQmbnzyhLxb6RxXjBpCoJyIcAhMo4ni3yrtvRl4SzQiUo6x6zXou4JkW5NvKcEiegMiWWGhXmT4lS3iKpRpZYUibTEbUi8hL2FtliCZ1crGt3zjV9yS+T9HgAn5+4B8CialNsZlbol/MlvHZjfFqGfRySMWERF1sad0MFz5QGoXRK6H8JFkvEYZAcZEUPQxxhiVO/Cs6RKm9oTuai1smqrsASOJhJXcxmLIkPowS82beoSAmZlLMoeYG0DTL2kzzf6D+XLAfrOCfKrcgQGUIKzFhq2rpLUYbRRutqGQY1x4wbCgeCORVQCyWwzm0UbkKeVlmpiPBjb61/5mzBOsx1QGriu8z5tjC/UXog69hVBj9gAl8J67NXQMxYZGni1OAimfzX+LexgnyNj+GYtOVgCtvNPpMJic2DG4PtmDT2k86FB3jl3tv2rpy8AXBJX0M+wSiF0pZ3TabQlj5c2e76JBacu+1kYZFC8jSPxmfPDyawy901KMs+Kw6EefTK0bJ9MKpzaap0BcxmVEX9T3oBFcKQcuR1rogGVq8+0aQQfGUTLDRPmbPYMwsNpEVkCgwXoSEWMUwnDRKApph3kdIJZpdkxahWpbOQiQyl5MHLpvUKVymh9b66WaUMgYQqVxhJZKpAU+U/i4ir9bIV5NOSK5+12Ep8nrMG4T97D8misrSn9CxGPkq6I4ZA1njVz7DY20xIF01HyKJkY4hPaUk4qjzNbD6Vnivz9dLD9NTI2QiX+bDelWzBggOHzvGUI568Z8/Xhgc85ItlKIFFr4/Gxa4CfhOnqsL/xsoE66QArW1jxsmN41+vV9uXRxgrFY5RmzPZ4VqTU9VDKUeWq7k+KSXMUj9A1diyKuJAzO9nc+QtJdWiY1Vf4ZKCFkz+WUYKPbUiS1pmrMMR5SkSvTm7K4ApOtJiUC2G0TRDvVCZ9BMt18oXVFco8SxNxJIvOV8PWQXX+f2VVhRRMr3uDLNrNlPlfBqJGSPmaDQYbZxpk5FZzy0DI6yaSRVMO0jf5auXidgsLxzVRi3pEyNLJ1aPVdmgKenHGM+HRjcjzaEPKtLByKZdEdfYCMAwzlNDuisnzANQhu8SQ4QGxk+uWp7VnIk2uv60DA1WCj3Km7wkRqOL5dJ6Sfi4RBdDTVcStMneJ/45XJYrTj8riHvOCks5fWbdRFd5e4Xkkd7rzpA+dWbJOhT411l8IHqlrmRBci2AkzVQZU5LxiDek/I9lagp3TNys4a8a9IcubJrDOSY8RoucvcV6juT6+TMekxVnI5541iCUu7gkoBsGKzGJG6Yn12V+CkNFdKzSPusyqSoTpamz6iS/SrVm7D0lEqEOge25X3m6bt0Tyk5b6WjU0eqcizJfnd4fz66Y8vsOlx1KgcMCdV0KVZLwoS/LF9Ni40HARkQV+76GvgBD00FdoVTIw85Z/Dw8PB9JLhGGqUWF87lpjwodVeZLZnKS2wjn+yDsoB7tslfri9T5ZwZnnp5oD4jX6YLcPZ9bY41WuMM+FB1xaGRMTtDmhkWCioHaE68J1xNBghgwZpUBQz2o32FK1md0sSNDqKpgu2plJMAMe0uJs0BlxoVxhssumW21Cm/N28tW7QpVEwCW3NZnpmVS42lUoZvXTiJMErRJn5UAUdgCshS5l1G802wVVYFD2VpAFUniDQGWhtgO3JUEiKJaoEqtaKnye+zwnsRKX2hf2UNLGZQEUWKjotZLEKddaWpsA1rKBUfueQRxmN65Ohm2HA5gOOTCQF8W8ocrR9UFd/RnYFYU3L/BfIkGE6zlOlVLqywJ3shH1RofHIUQ/EESDbG+rogS4hGhc7vUh2ICvHGRYfLjd3/mLIPnMJ/RSVUxsKXpLtL/l98rZMhC5VSl0TdS4n4cbaB1S00rmtRULQ2IosqY1yeNbEtcyazaJCaE8v45nSolUuZGp6NlUGbPK8SAb8KzApdtESzhSanrAtHmHKe/Kl0NitSMSlo3MZiwWObBlS9JmLbhjGBB8OrlM48f3VpakogOlk6dHzmsc6IhgJCWg8utcdQVsVi9uqiMlXJqcmNYYyWwJHMfeJtRlglc6QEy0gM7xgBeNTkQMCkv88CURpCLAs9PAFg2d93GdWXdctSVUeCU9FEO+8SsBvLVmk3WbwQF0/TWAKraqOadBVzARgirTdwNKPbhcYjm9VGpblZkzY0lB+iy9FpUDN2keXnbBbCXCujLoGLUuTW0DjrtkdojEriZYmKHO8lGgSnEp44w/SxrwuMG6kpBiO4zrI9yhS6E5vQILkslPnMmIFxYkbLTciUWVNOYyV+Riw9MN4S5J9LPIOhzxLIzNfmVOpGLQksPlva4JuWVqbwHFws3nLlepTCu/T56cxJ0szOIJ4ueg5mbsvcBcKakn8bmSRyiq+p5rhwZVwpAIjXVdZS4nYzJHvlVB8KsvwX5mstqGdhtZfG1oRLXIIVZxsGPDQPIDvHCl2Ag6vpi2pPYdDK5FZhPPnoxrgkixVTZA0UG4NUm6dqvu3zplZexL647qnu3x6eYk0HqApTaNE1gU38OgfJawwXN7xUcowiEJNazqt0CipeGovWoarjWZaWXDz2zGUtpCslgRKxot9aQnTpgJS0ONL0NZkDXeDXRGKzzQ2dxWJhKau5OjeXqrhU3hdz4KoqfEL5cNbUMBG/cd6TRIY3WVzZSkxTZJVNSaLKukXw4LggYq5uEsfoUhXfpESEJq0qlSLwinuDumB1rITUFqKZ6i2X02CixvrJw6ZoK3C43LjLxV3KIGxNlmeGEhEEeQAIQ5F9BzfjyAZJr+OcMIC65qXQ3jMFnOVSctGWWYrxJkPtJJyl/YloSq2W3Fj4oGAlVfG3ImgmG3+coUJtPFEW1XZMV6IUpNKAhZHH7rNIgaV42zA/R5+5dNBC3XGJeOPCG4fXEN1zo5KaG6CKeJvNayolpsbtm890uKqCQVnHkHWhW7jxWB0sU2xXleC6XN5ciZtk8RAbwLKUaBt+kyrRhUzVENQG3RwjyEJzzACNbJ/pWEfvS2GVj56YIUxTGeUjq7JM1NX+MPXh5oRCpAAClcikKqIVK655LKoYy7OvCScAACAASURBVEQlVriL5X2ugPnMekoRSLWMdtFUVaiqn2ajbL1Nw4pSr5nNclSfdIRbBuDoORsAFYG6sJKyzm8WviyFNiWdZarxwuJgOPFdSahZpQgZpNzGZPImQR0kxZQooyrMJCE9O4eKjkiUogz4sLBQbLLqtUkFRJNM7DafsEfWOcUKRU9/+Ch6kD65qb2ZihwZiz1iBkU5x0jLfFKWChJjc1XK5zomxsqbVA3s7bkQLbVT7M/Gca5lwSoC1uVt/j6j1a4m0LAyVrIlPbSZX+WKIAVgxhUEMdmUhMvk79fitLNAok3AZeIMBpfcqkLR4nCsHJVMjErIoC8dGS1LPZWnK68VlsIfsfSeCvJsBowtW7o6b+B88CxLVltjJWpFOScl2Hws4G5t2tQwk7zR1OYi1ZrgeAqQXI+zEzEA4f5jTshlCLiNaqC2z14BgpQhP/ugGnPCMajTQD6o9+b0oi0PlthackyJ9ZToyd642bbYz8cTP1JXaWNv6y2kdekQe40VCq+KKxrSUF4mLx7nrk3vpzDyWSs1uK0C26g4xTo1j5EPMlsJXHSCRhlX8LJOKyPjuk3xLFO9f5ZZj/Pmc22Wj1SWXFeQt1hU+knSYypSHj43eA8+FQu5IQsclXqJeP2QN8zWjCG0CHgEoqCLy+SfsEJbZBUNIeshZFcEbchsFLanTDVW1iHK6yVV0EUnKWuiEAqaEo0KySnIm0mL6XXIlSBJ/iw+w2T9w7xHw+IwRhWOHp3LNAGlMqXEcM74lmfJh7t4nKn8LHgPqc4tlhbaug9j8bLz4HI2nWi952AyGADGq0KRTnOf+ZmluMIUeOdJaiQ5AYNcwhuW1YIHhgJaCqO87I3lMbeYZYBsoz5VJa0qYp4xnSPTgyh5SLAqkEy1PSbbSI4rcZhMElxOeVYOYT4Exihjig1SEzaS/OTkaOT2gqFZ+GLYxqWoWREtivEGax+WWVUk3oUvMoQyIWpVd0Gbc7PV0KGDoUqxQUo9maIByXRySDCx0XO1KhEeZoWk1HF1uFkSZxbxKsg/x64wIflZby0TUROlwhVdlOQimNDPZNmUiBW2BrNSLvOZ9GaLPGNTu3JdJSg0lSlCFfBankgGcDkA1UsAdLyhUWlDBy0C2HxQHk3CL6ScFPW6gm2wSZpzxADo7NEeP5g+uXhk0rwSqABDEuop3FBfUhMklviAgGOObh6N2iiBCQlYvWaNAODQoYNcs2atDh8+RAlYu3btVxVDPHDgAK9bd915E0tcSuPO/ft5/fXXT9VcHLjzTq67bvLP5+DBA1x3gZ/7oYN3cs3a8J2HDh7kmrguDx08wDVr11XXcujQAa5Zs06H7zrE1deuyb+76/BBXrt6rQ4fPsjVq8P7Dx8+xNWr1+jwXYdcOOJ8A3AG0CUAVsb4c2hUtdvI9vAh5qvwpdhdy/vQtduf1Rw9dDlw28Kw21gDqyTFlBJrgouuGQkzAmYIPujAu3rO3UnHe5xzJ0H5qKWbwnMcPnyo4j2Od9s701i3bt2S3/y3799PALjjjv3npOziMX1TcT42PwCsXXvhn3va/OHva83fF1/LmjXrZKEOm85KvkBZ7+Enq69d4+no16xet+DojjvnvkjXHIDj5wDNy/teLl5HYRdmxzzX5hb1DJ3lLD3kwrvttj1smt5aOo4YOvwOUx1z5Os7Qs6HlFojYEDyCIl7HZuRsghucFWvXb1ah+86zFhwmUrLKCXETVlGZt2663Tg4AF6X6qQu1O/G1Ph4Ry4s/JEDh68k2uNoTh46ABpE42lzUSVkjFxQoj8o5ppkjK+9imrdejQgVkBVwBYlvpxqDS1lRLeIsF79AXfeO+Pb7hh4+fP2QDs27eXzrm1dBw6utiwEoFTU/TSBxBmAZwm+Tnn3AIgXGtcoMOHD1FQD+AAUj/yABZybl8YxeoIb6rSvBew/rrrtP+OOwkC11/fGYBuTJkxuHM/1123OAQ7ePBOZ7RtAtcl7G/GNGEokxcYmmjAA6G6b/XqNd5+1l2fPEzfarlH+9hIUA4HpnPDqP4ewRrfeK8Z7/3xDRs2fmYCHsBeNr1mnSNHYfM7H7T6KMk3AhsKy0F8sde4+7xKpiPQPfwyCHMM5JQkkzyKueyhD1evjLIGvTafUKYE19wwZTFuN7rxT3kHKmVHNCqSLur/JHary/lVoiegFzNCjuSQ4HGCIxL+2tXhMD186EDTCldCWhHLr1rTb5fyarz8QF7Hb7hhw0MagLMgAqWsHmVKQVysm5kFNKBzn16zZu3RAoQcouCXyWNl9P+HEOZj2rcNtdeShJEKvS8ZgNw9SRA2rF/fbfxuLKmRQoP9d+7PwvAqreBS0VTgrYQEiYsWo0VkzcL7nicvBzBy4KnDhw6dXL1mjQcb76h75P1I0qWAekVjAV75EJWfCAjYZpZh8hjUAOgJ6pHokzhsN//Bgwdm5dtHy2sVyAUIpwDOC1gANR+MgYYQhnHft5I8vHzK3bWqC7270Y2lNu64cz8h4Lp110myMjWxnX1I94W1H1q1jSQMFQ7LBdCdBniCoPfSMi//6IOHDswRHmtWr/Fr1667lw4PSKC8nKQGXqCl7J7FeEgPoCltIlI7MAfIwatBz31y7ep1Jw8fPkR5wUOXeWklgHkCC4jKNIRGUsZFE6FEPub6iShgp8Kt3XBDd/J3YwkPL1wfvddMR5TVIE9HMAXJJeVnKZf4JkrxKCJ9jaRHi5w/ePDAvWvXrvMS74vkskcDaEuXPcnIsJ9jCJD7VAsK7APnoR7Ie9atXnsi3KCcpMsB9QAcI+ljkn8EQN7LG6KPN9qTudR/ww3XVxe857Y7uHljZwS6sTTH+vXrdfsdd/CG9eu1/vqwjvffcUcgc5GFqhWORW9ri2NifxQ8dLkYGjiCC/CY8dBVBw8e+PLatevaAwfv/AqEWUkrSPYANKWqbAIhQEYKA7GePtAuT/acuy8AHgf6vtXjYi3VMIISo3j6ewGtKcrwkVnufWhPVbWO2bvvjuy2dJu/G0t90CTj999xR5E59hVHM2XwI8GxSIlFYLyN3nNLYCTiFAC03j/2wIE7++tC6vGeVKeASmVhAgbAlxpWyqsh0Bf0hdVr1urggQONpCtD8YJaAKMYz3iFf/vENleOgDy8Dwq4N6xfL0nYsD4g/Js2dJu+G48gL+CGG/J6vn79eq1fv16CcP311wfaS9gWCa9T6oTgFVPhude8YjFoEgrFqUiYufLggTt7jhyKvFdRI0Mca6VzTh6Aj/GHxyygGUAPODbDgwfvdB7+MlAthNMQhxJGXvJKdyZ5L4WfQT501AiNNVIgsLGL9bvxzwka8GVfrb/+hrAzELqByieDkBq9sA3Vr/Qg4yulGO+fALEg4FEgeg68P26xZZL6yjqu54oBOBdjfDQA5RzvjpmNSyD0SQ6Dq19EC7Jwn1E4UW750QF83fjnOzZuuCEDg7ffsY+x3YpSO7NY5e5KBRkg+SBkFOoFfaiyjccotdx7XObI+yDcC+hqir5uO3cOBkC+BZwL5ZXivfBoRfUBzIA8rRAltKmlkUxv+VhKFa1cYP7fYNyiiz3e8J7PuM8fWT648tKT8z/73Cd2RqkbF2xsiPtg3+37WGRFGRsesTXWICg8KYnHsAk9OhBNB4aCBl6YheOD8rq66MNPwgBkzVH26HgkxBlYQaKFQqfgCPJ508kri3+FSxU3TNHGT+NLJ+Z6H/74sndfe+Xg3+NhtFXqRjcmMXKVfCnwz20Z47b3hFzQSAn6CqECXC3AYaTWLyc5InRc4HJmPYZzxAByapEcOeeOiZwD1QfZmoryNpYglcaRCJs/8nm197bbaVH+aRifuH3u+i/7wbfe8sXBh7e+5nOXdUuxGxfeE9ggyWPDDRuUxeWQwDKYRrvwKA2vbMq8DfgABgJmAXck6XZNxADklD38EUh9r5aB1quhvDygUXQR2sjs81L8r7QNx6aNN2jaUP57jzYvawfOzQ/6G+4/tur3X/CW44NuSXbjwuMCGwIU4Es3h9xuKaThIqiOCKbTCxqFFLuGCKS7oaQBQiYupeHP3QB4nzVJThZpoyCTlFplI183q2rkLLYaDdbuvfumxgN44ZvvmfnKQvNtCDXOuLe3/Fv+8n/pTd1y7MbFNASp9WXgzUZ9Stnus5FFbHopMnAEPIR+9NsXzpZGfxYhgCCoATmPpAsouMJViCq1RpgvWTAfKQ3JX9myacPUeACHPsmnnoJ7UuzyAvYcTs4se9l1Lzv6sm4pduOiGYEbNmjDDRu0YcOG3BqjiKdRtqctTQfmGDGMAPRBjc4SAzwLHkBoEzfvyGEsV/SgRkgFgSE2yXn/7BFEAbdNGzdoy8YNUwcA3nN87iUc9HJ7NQ/AN46fHc79t6tfevybu6XYjYs95D1uWL8+CO8oUoQqUl34IaURqGEQ72MABqvuBedgAJIQsHKXndDtR7YhrFHaj7gBQ05wOjNrT/+p+1c9qP63naGzJTnT9I9j5g+3/PjJ67sl2I2LagAg3LbvNkaPOjXUKaqjst0sKVBt8NHlzrYa0J3NRUQnn5Gk5MN3KlJ+i4SfxEz2A4TNU3jyA8CDx3rPWuj1rzA3WXpqEBwOmks/9ZXee57yKl3ZLcNuXKyxacMmbdywUSqtZ3zYfdHjLmdzAArBNvKLR6mK8JwNQGApcyTTiwdK8X1ueJvoylkOe1pZNT/6rnt45PTsC9lzhKp2SzH/QnjRLcz2rzs5P/+O73v76f73v+Uou+XYjYs2vOCLxEfs5pJLB0rnRqkNNTjBVkzEAKSGfCpNr2JnAkWsMvcASH2Rkds6TeH4650rLj2O5hkoPetTg4HcwTK1mziO/jf/1d/zje98+SUdS7AbF21s3LhRmzZtLKoiKhWDzOX1VOlOkJqwTMAA5A7LEeULwX8oUQyevo+kX+WyQU2xB3DspPvXpx0vNZ2wcp+ouscz4B3dUdf799e98vTLu2XYjYs59uzdy6wslLm2vuQGC3MA4tnrgj+0BxAaJnuElq5U3cwUuVE5kwSBx5ZNGzVNKT87Thz339c0pQ1B1YwMBjuNPY3Rc+7TpwdvfsJLTz6rW4bduFhj86ZN2rRxU2TW5wZHUiyzpYpMuMsLeBIGwMs4+OXnspzFCAxs3LhBmzdunFp3+Wk/9uBjjqP/dI27OKpbeqV8R2Qz0Q3YnNLg99e/4uQ13VLsxkUdycnP/j4iYbAsZ58TdhMwAD61/FVU+s403yThGfbMpg0bpj5OfvB4718v9HvLSdOeIcVSyXsyWiqMndxE8NRM86i75wd//rhXHLuqW4XduFiDEDZu2Cgscv1LGUEhFE8CA/C5QXjaDFHbPDrRCnSlvbfdxj17b5tatPy37xrxyELvxU3DRTNT+hHXyEn1QgLz/ebahfm533/hb/uuZqAbF8kBIPbctteVXrgwqzZBWSQnJgnGxExmkfCP/GRfGuJq08aNOlvk8aIYgJtPXXPSNdvhMNYZHlbzvOIEMPejTukW4JRrnvGXH1/41W4pduNiYQGbN24K+zF2gi61Q0Fi1CTkJ4ABhE3P8h3ILEAqMBAS5r950/SGAXc/0HtR23cDlN6msWMbZKD/lFpR1jSItxq9BKKBO87By1e/cuHfdcuxGxdj7Nmzh0U5LJfkBeGgzMObEBW4UvmypJlYmCyB097A49++9WT/aNu8MDRiijdV+rPabvDMsQ0LTGBvT4Rcj/zS6eatj3/JiWd0y7EbF9wL2LxZkROcsLm0mkM2LnoBkzEAwaAwH/qRDZATAJj+Fj6fOqSN803zZCHzkxalSenHQq0SFnAsZKAn4AeuN4/BH97w6pPXPPfXTnRMwW5c0OFhK4JZtqry0p6MB0CXIfNICkwJfxbMccon6/5j/HfssQkHOBKqSeu7ZMNZn/apIrP8KBUQETg9aK784sn+ew5+EZd2S7IbF3bIHFOZD5R+oYk1BsnNC2qR0YIDQNiyadPU2oBvfsPRZcda952xrpoGqbSukym4Br4qmplwgAgSeJLtoNl8733u5v/rf45ctyi7caHGlk1bLPmPGchSrAQ4y895aAPgPSTvM+YopeYESfYbu/funVoX+FOfcf9ivhk8Ju3ukubPKdRkR1PnohzUWFJg/rkv5cMAMCL5YH/2O//gwwtv6JZlNy6oD6BSJWibCVFnKQaAsxQFzdBYOPZdhBrIGBZoimOA4wv9l7IpBjKXSYlUOtGR/3TlZdnKpR2fZkLGOjByIvggZ167+lUL390ty25ciLFr926m4jWzAZm91MkVA5WdH7hx9FUvMwJbN09nCPC0nzn6qBPqPUsu4yUoJKbS81ClX1tdDVSRLKppRk7ApOrIvuM98807rn75/Nd3y7Mb53ts3bIlyYGVdamg3x2zgpMxAEHvO597HqXWiEn7a9fuPVMZAnzl/sG3jHruEgANCMHBcCbz6e6rfW+JlEQJEMy+jxIMsJ/lAdf23czxBffOJ72yowt34zx7ALt204dNSGQJHkSbQGJS1YBN2Ba+sGaMAxw3ytYtm6fSAzg2dC9mk/HS0FSJyMaLQROASb5gPOdvXP+iGGSdB5U0YXrvQr/3pJPzg9//jpvbji7cjfPnAWzdom1bthgsLjQDNG7qZLIAQYEwFgLngF+a9gTgttcdv+qkd18nlbSdIfmgJDORioAWNVML/hRo2A7Mgoeli0v+F4N/5E42/X/5D58Y/vpvH1bHD+jGeRs7d++iD0y86AzEyFx+ciEAGVQGafxkRfRs65bNmlYE8MgpPrudaZbFja3FqEZ06ZUBv9SPsZz8McZKfdhSxWDa9LRUgSjO6CWI5LHezEt+/o3Dn+uWaTfO50hlesxKICVTfTbv7z30S1K6POMAmS6/a/eeaVX+wgjNS+gKuZ8yIJ+MO2/+DVYZjcIW9EBDqE+dpMOoCdLo3gMNAOcF9F1s3eRAEg292I7cj1/3umOfeeD+9m6OPNEENlJINfTg2wW0bIFRX84JvqV6PUe4FlKjxo3Qgl5ycmobQHCuhyHUgmDPj9hKJHugJOckOkevkSBHhg5zkhz6PU9PyfkePDzko1F3IF2DheEoGEM2cGzpwkWGyg/1AI1IeQKNRmpDyiRyqwlwYTj0LTz6bNDrNySAHuTmW/iGDeVP6YpL9dmd/+9j7jyfz/3XP/pF92f/2F9z973+0lY9qHHyXq7foJUHSIfZ3nDoHOUap+HQN0CDxvnWudYLjRu4Vr4VnCMHPYyGLXsLo7a5dDD80tZr8aWff+HVU7Hst23Zql27dzOidEyurs5aD+ismoPGShhJcBkGy4rf26Yw/t/8uqPX3HW0vx3OoPg01oyLgn3VfL8A8vW8/Jz8X62YXfij657o/vSue3sPLDinQaALaCRSJLwXlvcEsoX3DvIOTh4rloGax+Pu1rKPDVf2ropqI8wqr5jNacWIRYjKtip3XmRSgGC+fkVFiNhJhlkNjkEiMngzLt9PyWv0isY7TOt2zmXvJkujyc6MJUb45D4ldWqKs8jAk2NVPQJQol8unjr1cgDnxQBsfv2pa44c673qP/4hXzjf4jIRTmAokEmuWvTlSMaGO3k953xanEDmxhaK9PoRdHXvyHe9/+ce/SfTtNbT85Ik5wgj1z8ZD6BeDGlW0nxNZ4h7aqH/9JFj38XF7dIxFUC/rP9hgv6K7k8APe/vv2xm9NKrH8sPXDLT04d/dPCwDN13vHn+00cfHP3A5xd6H1Df9UPqlDnS8OkywhU4r6JSFuMug0EoILEuqxjlfSyjbyza96PccHynQsSSPibTHmRYjuFz4ixJyIVUAtDET6MYPiXiJfFyPLP/FJwQiY3X8EnXtO/99Hl43te98sQL7rq3eZuf6S2DA+Xi85XgnUvTw7IzSFsITpGeMPSZYCLSy0WgP/IPPu4xg7+9c9oWO2PrvXwGEICcxqtbHi4GEA8iH/LdrgbECezcNV0pwJfcfIT3HNVT6MJB55gSl4U2CRP/Z4afuSuO2vnLZobPvf4pev/f/9TAP9zNDwDve+2MDvzGsr9cxuFrNfSLrHcVaRnGdVqx+fqy1gNseXIoazBejoy+Yfp/V+VtkmpE3vwlIrInfd78xQaV60A2qfkyFq/LhL4QIJezfe/f/syqr0z6ea951ckXf/70zNvbfm+5J1wt4hI62bk4K8FfG+d1xZ+mHlHpuvMtkpRwqRt+6CO/sOrI1IHdmzcLVYluWs5nRwY+qyxAbAqSQgvTlUTYtnWzdkyREWhb4IpV7rhT2EKyy74u7avAwfTznoRL4X9hw+qZv/uz185OLLz5xk38zav6ozc1KvvUIWsup12khOjEUzXvZxeMgzdsxmzO0n61fyKeaHkLlu0sx8qIB1tZwNKULBEU9GAYj0yygMHx70YtPl5L3mFU0JOVMJTmev49k37WG19/4glfPNX/DT/j+mhIm7al9eyTYxN9qzoqtGBuzAqr2EsCQkt/+SV4x1RmAnbtotn7sYkoNLnmoM7WxmosMgj/3r51enAAOuLymdEt3p/hmFU+xFhJgJmA2A91atUl/h0fevVk8c33vnKgKy5rX98MRx+CL7wBmhYKOc43nnu+zrrVAuOmZArJNaZqHHWhEDkPpURU5o4Ze8qUj07fnzSROSaTlptQxUXHRSTU4kkwRSkDtUdu+vrB+yf9rB+8371Cg2bOGvAKy7GVnIWwYWnhtjK0QMKuXjqzvr33mtX6h+lMA6COxRX6XZAT0gMI0mOVb2EIM9OHAbz9Zau06srmtpmRv58mSWmYfpQ5NUtkGE7c5T3/gTveOPul83FtO355WbthnXvxzKg90AunpTIgJ6tAVk8u43Mo7msxGPnIVnX6jxc0JSd+fKMEJ8SX75IMlmDcflshKVM9kXY5yxFRPi96OzPA7/yP73fDSc7lc958asWDbf9lSnetM0xcecasQpNybSx/tWYRGWqhh5a50R+89+XLTk3l/ldBgo02qLwmVAsQCgttxGQMq4Sdu/ZwR0hFTM34/18/9+AVs6NfVexbZNJ8iqcebPV0XCgeXu2yWfzu+by2j/1Ec/+qwfC7mnn/FWe9j1JfkE5yVTudqE09Fy/2unyxcnFL4FZ8C0VKh5wrxp3Fry+lEWP10fZzxWrj+RJ+AA4gW2Hl7Oh9k57HXfvw7GG/ucSqX0YPX/b6098r9ynNs6Fzc8xryKFO63XpzOgPXvS26WwPJ1mYGNa6T0gRKAPDRf5PGQQIX7Y9UBKnamxapzet8O3HEkEnrW8YZp8NDQi4gfyDT3pC+9HzfW2ffsvcvkf151+EkW/z3mR10ouqEpfmMksfg7yGDftbi0FG1gHFGK1ZJYSwIqg5u5Q2lPEoJAs01tcm1IZsjv4zP/za2b+b9ByO2HwPXdXUtb5X4/UA1T1kKYuK3PZVMkKzrf/k05/m9vzuj0xnezg6lrp888g1KUWgSIVj0AELrcqzjeH0ygG+93VzC4+Zm/+uwWn/2Z4q+XSOI/Ek4Dw0R73zb3989viFuL7Db13258sWhq9zC/LwY5kIVEaq4FEqci+171odbNUPNOZZ2DAgF0RwLHY2H2+TETTzVZ835l/GCtF77xYW3vETqyeLpzzt508+8cHWfZtnTEsZY1lxusbln2lSF9G4pbmHr68/NsDjCsz/1s3ft7yd0mWeD4zksCRDzLP0Vx7aA3C0edPsYTAVwwLYEZHIaRvr1+mexy4//Xy/4E+j7gCWA8DsvnppZX/0rn/1X/0Fu5evu0lvuYwLN6M1m7muPiynNArCPmbuVbn34x6AsIjHozPgo7l+TBUgafKGFZ+gxihYOsTSeBJ+KFx5uf7npOft81/gv9Gg6XGRswMLVZHWiFrBHPP8TXaoKEXHn7lW85csa/94Wjf/rTt2Ji6JjewWg6HnYgC2b902zizM1UDJ89q+detUOgL/4xUrddMW7bgC8z+IoUYsTLf6VBPQ96NP3vgNM7f+xY+6C3Yv73/5nK5+zPxr54bzH80rM5NYan2CtBmN9FvlBMiAW7DvrRDQjOIvcna12GPQ+O+qOlCz0eXHWNXxGi7pY8feNy6/feLuv+u9gK7KQMBCfawVHcalnzkW5hSiW3xHrKzBcrb79v76qk9PqwG4cfs2gYIby2bha6jSOytBEJLONtCNGSZ+Td90kcbvvmSFnvlMvPvRWPhPTQCmIMXCHrNgl3N08x9+r/MX+vr+8RdWLTzpyvZ7e/P+iw1qJJ/jLrV1Y0Rf9TS1m9rVnoI51f0/+cwskh5FUrJ2gg0jWDShiUw/rpiH8PDy7bsmPV/bf+zB6x9s3VNTatSCkuM2rbBiDbmxhLasDKo541z4mV/etG+Z5rV9686djOh/UAFTzgJiYtWAJdLIXsUZgeepNgLft1zrnrLwS8vm53/f+5D7tcXMrvXzl6x0775Y17fjDcvvfvSMvsMt6ARQIfUF3cYivQIa4IsGjecZXOIMdGYrfqZnxxL440yufhUCxkqjmH6yoggUhNb7xz168uj/PUdmnsfGJTKyztS7IZ/oDqzwjYrwUDDuwFgy7kOg/h677NLhB6d5XWdJrnxwyJwTbnIGIFZNiKEGqJID27Z1i3bs2j31duAvf+qS0Q1P0Y/Mzi/sps9EfEHQLPWx2980+5mLeX2ffGvv1hVu4eVu6IuTrzOge4nKvGib5xrQUNxThQvFWx8/7Fl3RqaicUzacmfA0c74b5tLdwJW9Pxf7Prl5Z+a5Bz99N8uuHnyJWbVjjn/JQvhYhYgdXg2RWBjdRTmsAz6D6DQzmD0Vzv/8yX3TvOavmn7dsUcgJchkEmTbA4aQgAWdCT/DBCwc9dubt+6Zeo7AwPAR3527uRjV+I5zby/2wVXj/TwK2f8zdNwfV+8efadqzD6RbQFTMvglEq8Wp3Uhv4v091YNmSwi5x1NbSJkQtByqYD7WMf00fMVD9baRfmSG1BjwAAIABJREFUVXO+ffe3/7fhRA+Gd717+MwT6j0hXWNKSRkVXFUhgGU+MCNZ5bUy9ymUcsah3GOXj/77UljTCRwqNlBnkLY59xAglYQYiCmnVpfUuOPXZr5w6Wz7gnZe8yLUjPyxR12Bv5iW67viMe0vD9qFD5rcmu1ZeialB6qECVbnOPRBYMl368xehVk5sASPREhiTp/GAHOM/itrWAQAo3b+mmv9+yfdKOH0fP+5HDjCRY264taIY7GPsAgYLOgf63Ag7p/Q9ZZQ07b3Xv6Ywd9P+1q+ZcdOjgHCX/M422dUdyCLw2NpKl597i2Dv31Cs/CK3rxGK+E/fOv/PZiaKq+9v7hs9Ni5he9ZNj+8pfEY7/NUA34Gq7dqEDkv5Atxw7rrmTksA9zn9s+GL5Dy4yqlBlCdlLC+hIvA4Uo3fNff/MSyBz74mv7EzofnveXU7CnPFwJw8It4SDxTiFL9YizNmjwrWrVoCWiBVRj98V//ZP/4tK/jm7Zv07atW0vHOxEkvyZozp319ueY21H6aC5JI7DmWv+Oq5a1v7hszt/87W8aTdVN7P+1ladWzM1/DxdG99C0XxtjvdXPxR5/DmdG+VRHDzQJRRKe4xWT5d+ph0JFPBqLMsM/vbSiP/nc+S078O0LvWZF6EphDBUzAcZchMkIaOzkp2FS0u6Z9CJx5Uq+Yyms4Vt27OCOXTtzoTirfCY4MQMQAYacOSntdLQEg4AwPvyTy/yly/yfLYyaTY9+VDN11/epX1/5qatm/Xe6BX/S5NerzF7ljqv+f3Oal8wXK7c5tUorACDq+gixjjOose9O9BpXwoyBdPSZz+z95aTn4xTcc9grai6WmVjVPbEcUVbqQayRSyOYUrFcZkb+U0++trdnKazhm7ZvV7TCtMQcEWet2Ht2IGCooHFUSJhEkytRWCoA4BlBtyN81X0tf/Uj/2v0r6bx+g7/xszHV3LhVVxQcuWVaK9j1v4MzyyDgClSczQCpxir8h6j9+dXjdUYVKLThoOQGkW0y+nf/rbnz44mOQ/f9EvDS0+x+S5vWtHTsv2iNzR2oVrknqj+N70xCILo0S7r6Xc/9JrecKmsYbJAREHdJB0UchMzAMiaUzWfcvuWrdq5c8+SjAE2vOrIZSfknuP6rn9knr/3pB+ev3Yar/NbnzX4ncux8CtqC+V2cWJ+8YoXTQNHj9RFZqxQ0OADxGKvOSDnDsWFthXU1XcRAFtpbjD53P+nP90+d9RrZlRjIUmpMt8RFwu+ZCBwPDJmCX2yUWm8/MqB/4OltI41pmVpFsfkPADF5Kksjkxg5+7d3LZt85L0AE7MD543T7fKA2z7zRVHRs2HNv3k/OXTdp1v/+5Gj7964eeWtaMPuLb2ZBdRfcdd9rLQOVauU8USiTOwiO9tVZPGdQLGqu8aQbPSZ3/wR89P5Z+LYYbnWOgyBvZpzCCOlXxn4DRrHfgiejaj9ranP725aymt423btnnl55f7dYgTDgHyiUAYpf0l2vfiJ/5xxOOj3ovZI3yMnUaDZs3n721+Z8OPnuhP2/V+/D9eMrzm0tMvml0Y7XXF3a7yWNlSj4F+4hkP60Vsw3Ha8KIdpkz7LXW/FpcUNED7Oz97zWQr/7b+1OlrH/TuGSrMR4yTmgz4tzg3Yd9A81JmWfTwWg/Muvbtb//enl9Ka3nnzp0kqorOlOyYnAFATRxLErBBD3Dn7iVnBf7sj4ZPPOV62zJgFCRytdBrvvW+o71fmcZr3vGrK4/O9E49358aPWDTdeN5b1lh0CQgikz/rcpGaBBxK0wybgQMj6ASEbXqQhq1py9fxd+b9H1/4cvNv0UvSZYsvjzCaCyziJRk3epxrjBL0tyKZzv5Uytn/R8vtbUcUfnC3sy2jhPMAgSd9ED/jVCLBO7ctZvbty0tEPA733SM9x/j9/seBwRAB8mBIpzvwT2g3iuvesn8i5/z6wtTZ9i+cPMlhx4z235rc2r0YC9oP6tqajjmGRiFDtPNFQXxV1XFR9o6WiOcnWsJSvJHPmILBLyT/Mpm4fW3/5f+pyZ9z97xh9hEPLMw/zJwOZaQCjURlW416n7v44FTvK/laD+6/9eW3bOU1vItO3ZUGU7D+4S8n5wBMGoypoRiaSYANdNzp9D7XtM0JCvHSGAzcM1J9n7jzoP+qdN4/Xe9bfbWq2YXntWcHn05Kb+zXu61S2w4/UYwVFYpGUX9p5ImO6Pmt6XPAuq13l+G+f+8edPM2yZ9r9e8ev4bTtBdm5vSciyWsTURNJVBZ/JfPc6cIA/CH1i5TG9fams5s8RzbUPqhJnzARMyALQi46o5YUtsfPLTbuNJ59ZiDEEGTD38wM3cfaL/nsf/8NEnT+U9vG35jsddMtywoj39Vi74BzWqNyVMEgC5/CWmiOMZ4Qg5pjZl4fm6sreUZcCjdqCLf0+aihwJc6PR4ZU6/bzPv3XuZ//0Fc3EVXNOnHTPdj3Wgp0wuEasQdBXY74YQydXvCRf6QNKA+/vX3EJ/3ypreUbt99o5U6UO4JKlZ7DPzV6Z/ldzoSBCVNmaRC2dMaXj+B72cCljmdxAQX3l3mBOA3c406OZt//Db908us+9h+WnZy2+7j9zcvuA/DKDa868XOnh/1/cfyEv2nF8uaJbLgsrAY3iD2APKQBwREI5wE4cCii7yQvcCSiT2HoiQEg78KmbwR4irGwzi/AwQ8X/JdPD/H55U375+u3uj3vf/ny85Izf+m7Ru59H9GLfVrKhO1+nVKAudbBqwI5x+A/lJSGYGFsOEfMsv3Arl+cObrU1vItt+7I4m6hvUmO4s66ae9DHuE7du4gwceBeCBKJbRxHr1XULi/cdvWJWEIvvkNx2ZvPTi4c35m8MTc5cy4wCkMyDiSB2ZHwz967OP4gn2/0PfoxgUb17zixLPvGc69Tz02ZuOG58O6ujGpk2ssJLCvGa+GpI/ez0h44vKFb9r/ptmPLTkDsGMHXVB5cC7I9jQQepKWe+/b7du333fOIYB8YgHkukMpuIy6cdsWLZXNDwBf+IL7hnnXuzpvedZNlQy4nivsTvf6z3vwS3p9tyUv7Dg9HDwPvbp7ozKTf1E8L6j0QsU4hjGe6RBCRaGAQdt+6qordetSnKObtm/XWE50keD1ORsAHz2rxDm2/+1YYizAB073fhA9R8X416pImHLRwDeJP/AOvBe9X7z6Zae+s9uWF2Z8+39duPQU3HeFKoN6o58puZXy+ovUVOMPPBcJqCh2gNYy4t1/81Nz80txnkoIAJCpk0SWQZwMFfipN96oGGJlhlFu/kDhlp27loQReOpPn7j0ZNt8WwS1Ag3c5MvTf/kPU4/Phjw26t+85kdOXt9tz/M/9h1onrvg3JzJVdQneO0VWLivsgnji3xcR4Gt16oV7TuW6jzddOP2nBZV7CShZAomxQTcEXKNTGyLWEeec683LZEQ4L6j/W9Z6LnLvGE00SSWqK+ikceIms00l32pHXzw+p9cuKrboud3zFMviG19SRrgTzhjmRurticoeY8S3xUNgESW9fA94cBTnoRDS3WePnHrrTXPAV9F6/FcDMD27dsVRWDTRhFzp7ClkwR48DRf6pq687OVsaqOCNseCiU96AfNNfd+pfndp//UiV63Tc/PeNpPHn/ykQU8Iz0dlXp+b6AbmcpGaLzpgeUvRNNgCoMyA3hZv33PB1832y7VuaLRj86tsFN7V2KSxUCmbJzFCm/bulW37pj+EGD1q09dddq5p+UGCkLVW0s8g0t5BuktADjt3LM+c9/gV7qten7G577A7+GgyfPNwkSkaUgRG5pjXAbIipSNFwbJNkpxXu2jVi498k+9IvXVb1MTFAQB5AyCGnvSSzt27uGN26c/BPAL+Na24Qrb166KJ1WiSFv9Nq4z5wGoDzzA5jWP+aGFH+i26+RHO9v/bteg6tzDukcCqz4JdQmUTAZ8vJ0Nk/q3EzQn//Fv/Cb36aU9WykpUoSd4l2T1OQMQGpfjSLAmkmjty4BEPDYPF+a4hUuJovY/Z6ENBffv/nT9YgTbN669pWnb+y27OTG2tcefeox32zEeE8U29rcemuyTn0O6bJWHcfr/1N6twVWDPw73/pv+lrS2z9Qmbh4m+YWEBPyAGhbQQX9F0HavgR4AJtfd/ya0653o0lgErZDzhi/3OjGn8mNhAC0AHzfzdx9ovmj63/i1GO7rXvu4zvedIpHjs08lwO3yPjaeidTilwrgyaOKs8QwSL3zxMA9L0/etnKyfcsvNDjxhu3K9QBZpQuFTiGcq3JhQBFMDrTZ4Qlcfo/cLz5bh/VZAxRvgjE+FpLHkYYu9KdY+bXp4aMbOd6T/7y/b13POu/dKDgOZ9mc+y1TfMiuKJAZFZfpQOaavjHojnIVgnWPMACknlohdNf7/x/Zu5/REyc4t4PDH2O28UJGYCwJXwWgg124MZtW3XLrTun1gi85v3z7oTv/UDslceqfcyYMUhy16hbYI4xTot8Xmo0Ot/v/Z93HHI/3W3hcxu797bPPk13ZeX22/ZdKOq/EcSls2DfWJzGxT/yAOC9eMkK//89EuYsdQcOre4UcVIu8mzP2QAodqSPh2BUBxZ27NzFm27cNrUhwF99xG86Rbc6Ht21dLTViscYyFT3yCvgsSGhJpkt78Aj6v/Mta8+1pGEzmGcaAffoYbjxw5tHFZh3qyeSaX/k4Jh2camUdVuptXdvTl85JEwZzduH997ZWFPNAvAHFukfgBFNeITU5wGPHKq92L0nYvkfpnOu4IVvTjDHbBSPoBZQmauQ4kpfa/pnzg584JuGz+88fy3zM/Oj/zzUw8/WthlDMgbE/dUdAtoWqJZRvB4I1vNNe0HbvtPg5OPhHm7dccOpvwoY/8+JtE2TZIHINtMJQuyZl9gKhfVrx2dOdHy+bTNk6yElQWZxlspalHHA5tCzrLciv22Scg3fF63lR/e2Htg4Rvn0Z9NnH4TkmXOie3vrfpkSjr4VryozhikBz0SLl/J//5InEPTF2C8WeAEMADWM8nIz6IDbrpxOrMA+w4Nnna6cY+tAD9TFWZUgErPe4xr547Rz786w4rHR+6xN39lyG47f+3j3iPNlbFrQb2563x/pr1kPX/r9cL0SoifY3BwNUI727YHr7pSux8p83bj9u1heRfNFBHyAHNLuAmFALSxGEWSyqDjVI7jp/lSFzrJMFlIP57yQ+4ya8+J6m4r74C1h5CdrTj5d+1HZwAexrjsEp6QDxn9M8meV54Bx56DYWt5LXL5y1893GxP71vV1+iRMm+37txR6xzHFUmAmigIaPspBSX1mH+cTv//af/hxKojo+bZY0Dfoi7XVmLGrpu4ufNZ7ziOh1QnDwFoZaO9b/imTjTk4Yz1a3sfY9t+tUamHIvgZKnbNqPDAtBabyLQZVo/evyj/G//yetm9EiZtxu3bS8t3mN1rqo+vhMLASwj1hbQhb9/Ysd0pQLvvrf5P3y/ucwAFzyTuKXG+m8vAvoMUEgZqtVYfCkPcMG/v9vKD2984FX9r6watH/Nuqg37+NsqEsXYvJMqpRGNRjMkuCkoIH3/7D+usmrFl90ELA0BeVYh8TJtQZj1sgpzjNB3bhti27ZuYtP3T5dqcB537wUzhSR0BBJbCdJowdAoxdv8ICiIZ/KUh1s94Xw/63aK69o39dt5Yc/LukPf0ULHtavGu8CjOLwSva0Xwz6JRmrQPv0wmCgP/ydFzV65M0cQ5Y+0qCySOJZ+gBn2x24RmfCDHPHzl2cNj2A63/s2BOOtXzG+OkdV854hZmZRUMUNtFmCgcYe+RJNXBIQSub9u/2vHHurm4bP/xx6DdW/MVcO7wZoyRwAWdSghaDcpVvegawK1KCU38sDTyOPuZRePcjbc6UOako7VGSui0n2BmIooyJ5eI2AdMzTpwYfJv6btYnvX+OcUIthdRoAtqZGCsiCdk+VwkHWfdfPY1+r9vC5z7+xdfPvGb5sP27LD2u6nkQLutRwJTBZZPNWh+P8TO0zOmjO39p8MAjbb5cRKgY1StY5bs44dZgyo/BJ51FErh1ylqDnR7yRWyYxdGqun+D/aWI32hOSYs3f879p8ozS1UlINf64ZOu7n2g277nPt77Q1y4dNXwhf3T+lw8wVVxAPxYhSCNtquyYjDsS/wIXDnbvvOROF+q3FXVLdClSeoB5Ig6IH+RSbdt6xbdOEWtwW541fGnnEBzU6JBjOWRbazIlDRNLzA5jlwOpPFGmh62eY6chFXN6F2Xz+C+bvtOKBR489wXVvWGL3LzWmhq2FlkZZUzBuBR1XGEneFj3X/bfnG2d/JDj8S5InyozaWKZC9E0vS9mogBSPUFpgUhBe7YFU7/afECTpxunuMHrp9QyqpfvK0IGQMCS2ulYiAyFyDEogmUokzUhRE12+effPjH++q27uTGZ39z5qOXcfhKPyxcDGOoF61aFzr/aFG7dAE9jP7stjdeeuoR6wGQuQqaVjZdnKQkWMqu0IkRYSWwfeuWoAo0JV7Acd/74THAKImYjlf11X5i/c/Ucm+8BXYSElV0hzSj9r5v+Hr3p92Wnfz43G/N/PasH/2WRgZzMdJM+dmpLu6yBkMjjytW6jcfqXNkmiWVZq/BT/ITrQYkXRM1hoL4cLQ5t+7aQy/hEzsuvgdww6tPbjiJZjULPpncFT8mBJpv3GBGxRlQlj1EUlo3xgAS6KO7MAP/jne+sLfQbdfzM/7lM/nyFQvtXxtIK+E0WgRBq8ocAoDmHA885irseeTOUNUPhTm0DU7RJLsDq/ShLbJA+Zueuv3iewAPzve/RwP2bM93KwOVvXsatzIRRaqEYLnLxHTK6DJN1dnIa24lPtht0/MICn5fz1+y/NQPNKdGd1kIR4nqakM8V2k7CC0ww9H7/uZn5oaP3BliOvc5Vkmhs20O+JAG4NZdOxkSMEp6gLHgmHAEtk+B+/+yP1b/xEg/wHHEr/yT/7u9L4+yq67S3d/vnHtryEQgEGYEhaWNndSQAKLt9Faj62k74nuC84QoooKKQzt024OgreJznunWBpfaKO3wcL2li9fP1oakxoiiggOzgGSspOree/b3/viN59yCBHIrScWz18qqpHKHM/32bw/f/j5IRTkm7RAkziIdGqpqrHoSEKHIUvDWWz7a/H/1Ml1Y+80nlt1x9NLOuZjttKpQ7vSmpZDgDIKMqscegU8e5JcnRLvxH/JQhgF37wBMYGC3M0BhQ4TNrTdMTGHDfk4B/uO6mXVzJj9K5pkCDYkSovdKFnIXHQBYcg5MyCcDGRoobBr5Yr0894398hMDGw5r4mXSFjVO2APl+k2EBjqfPgDZsHo17j5Yr4njAiBYvhIJCLBHKYAvpQf91WR61gGO1u/nFGDXrHkxDXx50lfpQ6GIFhSC5CoFJ1YaLEsQ1KgITSQD55CCumypfq9emvvOTlvb/voSKS7XIkZt4f76Yo9zAoWKLMn5je++IS8O1uuxbnSUoY9t63IOQMkk0e2BA6Ck6Iuos0LbFJD93QF45oe3Lbm30zhHMoFkMR2UuPjTo48VU0keJJbAJCWm2VJw4Djll7Bzw00fak7Wy3Lf2TdfN8Bn/WX2tuVzre9L4YpQGpy75ft393Kg4I7VK4qDP0KDP3mxV8OV5+MW2IsUwA/SwX1ViLIJEcWG8Sls2I8qwZt+lT+VzWxFGgiFol+V39+I8YWMUAgseYyS56te7OBEMuW/1Ety39sXXgAevqp4RaPVucnDgYEAiAuFwVzlh8cdg+0H87UYHxtHCGPto24iCcAe44Bkt3TWw8PDnJicdGK6cYLe8QJRQFk/vHa/RQFznexl0kRZIcqReXZJxjGhm0I5fyw5DlszABmUgmNQ0CpaR67u/Pu+SC7PvVKbm34+N3TXH3EUxDADURQQgsjFapwboagqmRsxhXrKLFgFZMM8pxQUalsMUEihRjNDkwmFzNnMRRtZp3Xskdnv/uOdfTcd6A/+pn8avO/Ui3e98Pbt+GG7kR3KeD/pqv8YzIuvfvOC5kENzhoZHeH4RBzDJ6TCcrdnXYB8TzyNxL4iPT2Dr7msH17LG8ancNrIvncCZ753x+Gbbs+eJjH6g7A0IVqWjK/yflcoTVyrIKWfi+k/baCwIpdrJy9dsqDr/5EXbD9lptP3lu/8sPPSDpoNGEgKbw5jipqEK+1Q+QETXj0pUifXCCQaIXBsi8hcJnfdAh56Xud3ufLKY1a1vzBx6eCtB+rDf+NHBqaPPX/uZfe3zDXoQ0YI1MG3B0TvHFwh3/+TCYsiFih0uEUI7VURcGR0xCGrk/Vk+cBIEdm4nxa/iMhd9/U9tWhkS+jIH4AEL54QJVXVfYLMdJLQVCmnUGENNiJkISJSLOjk30kXzF54d2twckfeeHWnv9EnfcawAcMGwAYgDYA5oA0YtT/B3BhmEGaA5vYnjXud+yPuvZID6v5fckAyQBoG6ANm8+zE7Y38r397f3PTCefvuujFX53LDtTn/vbP9H3/8Ka+S4o4oWkgkole+/MPNmYP9nU/PjGeSIPCR7eki8z3VBxktw5gwoYZphxSJCE39l8HcGchr63K+iRo6DgYWUnpmcpHxzQhTlBXoKW+OJh1iu1r1jYXDPp7wgW7Lr6n3fyINkwfU0Ub57Sgyd/9aSQzjyXcQlUgg2GA1hfNmDLIqFeVgKCVZUvuZd8Hr/sxPv3Mz7QOWNWjkWHzT32d4qtQu+Vpi7K8n1+SPwEbGR5h2sRKGO/jQFQvHECYgrGPDmLMgf3KBjD8pntP2NbhGf4Mkl2+TPEZXSFTNdmUNq6LGsyfMqSkNb+sIVf94AIsyGDJoy5sDd/f7vsAmjCAm0dgmffSz8n780TggpOEF66ChWIyL+r+0Mu8RSANTcgfRMSIkQzZ/ZK/YuMYD1jVo2+9xvC0R/N1g+3OBqFwEPLrw1ZlG/50on+LAyDoxToce02qobyXDsCWWdVvHOnUPPYnA+b92/r/Shp5n8wz8puGBEkl0Lf/gIj+s9KKUTuAFVqpGAko2Z/x6qd/eGGov7fMZX+jDeTFPMoWFY2CIHIaCmAPcKsROY5K4BDYsjFoXTpSQv2UhgtANmMa7zz5za0XHKiL4Advbexcms2ebeaK3w3kxXc3vCdr/yks/vGJCdBz9TB4/hAUsldIwJGhIaep4yRHgAQQZGFZN+zjNuA3Nm9DyzReSQCSPuRSSQcipr/0SybcgInEVCT+6FpxIoPt4s4n/IX86Nq39H70d927th27nfLfGe9cWJgBk2ySc0z/hgrFeXoNWJ51RMzeGKi2aakjgErb1H1uJ0PfHTPZFcefN3v6gboYfvvZZbc/8vDiBUeuks//yRT/XA803npHn2JFgrGnnP1mz79NEiKG0BAAANnXRcB/fD8evUXzUxEn9UrYnQTNy661zEBqUib7SKnoUQkqKNIEvvyVcxoLgiy74878eSYzJplLCNzOMW+J0q8J1JFVXoMuB1F1ipXtgREARbKrLmJ/5mZgmzauXvOW1uoDdTncd7857vY7zUvPunzuoNdmGJuYAETFUITOCzCN9bjny3G3DmBsfAIUapwzSKHY4EP5sp7d7B2Ns9nMsvke8nTOR6rSf0gmyarkwKgqzkV/Kh0t+vvb31qo82HeeL5kIR1J6Ii7dDDScJ6lc02KnVUmJMynr9cVLCUO1DMixSlI0YY54tbNctWj3r1r8EBcFJrLBTuAt03dyJcc7A5gdHiYCpQEU5DI2gc2xF44ABuLmixJTP1IkAszIBvG9l0KcMl/0uyieZWdULSxD7tJPkqF/oCOdu2RqhIQUYEMo0Q7pwMiv/7NpwYWBPo79I5tp2xV8/gSk7NJyEfLHo2lQCYlLRQpg55LuYCURDeISqFUEvaklDItGYLqGMlb/Y0nbf1D9rEDaTE8/cNtnHrRzpM3d7InFw1kO0zjM3/2xrnHH/QJAOnHdFKZFOMm9vZUGWwPioCqMWVMQku7iAxFiPWj+y4FuOZru9bPaHYs3EOrFdLPMKnYvbUFGTVGbF8F7R9EFmJqoYI+U1yxUOdz9z39L0DTlOqWnoeAIQx54LvJJNcJcmVJYY+xVlCVyiyXk1m+t3RcDylpqkAwk+WvPO61c286UBbCtW9pcOuOxtmmCQMRFMb0374jv+r482cecbDXAOINDtSobt+H9AwHIMb4z/elv2R3dBHA+PQ+iwC27TLPlmY4noSro7x/V592RscZ1X2qV1TLmpOgQDrsrFzOBVP90RwvFCMmpO+pR0eXrFmo85VCeePODR4JMm/6UI0SYskDJRF0MiHaQOpIICIZZItml570hh1Peepl+z/fvvjHNLMi51NCRChFvzlqpt38tyf8w+zSgy7/d3qAEZbnqzeREIyBuqYHDsAgAcel0hlxl91nVYC3/e9W1lZ9GUygQWIgg0gRgOUeaDV6iXkTK/igdJW5vvryBid+/qGFwcg/+uL247Zr9pjSYmUEJJWYzNBVHoiIRft6NaU0Pp2GTuoGprT/e8fZJcLj/5/oKjKiaGTNe1v937rtDpy8vxfEt65sP2kns2NSj6ciZmczH77xFvPPj7hgNjuYHMDoyCjHJiZAodOs9J2wBBZkQ+PeSIMNDw0xrhSkS8jtNcS+cgHf+87ME3eavtVkuVLnnVFFwJCxUlmqkCOhlC5FAqz+VJGm0SuecfnC9P7v3ybPNc2oX87UEVU8KxiUbmKhj6U8HYmEVuoXkaCeuuAhoYKEVEfVsco7vEC1kAqIsJktu38G3/yzC+dW7M8FsauTPRe5a5ImzEAwIrN54znSzt4lB5mNDg/bKWjXAUCljQ2mIMG9dAAT45MQDf4FyW4JEbGJ1z6CA2+e63sxc2MkJfdDQhKbMsMmFfOyYELCGahi35z029O/Zy3dtXpV+9vfe3Pve/+v+EqRFxleRFtIieKDXx1jAAAd0UlEQVSjXaszOR9Kl0RrYIVL38OAdfDBYSjylQgRWNGRYTkdStuDaS6lFBQqsrOZn3rXTlz13z5WNPbHQnjiZbtWbGvzFYpyuOMmOUVywd0F3nfsebNnH3QlALcBB4wb0igW2jMkYJlgjBFs6BXILFXYgp/vWZfOrNim2dmlsjditRxp6F5ZPyXXBaEPjpJWW1gS6fuXN/m9je8fXJDJv/+8Ye6vZorsSP/lWrnklAQHIF2Mt+k/UtXWgPhP2JE923HXmGOy8/uHh8kAFP0xCMpIQcecBDGCVrPxtKnJ9t/ujzXwq1/i6Wxmg7GYkQo62uM1zQzbisbnTn7jzsccLGt/YmIckZ8WJolq/d0yexqV75kuAEvwEabKWsDCDwW8/FPbcPMtepbm+VLff4hcCGX2rvnL3PN1MNIqmJRmAmnDf/bnumDEHztnzfOyhptLqCL4ECaXQ0XeRzhpy8/vdggQ0MiaW637hScED1hQTkYOksyy5G/Taqo7JiOys69xyfHnz754n9fBjbFMUCgxN5cEQgiRomlW3Lc1v/qsD+xadjA4gOHhESZwn2RsBDFh7FURMCkRwz1txmOCEfeXBe0EXPH65ZyV/nORm9K0Xxq2V0cgWUnpXZicas6X5cGkJDbBphabT3l09qOFOJ+nXNY6ZLvmz2fkMUjDllIQ43GdUq4TpOfPZCaACddJWloguxWR0/qCoLsQEq5bdTahsjmAmTF/7OSfPfq82dF9tQge9/5dq7eoebokpA0olXiDOh4Ugrn+xiljv86+NPLunflidwATkxNIJSsi3J2BFLBn04DDw0MUOMU8d1m9VLB7MANs/fqxTQviBB7/3m1HbivwtGpPjOVJuCrIDfNM/YbCGLtEg8MbaERkmZF/vfbCbEEm/265Rc/umKzPHT8gJclxVhwYWN6Zy6lNqndg5t3gSzt76RdSSZeS/0hqKCWEJB8osmpm/bPMvr3mkrkj98Ui+O2t+XOkkeWocjfEFm/5WhjBbJ4974/34O2L3QHY/DvuzOnAm2/Zo1dFwPGJSQjF+P5ybCvB9uFJUiinjazh6aN/viDtgLvuaZxVNLK+dE7H9+lTOq8H2Nzm27W65v0lLYZ12FnaX1y5YJVrmudLXipaV2t4knTfkE4EMow0VpiNEFv27K4nlDgRKtxRiaBsqrXdjSNIW4plXW57SLON/Oib782ueszbtw0s9CIoDF7p4dP+viHd/9H9pGtu5D5tvGftxTsWdT2AXqQyPiCer9NmjyxNhuydA0AKlEeJgwCJ+iZkASOAtphXSCaBkWC+WjnKHYBSXzvRAGDXvl+pBxgI+4rO7c96TnNB5sr/4u/bx20vsr9kub0GdB9TNRKIOTyk2tewnVrGdeA7A/Sz/t0+kGnbEYlv9LXBhDiphD6iVmaPGAuZ7M+etPmPjUsXcgE89uLZU2fUDLl0yX53ekDdTiE4uqKRNe/b3HjD4i0ATqCiixZGdaWUIPfIAZBMntTKWE2sYbG7DNejXO+SbY+6v2XOnI+/Lyl7gOXwGPMcTYp0t7krKi0AEVEVLG3iix968sLQHfzy5uL50jDlsM3fLa0UJlFasKnIKRIMAyo9fLuAUa4FdNUO4qRjV000rJ2Su0/+Y575C/qCkBHuzPrOP/xVs29eqEVw3878udJA7tmcUS7mJnri4ZKGeoBAONPJnvSiL+1cdAChicmJ2OBgdPSO1wJ+ufp2UI+6AAFZa+D3fIC2D+RwAAayYXwTFoIe7Pb7mi/URpaXBlTKIJmUCLRcGEtPIlH7CTmz3bbsTqlCqjCf0x2rlrWv6PV5nP2xGTz7w1shefYcmLBoo6tOabr8vs4YbRtW1F+0HClUOA8glQ2xejVQuS6sYgwYuBPtQ6elycP577RzrJ0M+Y6seekjL2w9r9fX8cz3blmyXfEmortuKahMeDABySTPSzPHsh070Fx01f+h4ZDb20k8iEGc5vK9QUORnvEBuFEAhO3CMUjZL4N9FmiPA6RcP967NOCqOzdjLste3cVvh9IDF7x9ivYLYQpLU35prgskJSNQaFR4WH/x7vEPDd7Z65uXGZE77sbJ22mewLj7Mh07ZGBbj8zl6e+kgtcNjF60IXCS3pC7YYVNeAdKFbMIoZTQUvBE0OFYTcnVRFg1E9hyE427dpkrjj1vx5qeFv9ua1xSGLOypP9YcX4sVzi75N/a1M0nHGvmFmsBMMx72ZtmJCj1SNzheqUMpKrCSAEAQtSjRRjjA3ovdPpI7wqBf/8PjSfv0OwYGjCpkqetv1IBq/qEawKPTF9PESqtklSoF3RYHN5sX3bY0e0FEZTMs47cdV//OaZpbMRM6W5peh9biWiYIjAeaDowcX7JkFQZ4Ve+XiUS1KpSklRy51SOj2nTmQmsOr6HtCCcwdmi75r172gdvbfX700/JY4/f9dLtqL/nZJViE7Kro4lzEKVC0FFBjL9v//reX26GB2A24Id2De5WwgaFpB5q6APuwgIzwDgt1ZT2mXhf9gw4b8mehcBtLXvpdKAhzUoRFRUKCrqmGDpRnYJddBXFbKwr2Mh1MJKRUtHKIX7o0JDEc6JyizZv6v4+VHZ7DN//4nmX298z5IFejDQ12mal0ODOhGlEAVF3Tn4c7N/Cnv8/lylcOdb2GOHOz8UonS/d+9TFKLJuYb3e9lsduzvqU5SiuHzFSqC9D2F+86O/QkVSkcURfh/FRWaQgjGv5vCOoFWX37cbZvxnSe9b3bFMz4yu9tn46mXdcJrzvpgARGRU986e9JVX25fcY/2fUn6TI4q+/F8fAmJ8rNEJCTZoa5aUixa6jCX+McmEJAmdnCbCvZ0F853/4VIP55p2gjYrdTjMCjgGcOP5U/HNuFxe9kSvHL8VvOPn23ddzT1U4AYQFVVlDSgiCFFkPmdjBSKEdK2JgwMCylceGKEpGTI3DIrlNRC2Wqr3H3kKvODo0/Ar669cLCzkDdu64786GWd1tWDAilIpWNzRAZDJSEZSA0xN1UII8YYMSyEFBSAZq6sb8RGME6u0Fb6o9SZlwdy4rEKdbKGboDDGBaurph5dgQTecON8dVfAGpUnS6EipJKkxmjHSrFEIaZKorMiCEo1q0YCFRgjKApDSIvtuwszr313uajj79Ai04h2+398gyTagSAUoqbbpb8iNd0doFs3vhrXbXy1cWZv9+Kk4sMTTMfLyJLUQC8Dry/jEk5laBIn+ovTjhl4BfTi7kPiLQMHsoA5Y4WeuQAXJhvkhDcI+4NSfV4ALG0Ybh+/Gdy+shj9zoNOHfkeBWRtz3Ya17++e244jXL9vi7XvTxbfjXC5eXXn+PiOyLh+GI5a3fHTpqLvmX1y8PvILnfHwbrqocz/6wsz+6Dd+86IGP4+yPbMc3L172sI/zWZfvxIz253/4eXH1TJY/vV0qRpJEBlAoGUFCDEkYCmEMMvc8sxTqI42IAyF2txxcSJ0cVa4OZu2rvrOoVYMr5PWRHFqqhd09/rQHs8mpCYiYE0VkCwCFoONmxYRE23PIkVQVAVVUbTtNHrfuzw9qfbba9tye/dGd+M1tsvz2zY3rZgfyNVXOllSopOv5Zbk4KYGfqOu17CJ7SWYXsrbOnbiy9cjpDw3cudiu38TEBIaHhzk5OWlcM05sZCzGpfLGNYtykgNaFMXw8MgfelAEDHhwlgvIyRBZFKSIwryoH/raol1z0SBPOl62PfKI1jP7WnpHOqGZzDqwiuXw/09UNix0Rb0hBcA8GQJFOCC8fv1o867FeP2Gh4c5PjVpO0KYh9PKjrgRkHIYtNdFQCc6HkeCvPaAQwQ4oSkvUgwjYlyVorbaSk7gzYPceNmSO5bJ7DnZnM5mceAogvdiTs8E0xHapr5MUWpNpBs+u2DhliK3I1zSmPvnL74wW7RR6cjaIVosDqIiVDKOD8AEJjn2CggUMGEee0ZEnLjv/tGjxgJkAAK5fuPPajdQW5eNnsqfHN5ov5HtAG9ANWo3LCkblfZ/VIVfU0RVpfLvP7dfdNuhg+bfFuP1Gp+cxMTUFCanpiqUkPBMUEwUexx1Xy+FQdQC/xOuujKVRonCmhRjD+v0dY+tawC1ddm3L1rK3366/wuD7c5HHRKzS/mshPlI9BwDyKkMfLIPc7kDDsS4QQag1419eGDbotz5h4YIERlau5bzQp9dh8fTdNmWZ490ARwkLRPbYUsh5kbi1KFxAQHguQopuGFiE366cbqOAmqb184Y6bxzcK71f4wTn0vRhCJ26CgATyCp0Om8KW6Ckxc/W0EVskMesoxfXMzXChSZnJ4uTYaGRNydt2HCF4sekYJq5IWqiEx6QG0YxTe+YgMBjPtkY+r1X9v89t03DnYOH9x5TnO2c5N/dFK+gwp026MNE4BvqeAXtR0TwgeIyBLRO5YNFj9arNdpYmoKnv8TodBZrbIBTBlcKXsEaMv3zPs4FWJPYOlEpOGoIx0GUQFB4VFuhJw2XKcAtT24/fKTKzevefPMOTdvlR+zP19aQvYZkflYjNNZeJVKMpqQocGpOvdJ8Z0b/m5g12K7NuOTU0mzhFG8PQCwk87/vFpPPYgA4FEU9IQDiMTTCbWkpyIxEYSFjRObzA3jm3D9RJ0G1PbANn35kukj+/Ul0tbCsTTTi6CWin1SnnkuDShoMiORTq51mB11KD+32K7J2OQUPLoppvtuBshG2yjxcSYFUwCG7FEKYOCUNhAn5z3qKhlETMv/dP1BH5XI6cNr6kigtge1Jw9t//fl2r5UOonqNVxtQNKyt0Cq/AelETlJxuKEg0ZuPPww/cViux6ZI60cWjsU+CsBxtA/ikcg3aclaHj1qAjoRtfyRIrc7/FgVa8W9PPBdOw6EBG5YXwTejkmXNvBZ1967So+4ynmbw7rzH1dCvF8B4G8xcsU+EIgqgJnUQ+RjtVZSJEB7rpm5VJpL7brMbR2LUUok1PTiEzYrr1v4ILyLmYHcVfOoFdtQOdLjPtaU+aqQ6Vc4yYHEauG/k29HBOu7SB1Ai9pFisPab22f64zgUTCvYsHwj+b5W4AQ/brNPKyTsHVh+JzX3v94KJ69sYnpzA5PVVaX7HSDhcIJKtNShSOVb7XvXQAcWo+kyQio9OcTucxUpJL+FGFhHBuw2QNDKrtwW3T5cu3nbha/2ejVWxx+b0qEtHzCs1zAgSCnwL03AQDkA0nntS8bbFdg5GhtXEuoqzJ5uc7Iw+DP3eJFB1Oz1t74wDC5zOLitEOiOW4iQVC48CZBpYeCFY4Bp5LbGzyZxBSNtQFwdp2twNe2nfzqqz1fMxphyrw8T9SCTjpbhAg0qORHSmW9nW+/o3XNRYV8cf49DQmpqZg0TQBYR+Cfc+OgZANOMYOGw1kIsgh0oAg64kDWLdulCQ11CVsaSaTslwgJIQjgPcMFcFS+wLW67+23dvjHtu6bgVa7xGlljcjSftiVa0UV4IW9InOHX2YfmXRnXjKsx6q6lWNVgrF4v5JJy0fOcIceSw7PXEA7lvbJHMRyYlA/uSGkjwTUdqBSYRtTPBghFDW1bWA2vbAvnrhIbzzCwMfPETbn0cnKD2nkz6odgLDXlOIDhTFdScdL/cvtvP2+m4pR6OnYKRF47uZPDfqAFrUHwkKDUUzEclIafXQAWCXCDOhNEMRAJIlfGEIoQjiZg9jAYEeJGAMMD5l6wAbJ+quQG27txMfhYsGOp2foEhITN0GxG6NR+seOpRlfa0ri5Yuus0mQfmFKNo3AREkHOxy8mm4MDgGI5RchE1h0e6ZAyhUt0KQU9Q4aqlEwIqu8+hHNPxwkuXrc/IhcXRJRDZOTGPdcB0J1LZ7++k7mrPHrGi/oL/T+R3LXHcmjf8dMQ0EIn3KrYevMNdc9bqli+8ZM9a3oVTj81EOuv5h2Zq9ah9BIUiClJ09cwCdotilqhkpTRVpeqRfIh5tYtfGDQhR7LAQ3agwgqKZGGNkbKqOAGrbM5u+fPDu/v7if5hZncscEqA0ISiB8kukEA4WrWt+8oHBmcVyfuOTsTBuoXO+CZoI8CZZgWXCDTUPr3lJkpkqc1Lm1q1bX/TMAZy2fn1ByizJTMhmFApJ0n2vFOomA+HalX7f9zFNKum9cXITNkxuwg2TdWegtge3Oz7Zv/Go/uI1bDuhWkoqkRYYw7RDrDqk+PLiCvshk9ObMDk97dWqvOA7yoO/REDe+4JBZEjJSDaFNCK6x2PPZk9fSNE/ksyU7CdpKFSWZRhN5G1zu33IauheYGM443ycJzTLXGfghhotWNuD2M2fbn51eaf1ERaB/N74h81HzEuk+H1jZXb94jozehJmr2dIi6itivL5ThuT4WjrEKhsCNlQMisKvb/nDkAL3UwSYqOAflIK2mlCQ4Yb4X6WBWfgkUyuTRExjCxhl06rOwS17cae8sS5dy/tFNdkYjUKmIqjCrSP+q0NfzvQWgznMt4V+fr2eUD4mSTtNyKEMtTfDElYfA5zUvqVbIhIe/269a2eO4D160/rULiFSpAcJNmIniuIV4XF7rEL6aw2wKSq6U404YTcmFyQ/xqbqqOB2rrsqletaB8/sOW8gdniRgc+izyYHcrRq4pFQfwxNjkFEcrE1DQivWZKdRjyf5MM9hoXDpiAvKUYG5lrLhRD1T88lOMwD+moiTtpc40MIisi96ff0t0IIn0Dg4wifB6iIYFA0HhpanSrGZ0xuraOBmqb185cW9x/zLLWudxZzBonnWZEONBpTx1+qN60GM5hdGgtYSRhQHGM5ogpDRHabSkvopGQAwCkQsglTuBpR7vdeUi0Z/lDOujR0dnx8fEtqrpSRHKTGQqx2a3fzGkGQoSKgFayqjMGamgLmCBsv6Kw3QN2077XVtsD2ydec6SKyM/WvWH2pb+Yy75mGmK0IzIgnauvffvSA1r0Y2xqEoaZRezTzsvC+Cq/jaeNSOZWvQnUX0CWlghsB54GlJVKbYgCSr3ljDPOeEgb50Necxtu2JBlOU41xogxWVuAGQOzJbT6rL6V0wtDh6J2fsmRFBGiVsqL4lW9xLYwY3/H2CGkdUM1j0BtD24nnte59F7J3opO0T7zEbtO+MF7l92zGI47hP52CRoEqE+YpM2SacDMq8RbyK+SFKOqK4SyXLUwqrp5dHTdQx58Mg/1DetPW19Q5VZSmo51ZKmAgxDRkp50yPnhEUqeqtjATTUmMwMl6W9D/4baantwe8aTZ963dK7146Oyue+dcizuPfAX/iZMTU+HYl8slDmWH0uqa0KXA8wcsC6DTw4IpepyEQ5QVSnsKHn3wzme/OG8aXTdui3j42N3K7nSKEmRwyhiDLDdHSI8YYHTLhACxvKF2NQGgFDt4DYpBoYe2GGDglpZpLY9sEcNbm+NrJx58WZZccLHX3ngIv8mJjdZvjzX4UsRPrElFpr+xg03QlyHLXIAUJV6GClLlFQRFVH+fv269Q+L9GSvVtn4+NhJgFliDNTRAO8wwGaBKdxGrhDSTS74Uoef7qJTfXE44gThZX8nw2vrFKC2xW823E/0TGF8L18M3Arx3TH68jmMIwIyQjEOAlRQuVqp/VqoqKoxwK3DIyMPW+/A7M2JdcjfCnUXyZyqRkRWUHgYtWNEOAe/2BmK/S63sfif0Ab0jKJIiA4hlg4pLaBM1q3B2hbZ4p+eTmHwMICB0AAwBpIJJIORHEBurD/IBMhgJBdBA4ACUoAULYqjqcUAVW0BEHLb3iz+vXYAp42uY6G8RVV3qKpQC6rKIAXHqfIIJRsUFrZdGXldo7ooTYiAUg/o+4hOamBiahoTU9MYHVrL8clpeABFCqQYm5ysnUNt+9w2TsRNacxtWBNTFtZrhTyCVF4qdOb5PPyAn8fNWeo9irEQJyVVTUf1UNXiEaT0KRWq2qDIbSMjo1v39vh7smjGxjYAMEeLYLXJMAeYTuzvYwbCLQK07RSzxwhb9iLSzRIGyfEw2iRr16zRialN8NeHpIysXcvxqWmM1OlBbft14U9DWMi6kWGOTUxBQBkdGuLE5DSGh9ZwYnoTQBUYE4f7iJTKG0IYQNQy+bjaACP6j9SlVFmpVDsjqGrbZpBbR4ZHt/fiPHq6a05Mjh8mlGMAFAAIA3WyhSqQXRSZgWBWxPG+xrDAtRDS3wgookNr6oVe24Fv45NTGHERKgIlLsU4gI8JvS4GBm0QBm5PdNG4EWFTBMtIDpCSkZoLKW7Ed4eI3jEysm6uV8fd87B549jGAQM5BsYMAFAQ6gL7Apa/RJ2gS1tEZl3Rr3Bc5o7P0IOJguAJ0/lnB5By4+GWdkB8UJGyl3uNCUuYkJF0+vOAJ08PoqowvlbhghBYRAJAqGc4EEc4l46fCWB8kVP9++Bk2oJApW2ZQmgVlPyxoqRk484hEF0axslwFz9GyVuGSVCI+nNyHtSr6YUjtYXnUGSFFc1LNLSSojS9+ktQ1wo0HIzhKl3pyr8JkSXezea7ildQihChI5N1x5GK19jwT4y/F07n1hWGIxFOsjlIuIIMTWYmjDr0csGxvK6+6ObZMzyrvoWrJQScYBC/sG0qe3S+eK8iYcRdfPsb8VzpcLDuZnhFbWO8ylYI9S2styEiOUT61aJsVShQO9ufW2EO3t3qdO4547TTe7ohLljePDY+thzAaogsEaANoOMKfSpi1DoDtsWJDiEQvNiJaNca0KBKTM8JK0yYIRlrq+mP8nMlgUM9PD1xDXvRs4TFzAGZ3A2kYzgRzHfJaJcL3U0LfUy33sTRtaRatmK7Iym5LRCkMMM6oee6d03RsFN4HgwT143V0UFgbE56StFTUEoeNWjvqMedR97NMH9O70Hdx/rlokLaPSzoUdhrpHad+NvjuKvCcs2cWyokDI2ZeBsZRl/V3bNUAdz/zFKybPgbFp8EllQsKRrlgv0ngQBNlwwhwgUKLhkovcRV7sX5eKbtuzj9ClGU3wNa2J9X9BG/IUDEKNXfGzh3Z59zVYjIDlLuHh0dnVuIdbrghbOxsbGlgKwSkaWOJ6xtNQVBERbxrtlkgRSNiufoiH3s4funieghLOpQvCii+vKCW0D2eQz5lpeYgHg5Q7chJbISbrN06Zp9UCnR9cRqDj3aIQQMEh95h/NMNmHYig6M36b9YnML20CgcTW5c43bi4dMixu0CCFKvI8sEjL2UG0l/AW0fiT6NO+MS1/mCV40xCSuauPat4inn0QD4vbeuPBSV5jEN/ZOke5YQzAhJno7QKREaU2nRB0E8ey9FjsLFL4TGpylKyjTUeSIVwpE8LFh30fwXY7NJowXh+MlQ0jFRP8iLPrqpgMkI/EiMO7IrYCvl81yQYUIMwaSEwIiDYp0lNxK8r51Iwuz8PeZA4iOYGOTgsMyg34BBsSH/oHmEeoiOHe9lQIUIZAsa8UyQgb8DBU02fX8XVdPWOb8rgvfGJ93JpoqyUWx75PCrxZJVWmBMN8UNlS7axm3oJ2QqvNk7j0hfGdIAJKGiNtWkiTG5RSSlonD+21oFCmjQI0UDAGIxTApZxdEEiDQiE/PbBQTw3mJ4bOjdvPZQ9wSo0MNK9M5mCTeCQGbd21evUedL3aEskEGNI2UohJ2GJVHIkMRQn2vCKzBQxjv3UXKNIJpJImgYMV0ojCu9PiWVH+HYdUjyR4IuHTfXX3HhOUilpKfMO5zMvsbbbiB5jaFO4XcLuTWkdF1+4TOfL+0zsbGxmCMLBFgGSlNFzVmQslikAqISCeGVlTrQUP27aIBlJamv8HeAZR2bwmDSD6AZMgkkOyxcYdwDsAzntM4p2Dvv6YCiQhZK/2NBtSvcfdFxu/qLmdXX1bwjy59HGgfpMIFKz7cN3YBKYMce4hVpSNBIp5ux5SOAQy9sCv8Nk0FYewwd4Bnd6yDsmUPYSmzguvYRBcUgvIQkBRBR97EtIOC3F3LjoSqQ7p2hKRkbjOI43GOa7LEKxOUf6xcTeKGWSLNKjkQUuhSf4Zb7oZR3SYB8WNqHpSjpa2EYZfxT5u6uM6jW50zJ0Ukk3JuoIkLgXsIOi60ahtgpih0x/DIyAE9xFRbbbXVVltttdVWW2211VZbbbXVVltttdVWW2211VZbbbXVVltttdVWW2211VZbbbXVVltttdVWW2211VZbbbXVVltttdVWW2211VZbbbXVVltttdVWW2211VZbbbXVVltttdVWW2211VZbbbXVVltttT1s+/+XFVmfhECZYgAAAABJRU5ErkJggg== \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/src/lib.rs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/src/lib.rs new file mode 100644 index 00000000..db07d106 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/explorer/src/lib.rs @@ -0,0 +1,498 @@ +use hyperprocess_macro::hyperprocess; +use hyperware_app_common::hyperware_process_lib::logging::{ + debug, error, info, init_logging, Level, +}; +use hyperware_app_common::hyperware_process_lib::our; +use hyperware_app_common::hyperware_process_lib::vfs::{ + self, create_drive, vfs_request, FileType, VfsAction, VfsResponse, +}; +use hyperware_app_common::{send, SaveOptions}; +use std::collections::HashMap; + +const ICON: &str = include_str!("./icon"); +const PROCESS_ID_LINK: &str = "explorer:file-explorer:sys"; + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct FileInfo { + pub name: String, + pub path: String, + pub size: u64, + pub created: u64, + pub modified: u64, + pub is_directory: bool, + pub permissions: String, +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +pub enum AuthScheme { + Public, + Private, +} + +#[derive(Default, Debug, serde::Serialize, serde::Deserialize)] +struct FileExplorerState { + // HashMap to track shared files and their auth schemes + shared_files: HashMap, + // Current working directory for the user + cwd: String, +} + +#[hyperprocess( + name = "file-explorer", + ui = Some(HttpBindingConfig::default().secure_subdomain(true)), + endpoints = vec![ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default().secure_subdomain(true), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default().secure_subdomain(true), + }, + Binding::Http { + path: "/shared/*", + config: HttpBindingConfig::default().authenticated(false), + } + ], + save_config = SaveOptions::Never, + wit_world = "file-explorer-sys-v0", +)] +impl FileExplorerState { + #[init] + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + + // Create home drive for the user + let package_id = our().package_id(); + match create_drive(package_id.clone(), "home", Some(5)) { + Ok(home_path) => { + info!("Created home drive at: {}", home_path); + self.cwd = home_path; + } + Err(e) => { + error!( + "Failed to create home drive: {:?}. Using root as default.", + e + ); + self.cwd = "/".to_string(); + } + } + + hyperware_process_lib::homepage::add_to_homepage( + "File Explorer", + Some(ICON), + Some(""), + None, + ); + } + + #[http] + async fn list_directory(&mut self, path: String) -> Result, String> { + info!("list_directory called with path: {}", path); + + // For root path, read from VFS root to get all drives + let vfs_path = if path == "/" || path.is_empty() { + "/".to_string() + } else { + path.clone() + }; + + // Just list the current directory - no recursion + list_directory_contents(&vfs_path).await + } + + #[http] + async fn create_file(&mut self, path: String, content: Vec) -> Result { + info!("create_file called with path: {}", path); + + let vfs_path = path.clone(); + debug!("VFS path: {}", vfs_path); + + // Create file and write content + let file = vfs::create_file(&vfs_path, Some(5)) + .map_err(|e| format!("Failed to create file: {}", e))?; + + file.write(&content) + .map_err(|e| format!("Failed to write file: {}", e))?; + + // Get metadata for response + let meta = file + .metadata() + .map_err(|e| format!("Failed to get metadata: {}", e))?; + + Ok(FileInfo { + name: path.split('/').last().unwrap_or("").to_string(), + path, + size: meta.len, + created: 0, + modified: 0, + is_directory: false, + permissions: "rw".to_string(), + }) + } + + #[http] + async fn read_file(&mut self, path: String) -> Result, String> { + info!("read_file called with path: {}", path); + + let vfs_path = path.clone(); + + let file = vfs::open_file(&vfs_path, false, Some(5)) + .map_err(|e| format!("Failed to open file: {}", e))?; + + file.read() + .map_err(|e| format!("Failed to read file: {}", e)) + } + + #[http] + async fn update_file(&mut self, path: String, content: Vec) -> Result { + info!("update_file called with path: {}", path); + + let vfs_path = path.clone(); + + let file = vfs::open_file(&vfs_path, false, Some(5)) + .map_err(|e| format!("Failed to open file: {}", e))?; + + file.write(&content) + .map_err(|e| format!("Failed to write file: {}", e))?; + + let meta = file + .metadata() + .map_err(|e| format!("Failed to get metadata: {}", e))?; + + Ok(FileInfo { + name: path.split('/').last().unwrap_or("").to_string(), + path, + size: meta.len, + created: 0, + modified: 0, + is_directory: false, + permissions: "rw".to_string(), + }) + } + + #[http] + async fn delete_file(&mut self, path: String) -> Result { + info!("delete_file called with path: {}", path); + + let vfs_path = path.clone(); + + vfs::remove_file(&vfs_path, Some(5)) + .map_err(|e| format!("Failed to delete file: {}", e))?; + + Ok(true) + } + + #[http] + async fn create_directory(&mut self, path: String) -> Result { + info!("create_directory called with path: {}", path); + + let vfs_path = path.clone(); + + let _dir = vfs::open_dir(&vfs_path, true, Some(5)) + .map_err(|e| format!("Failed to create directory: {}", e))?; + + Ok(FileInfo { + name: path.split('/').last().unwrap_or("").to_string(), + path, + size: 0, + created: 0, + modified: 0, + is_directory: true, + permissions: "rw".to_string(), + }) + } + + #[http] + async fn delete_directory(&mut self, path: String) -> Result { + info!("delete_directory called with path: {}", path); + + let vfs_path = path.clone(); + let timeout = 5; + + // Create a VFS request with RemoveDirAll action to handle non-empty directories + let request = vfs_request(&vfs_path, VfsAction::RemoveDirAll).expects_response(timeout); + + // Send the request and await response + let response: Result = send(request).await; + + match response { + Ok(VfsResponse::Ok) => Ok(true), + Ok(VfsResponse::Err(e)) => Err(format!("Failed to delete directory: {:?}", e)), + Ok(_) => Err("Unexpected response from VFS".to_string()), + Err(e) => Err(format!("Failed to send VFS request: {}", e)), + } + } + + #[http] + async fn upload_file( + &mut self, + path: String, + filename: String, + content: Vec, + ) -> Result { + let full_path = format!("{}/{}", path, filename); + self.create_file(full_path, content).await + } + + #[http] + async fn share_file(&mut self, path: String, auth: AuthScheme) -> Result { + // Generate share ID from path hash + let share_id = format!("{:x}", md5::compute(&path)); + + // Add to shared_files HashMap + self.shared_files.insert(path.clone(), auth); + + // Return share link with full path + Ok(format!("/{PROCESS_ID_LINK}/shared/{share_id}")) + } + + #[http] + async fn unshare_file(&mut self, path: String) -> Result { + Ok(self.shared_files.remove(&path).is_some()) + } + + #[http] + async fn get_share_link(&mut self, path: String) -> Result, String> { + // Check if file is shared + if self.shared_files.contains_key(&path) { + let share_id = format!("{:x}", md5::compute(&path)); + Ok(Some(format!("/{PROCESS_ID_LINK}/shared/{share_id}"))) + } else { + Ok(None) + } + } + + #[http] + async fn serve_shared_file(&mut self) -> Result, String> { + // Use get_path() to handle routing + let request_path = hyperware_app_common::get_path(); + + // Extract the file path from the request + if let Some(request_path_str) = request_path { + if let Some(share_id) = request_path_str.strip_prefix("/shared/") { + // Find the original path from share_id + for (path, auth_scheme) in &self.shared_files { + if format!("{:x}", md5::compute(path)) == share_id { + match auth_scheme { + AuthScheme::Public => { + // Extract filename from path + let filename = path.split('/').last().unwrap_or("download"); + + // Set Content-Disposition header to preserve original filename + hyperware_app_common::add_response_header( + "Content-Disposition".to_string(), + format!("attachment; filename=\"{}\"", filename), + ); + + // Set appropriate Content-Type based on file extension + let content_type = match filename.split('.').last() { + Some("txt") => "text/plain", + Some("html") | Some("htm") => "text/html", + Some("css") => "text/css", + Some("js") => "application/javascript", + Some("json") => "application/json", + Some("png") => "image/png", + Some("jpg") | Some("jpeg") => "image/jpeg", + Some("gif") => "image/gif", + Some("pdf") => "application/pdf", + Some("zip") => "application/zip", + _ => "application/octet-stream", + }; + hyperware_app_common::add_response_header( + "Content-Type".to_string(), + content_type.to_string(), + ); + + // Read and return file content + return self.read_file(path.clone()).await; + } + AuthScheme::Private => { + return Err("Access denied: Private file".to_string()); + } + } + } + } + Err("File not found or not shared".to_string()) + } else { + Err("Invalid shared file path".to_string()) + } + } else { + Err("No request path provided".to_string()) + } + } + + #[http] + async fn get_current_directory(&mut self) -> Result { + info!("get_current_directory called, returning: {}", self.cwd); + Ok(self.cwd.clone()) + } + + #[http] + async fn set_current_directory(&mut self, path: String) -> Result { + self.cwd = path.clone(); + Ok(path) + } + + #[http] + async fn move_file(&mut self, source: String, destination: String) -> Result { + // Read file content + let content = self.read_file(source.clone()).await?; + + // Create file at destination + let file_info = self.create_file(destination, content).await?; + + // Delete source file + self.delete_file(source).await?; + + Ok(file_info) + } + + #[http] + async fn copy_file(&mut self, source: String, destination: String) -> Result { + // Read file content + let content = self.read_file(source).await?; + + // Create file at destination + self.create_file(destination, content).await + } +} + +// Helper function to list directory contents with 2 levels of depth +async fn list_directory_contents(path: &str) -> Result, String> { + debug!("list_directory_contents: path='{}'", path); + + // Open directory + let dir = vfs::Directory { + path: path.to_string(), + timeout: 5, + }; + + // Read directory entries + let entries = dir + .read() + .map_err(|e| format!("Failed to read directory '{}': {}", path, e))?; + + debug!("VFS returned {} entries for path '{}'", entries.len(), path); + + let mut all_files = Vec::new(); + + // Convert to FileInfo - Level 1 + for (i, entry) in entries.iter().enumerate() { + debug!( + "Entry[{}]: path='{}', file_type={:?}", + i, entry.path, entry.file_type + ); + + // VFS already provides absolute paths in entry.path + let full_path = entry.path.clone(); + + // Extract filename from the path + let filename = entry.path.split('/').last().unwrap_or("").to_string(); + + debug!( + "Constructed: filename='{}', full_path='{}'", + filename, full_path + ); + + if entry.file_type == FileType::Directory { + // Get directory size + let sub_dir = vfs::Directory { + path: full_path.clone(), + timeout: 5, + }; + + let dir_size = match sub_dir.read() { + Ok(contents) => { + let count = contents.len() as u64; + debug!("Directory '{}' has {} items", full_path, count); + count + } + Err(e) => { + error!("Failed to read subdirectory '{}': {}", full_path, e); + 0 + } + }; + + let file_info = FileInfo { + name: filename, + path: full_path.clone(), + size: dir_size, + created: 0, + modified: 0, + is_directory: true, + permissions: "rw".to_string(), + }; + + all_files.push(file_info); + + // Load one level deep into directories + let sub_dir2 = vfs::Directory { + path: full_path.clone(), + timeout: 5, + }; + + if let Ok(sub_entries) = sub_dir2.read() { + debug!( + "Loading {} sub-entries from '{}'", + sub_entries.len(), + full_path + ); + + for sub_entry in sub_entries { + // VFS already provides absolute paths in sub_entry.path + let sub_full_path = sub_entry.path.clone(); + let sub_filename = sub_entry.path.split('/').last().unwrap_or("").to_string(); + + debug!( + "Sub-entry: path='{}', filename='{}', file_type={:?}", + sub_full_path, sub_filename, sub_entry.file_type + ); + + if sub_entry.file_type == FileType::Directory { + all_files.push(FileInfo { + name: sub_filename, + path: sub_full_path, + size: 0, // Don't load deeper + created: 0, + modified: 0, + is_directory: true, + permissions: "rw".to_string(), + }); + } else { + // For files, try to get metadata + if let Ok(meta) = vfs::metadata(&sub_full_path, Some(5)) { + all_files.push(FileInfo { + name: sub_filename, + path: sub_full_path, + size: meta.len, + created: 0, + modified: 0, + is_directory: false, + permissions: "rw".to_string(), + }); + } + } + } + } + } else { + // For files, get metadata + let meta = vfs::metadata(&full_path, Some(5)) + .map_err(|e| format!("Failed to get metadata for '{}': {}", entry.path, e))?; + + all_files.push(FileInfo { + name: filename, + path: full_path, + size: meta.len, + created: 0, + modified: 0, + is_directory: false, + permissions: "rw".to_string(), + }); + } + } + + debug!("Returning {} files total", all_files.len()); + Ok(all_files) +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/metadata.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/metadata.json new file mode 100644 index 00000000..df958b85 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/metadata.json @@ -0,0 +1,18 @@ +{ + "name": "file-explorer", + "description": "File Explorer & Sharing", + "image": "https://raw.githubusercontent.com/hyperware-ai/hyperdrive/refs/heads/main/ui/public/assets/file-explorer-256.png", + "properties": { + "package_name": "file-explorer", + "current_version": "0.1.0", + "publisher": "sys", + "mirrors": [], + "code_hashes": { + "0.1.0": "" + }, + "wit_version": 1, + "dependencies": [] + }, + "external_url": "https://hyperware.ai", + "animation_url": "" +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/pkg/manifest.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/pkg/manifest.json new file mode 100644 index 00000000..4eb54b2a --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/pkg/manifest.json @@ -0,0 +1,25 @@ +[ + { + "process_name": "explorer", + "process_wasm_path": "/explorer.wasm", + "on_exit": "Restart", + "request_networking": false, + "request_capabilities": [ + "homepage:homepage:sys", + "http-server:distro:sys", + "vfs:distro:sys", + { + "process": "vfs:distro:sys", + "params": { + "root": true + } + } + ], + "grant_capabilities": [ + "homepage:homepage:sys", + "http-server:distro:sys", + "vfs:distro:sys" + ], + "public": false + } +] diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/.eslintrc.cjs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/.eslintrc.cjs new file mode 100644 index 00000000..d6c95379 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/.gitignore b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/README.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/README.md new file mode 100644 index 00000000..b0e896f4 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/README.md @@ -0,0 +1,56 @@ +# Hyperware UI Template + +Based on the Vite React Typescript template. + +## Setup + +When using `kit new`, the `BASE_URL` on line 9 of `vite.config.ts` will be set automatically. +The `BASE_URL` will be the first process in `manifest.json`, the `package` from `metadata.json`, and `publisher` from `metadata.json`. +If you have multiple processes in `manifest.json`, make sure the first process will be the one serving the UI. + +## Development + +Run `npm i` and then `npm run dev` to start working on the UI. + +You may see an error: + +``` +[vite] Pre-transform error: Failed to load url /our.js (resolved id: /our.js). Does the file exist? +``` + +You can safely ignore this error. The file will be served by the node via the proxy. + +## public vs assets + +The `public/assets` folder contains files that are referenced in `index.html`, `src/assets` is for asset files that are only referenced in `src` code. + +## About Vite + React + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/index.html b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/index.html new file mode 100644 index 00000000..e8c7cf37 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/index.html @@ -0,0 +1,16 @@ + + + + + + + + + + File Explorer + + +
+ + + diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/package-lock.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/package-lock.json new file mode 100644 index 00000000..94bbed10 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/package-lock.json @@ -0,0 +1,3628 @@ +{ + "name": "ui-template", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ui-template", + "version": "0.0.0", + "dependencies": { + "@hyperware-ai/client-api": "^0.1.4", + "qrcode": "^1.5.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zustand": "^4.5.7" + }, + "devDependencies": { + "@types/node": "^20.10.4", + "@types/qrcode": "^1.5.5", + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.55.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "http-proxy-middleware": "^2.0.6", + "typescript": "^5.2.2", + "vite": "^5.0.8" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", + "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", + "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", + "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", + "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", + "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", + "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", + "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", + "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", + "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", + "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", + "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", + "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", + "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", + "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", + "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", + "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", + "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", + "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", + "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", + "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", + "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", + "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@hyperware-ai/client-api": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@hyperware-ai/client-api/-/client-api-0.1.4.tgz", + "integrity": "sha512-/P9HNzSkoYAR8lDwwMlyJCchL9gvALIIwvLp901S+tZ8/Yv+U2wnjhUfFfN32JwvQ2v4MjekB+RunB7Dv25awA==", + "dependencies": { + "buffer": "^6.0.3", + "node-forge": "^1.3.1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", + "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", + "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", + "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", + "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", + "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", + "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", + "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", + "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", + "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", + "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", + "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", + "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", + "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "devOptional": true + }, + "node_modules/@types/qrcode": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz", + "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/react": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", + "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", + "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "devOptional": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.15.0.tgz", + "integrity": "sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/type-utils": "6.15.0", + "@typescript-eslint/utils": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", + "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/typescript-estree": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz", + "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.15.0.tgz", + "integrity": "sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.15.0", + "@typescript-eslint/utils": "6.15.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz", + "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz", + "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.15.0.tgz", + "integrity": "sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/typescript-estree": "6.15.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", + "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.15.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", + "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.5", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001571", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz", + "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.616", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", + "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/esbuild": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", + "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", + "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", + "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.1", + "@rollup/rollup-android-arm64": "4.9.1", + "@rollup/rollup-darwin-arm64": "4.9.1", + "@rollup/rollup-darwin-x64": "4.9.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", + "@rollup/rollup-linux-arm64-gnu": "4.9.1", + "@rollup/rollup-linux-arm64-musl": "4.9.1", + "@rollup/rollup-linux-riscv64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-musl": "4.9.1", + "@rollup/rollup-win32-arm64-msvc": "4.9.1", + "@rollup/rollup-win32-ia32-msvc": "4.9.1", + "@rollup/rollup-win32-x64-msvc": "4.9.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/vite": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", + "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/package.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/package.json new file mode 100644 index 00000000..6462d9a9 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/package.json @@ -0,0 +1,37 @@ +{ + "name": "ui-template", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --port 3000", + "start": "vite --port 3000", + "build": "tsc && vite build", + "copy": "mkdir -p ../pkg/ui && rm -rf ../pkg/ui/* && cp -r dist/* ../pkg/ui/", + "build:copy": "npm run build && npm run copy", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@hyperware-ai/client-api": "^0.1.4", + "qrcode": "^1.5.4", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zustand": "^4.5.7" + }, + "devDependencies": { + "@types/node": "^20.10.4", + "@types/qrcode": "^1.5.5", + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.55.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "http-proxy-middleware": "^2.0.6", + "typescript": "^5.2.2", + "vite": "^5.0.8" + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/App.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/App.css new file mode 100644 index 00000000..ea483108 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/App.css @@ -0,0 +1,167 @@ +/* Root styles moved to index.css */ + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 1em; +} + +.read-the-docs { + color: #888; +} + +.message-list { + display: flex; + flex-direction: column; + margin-bottom: 0.5em; + text-align: left; +} + +.message-list li { + margin-bottom: 1em; + padding: 1em; + border-radius: 0.5em; + background-color: #f5f5f5; + border: 1px solid #e0e0e0; + overflow-wrap: break-word; + width: 90%; +} + +.signed-message { + display: flex; + flex-direction: column; + gap: 0.5em; +} + +.message-content { + display: flex; + flex-direction: column; + gap: 0.5em; +} + +.message-text { + font-weight: 500; +} + +.message-signature { + font-family: monospace; + font-size: 0.85em; + color: #666; + background-color: #efefef; + padding: 0.5em; + border-radius: 0.3em; + border: 1px solid #ddd; + overflow-x: auto; +} + +.verification { + display: flex; + align-items: center; + gap: 1em; + margin-top: 0.5em; +} + +.verify-button { + background-color: #4b9ad8; + border: none; + color: white; + padding: 0.5em 1em; + border-radius: 0.3em; + cursor: pointer; + font-size: 0.9em; +} + +.verify-button:hover { + background-color: #357abd; +} + +.verification-result { + font-size: 1.2em; + font-weight: bold; + padding: 0.2em 0.5em; + border-radius: 50%; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.verification-result.verified { + color: white; + background-color: #4caf50; +} + +.verification-result.failed { + color: white; + background-color: #f44336; +} + +.node-not-connected { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: rgba(255, 255, 255, 0.9); + z-index: 1000; +} + +.input-row { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; +} + +.input-row > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + padding: 0.5em 1.2em; + background-color: #4b9ad8; + color: white; + font-weight: 600; +} + +.input-row > button:hover { + background-color: #357abd; +} + +.input-row > input { + border: 1px solid #ccc; + padding: 0.5em 0.8em; + font-size: 1em; + border-radius: 0.25em; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + width: 100%; +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/App.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/App.tsx new file mode 100644 index 00000000..773fe64c --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/App.tsx @@ -0,0 +1,66 @@ +import { useState, useEffect } from "react"; +import HyperwareClientApi from "@hyperware-ai/client-api"; +import "./App.css"; +import FileExplorer from "./components/FileExplorer/FileExplorer"; +import { ThemeProvider } from "./contexts/ThemeContext"; + +const BASE_URL = import.meta.env.BASE_URL; +if (window.our) window.our.process = BASE_URL?.replace("/", ""); + +const PROXY_TARGET = `${(import.meta.env.VITE_NODE_URL || "http://localhost:8080")}${BASE_URL}`; + +const WEBSOCKET_URL = import.meta.env.DEV + ? `${PROXY_TARGET.replace('http', 'ws')}` + : undefined; + +function App() { + const [nodeConnected, setNodeConnected] = useState(true); + const [api, setApi] = useState(); + + useEffect(() => { + // Connect to the Hyperdrive via websocket + console.log('WEBSOCKET URL', WEBSOCKET_URL) + if (window.our?.node && window.our?.process) { + const api = new HyperwareClientApi({ + uri: WEBSOCKET_URL, + nodeId: window.our.node, + processId: window.our.process, + onOpen: (_event, _api) => { + console.log("Connected to Hyperware"); + }, + onMessage: (json, _api) => { + console.log('WEBSOCKET MESSAGE', json) + try { + const data = JSON.parse(json); + console.log("WebSocket received message", data); + } catch (error) { + console.error("Error parsing WebSocket message", error); + } + }, + }); + + setApi(api); + } else { + setNodeConnected(false); + } + }, []); + + return ( + +
+ {!nodeConnected && ( +
+

Node not connected

+

+ You need to start a node at {PROXY_TARGET} before you can use this UI + in development. +

+
+ )} + {nodeConnected && } +
+
+ ); +} + +export default App; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/assets/react.svg b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/assets/vite.svg b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/assets/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/assets/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ContextMenu/ContextMenu.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ContextMenu/ContextMenu.css new file mode 100644 index 00000000..3840b150 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ContextMenu/ContextMenu.css @@ -0,0 +1,37 @@ +.context-menu { + position: fixed; + background-color: var(--bg-primary); + border: 1px solid var(--border-color); + border-radius: 4px; + box-shadow: 0 2px 8px var(--shadow-color); + padding: 4px 0; + min-width: 160px; + z-index: 1000; + /* Ensure context menu appears above iOS touch callouts */ + -webkit-touch-callout: none; + -webkit-user-select: none; + user-select: none; +} + +.context-menu button { + display: block; + width: 100%; + padding: 8px 16px; + border: none; + background: none; + text-align: left; + cursor: pointer; + font-size: 14px; + color: var(--text-primary); + transition: background-color 0.2s; +} + +.context-menu button:hover { + background-color: var(--bg-hover); +} + +.context-menu hr { + margin: 4px 0; + border: none; + border-top: 1px solid var(--border-color); +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ContextMenu/ContextMenu.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ContextMenu/ContextMenu.tsx new file mode 100644 index 00000000..f612b203 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ContextMenu/ContextMenu.tsx @@ -0,0 +1,130 @@ +import React, { useEffect, useRef, useState } from 'react'; +import { FileInfo, unshareFile, deleteFile, deleteDirectory } from '../../lib/api'; +import useFileExplorerStore from '../../store/fileExplorer'; +import './ContextMenu.css'; + +interface ContextMenuProps { + position: { x: number; y: number }; + file: FileInfo; + onClose: () => void; + onShare: () => void; + onDelete: () => void; + openedByTouch?: boolean; +} + +const ContextMenu: React.FC = ({ position, file, onClose, onShare, onDelete, openedByTouch }) => { + const menuRef = useRef(null); + const { isFileShared, removeSharedLink } = useFileExplorerStore(); + const isShared = !file.isDirectory && isFileShared(file.path); + + // Track if a new touch has started after menu opened + const touchStartedRef = useRef(false); + + useEffect(() => { + // For touch-opened menus, delay adding the outside click handlers + // This prevents the menu from immediately closing on iOS + let timeoutId: number | undefined; + + const handleClickOutside = (e: MouseEvent) => { + if (menuRef.current && !menuRef.current.contains(e.target as Node)) { + onClose(); + } + }; + + const handleTouchOutside = (e: TouchEvent) => { + // If the touch is inside the menu, don't close + if (menuRef.current && menuRef.current.contains(e.target as Node)) { + return; + } + + // For touch-opened menus, only close on deliberate outside tap + if (openedByTouch) { + // Check if this is a new touch interaction (not the same one that opened the menu) + const touch = e.touches[0]; + if (touch) { + // Store this touch interaction + touchStartedRef.current = true; + } + } else { + // For non-touch opened menus, close immediately + onClose(); + } + }; + + const handleTouchEndOutside = (e: TouchEvent) => { + // Only close if menu was opened by touch and user tapped outside + if (openedByTouch && touchStartedRef.current) { + if (menuRef.current && !menuRef.current.contains(e.target as Node)) { + onClose(); + } + } + touchStartedRef.current = false; + }; + + if (openedByTouch) { + // Delay adding touch handlers for touch-opened menus + timeoutId = window.setTimeout(() => { + document.addEventListener('touchstart', handleTouchOutside, { passive: false }); + document.addEventListener('touchend', handleTouchEndOutside, { passive: false }); + }, 100); // Small delay to let the opening touch complete + } else { + // Add handlers immediately for mouse-opened menus + document.addEventListener('mousedown', handleClickOutside); + } + + return () => { + if (timeoutId) { + clearTimeout(timeoutId); + } + document.removeEventListener('mousedown', handleClickOutside); + document.removeEventListener('touchstart', handleTouchOutside); + document.removeEventListener('touchend', handleTouchEndOutside); + }; + }, [onClose, openedByTouch]); + + const handleUnshare = async () => { + try { + await unshareFile(file.path); + removeSharedLink(file.path); + onClose(); + } catch (err) { + console.error('Failed to unshare file:', err); + } + }; + + + return ( +
+ + + + {!file.isDirectory && ( + isShared ? ( + + ) : ( + + ) + )} +
+ +
+ ); +}; + +export default ContextMenu; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Breadcrumb.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Breadcrumb.css new file mode 100644 index 00000000..283eb2fe --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Breadcrumb.css @@ -0,0 +1,70 @@ +.breadcrumb-container { + position: relative; + background-color: var(--bg-secondary); + border-bottom: 1px solid var(--border-color); + flex-shrink: 0; +} + +.breadcrumb { + display: flex; + align-items: center; + padding: 8px 16px; + overflow-x: auto; + scroll-behavior: smooth; + -webkit-overflow-scrolling: touch; + scrollbar-width: thin; + scrollbar-color: var(--text-secondary) transparent; +} + +/* Custom scrollbar styling */ +.breadcrumb::-webkit-scrollbar { + height: 4px; +} + +.breadcrumb::-webkit-scrollbar-track { + background: transparent; +} + +.breadcrumb::-webkit-scrollbar-thumb { + background-color: var(--text-secondary); + border-radius: 2px; +} + +.breadcrumb-item { + padding: 4px 8px; + background: none; + border: none; + cursor: pointer; + color: var(--link-color); + font-size: 14px; + transition: color 0.2s; + white-space: nowrap; + flex-shrink: 0; +} + +.breadcrumb-item:hover { + text-decoration: underline; + color: var(--link-hover); +} + +.breadcrumb-separator { + margin: 0 4px; + color: var(--text-secondary); + flex-shrink: 0; +} + +/* Mobile adjustments */ +@media (max-width: 480px) { + .breadcrumb { + padding: 6px 12px; + } + + .breadcrumb-item { + font-size: 13px; + padding: 4px 6px; + } + + .breadcrumb-separator { + margin: 0 2px; + } +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Breadcrumb.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Breadcrumb.tsx new file mode 100644 index 00000000..6eea6d8e --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Breadcrumb.tsx @@ -0,0 +1,49 @@ +import React from 'react'; +import './Breadcrumb.css'; + +interface BreadcrumbProps { + currentPath: string; + onNavigate: (path: string) => void; +} + +const Breadcrumb: React.FC = ({ currentPath, onNavigate }) => { + const pathParts = currentPath.split('/').filter(Boolean); + const scrollRef = React.useRef(null); + + // Scroll to the end when path changes + React.useEffect(() => { + if (scrollRef.current) { + scrollRef.current.scrollLeft = scrollRef.current.scrollWidth; + } + }, [currentPath]); + + return ( +
+
+ + + {pathParts.map((part, index) => { + const path = '/' + pathParts.slice(0, index + 1).join('/'); + return ( + + / + + + ); + })} +
+
+ ); +}; + +export default Breadcrumb; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileExplorer.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileExplorer.css new file mode 100644 index 00000000..a78bbcca --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileExplorer.css @@ -0,0 +1,18 @@ +.file-explorer { + display: flex; + flex-direction: column; + height: 100%; + background-color: var(--bg-primary); + color: var(--text-primary); + overflow: hidden; +} + +.error-message { + background-color: var(--bg-secondary); + color: var(--error-color); + padding: 12px; + margin: 8px; + border-radius: 4px; + border: 1px solid var(--error-color); + opacity: 0.9; +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileExplorer.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileExplorer.tsx new file mode 100644 index 00000000..40d2d3fa --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileExplorer.tsx @@ -0,0 +1,311 @@ +import React, { useEffect, useState } from 'react'; +import useFileExplorerStore from '../../store/fileExplorer'; +import { listDirectory, createDirectory, createFile, deleteFile, deleteDirectory, FileInfo, getCurrentDirectory } from '../../lib/api'; +import FileList from './FileList'; +import Breadcrumb from './Breadcrumb'; +import Toolbar from './Toolbar'; +import UploadZone from '../Upload/UploadZone'; +import './FileExplorer.css'; + +const FileExplorer: React.FC = () => { + const { + currentPath, + files, + selectedFiles, + loading, + error, + setCurrentPath, + setFiles, + setLoading, + setError, + clearSelection + } = useFileExplorerStore(); + + const [viewMode, setViewMode] = useState<'list' | 'grid'>('list'); + const [showNewMenu, setShowNewMenu] = useState(false); + const newMenuRef = React.useRef(null); + + // Close new menu when clicking outside + React.useEffect(() => { + const handleClickOutside = (e: MouseEvent) => { + if (newMenuRef.current && !newMenuRef.current.contains(e.target as Node)) { + setShowNewMenu(false); + } + }; + + if (showNewMenu) { + document.addEventListener('mousedown', handleClickOutside); + return () => document.removeEventListener('mousedown', handleClickOutside); + } + }, [showNewMenu]); + + const loadDirectory = async (path: string) => { + try { + setLoading(true); + setError(null); + const fileList = await listDirectory(path); + + // Backend returns files for the requested directory with 2 levels of depth + // We need to include all files so the tree structure works, but we'll filter + // what's shown at the top level in FileList + const filteredFiles = fileList.filter(file => { + if (file.path === path) return false; // Exclude the directory itself + + // For the tree to work properly, we need to include all files + // The FileList component will handle showing only direct children at top level + return true; + }); + + setFiles(filteredFiles); + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to load directory'); + } finally { + setLoading(false); + } + }; + + const loadSubdirectory = async (path: string): Promise => { + try { + const fileList = await listDirectory(path); + + // Filter out the directory itself and return only its contents + const filteredFiles = fileList.filter(file => { + if (file.path === path) return false; // Exclude the directory itself + return true; + }); + + return filteredFiles; + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to load subdirectory'); + return []; + } + }; + + // Initialize with home directory on first load + useEffect(() => { + const initializeDirectory = async () => { + try { + const cwd = await getCurrentDirectory(); + setCurrentPath(cwd); + } catch (err) { + // If getting cwd fails, fall back to root + console.error('Failed to get current directory:', err); + setCurrentPath('/'); + } + }; + + initializeDirectory(); + }, []); + + // Load directory whenever path changes + useEffect(() => { + if (currentPath) { + loadDirectory(currentPath); + } + }, [currentPath]); + + const handleNavigate = (path: string) => { + clearSelection(); + setCurrentPath(path); + }; + + const handleCreateFolder = async () => { + setShowNewMenu(false); + const folderName = prompt('Enter folder name:'); + if (!folderName) return; + + const newPath = currentPath === '/' + ? `/${folderName}` + : `${currentPath}/${folderName}`; + + try { + await createDirectory(newPath); + await loadDirectory(currentPath); + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to create folder'); + } + }; + + const handleCreateFile = async () => { + setShowNewMenu(false); + const fileName = prompt('Enter file name:'); + if (!fileName) return; + + const newPath = currentPath === '/' + ? `/${fileName}` + : `${currentPath}/${fileName}`; + + try { + // Create an empty file + await createFile(newPath, []); + await loadDirectory(currentPath); + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to create file'); + } + }; + + const handleDelete = async () => { + if (selectedFiles.length === 0) return; + + if (!confirm(`Delete ${selectedFiles.length} item(s)?`)) return; + + try { + for (const path of selectedFiles) { + const file = files.find(f => f.path === path); + if (file?.isDirectory) { + await deleteDirectory(path); + } else { + await deleteFile(path); + } + } + clearSelection(); + await loadDirectory(currentPath); + } catch (err) { + setError(err instanceof Error ? err.message : 'Failed to delete items'); + } + }; + + const handleRefresh = () => { + loadDirectory(currentPath); + }; + + const handleNewMenu = () => { + setShowNewMenu(!showNewMenu); + }; + + const handleFileUpload = () => { + const fileInput = document.createElement('input'); + fileInput.type = 'file'; + fileInput.multiple = true; + + fileInput.onchange = async (e) => { + const target = e.target as HTMLInputElement; + const files = target.files; + if (!files || files.length === 0) return; + + // Trigger the upload process for each file + const event = new CustomEvent('upload-files', { + detail: { files: Array.from(files) } + }); + window.dispatchEvent(event); + }; + + fileInput.click(); + }; + + const handleFolderUpload = () => { + const fileInput = document.createElement('input'); + fileInput.type = 'file'; + fileInput.multiple = true; + // Enable folder selection + fileInput.webkitdirectory = true; + (fileInput as any).directory = true; + + fileInput.onchange = async (e) => { + const target = e.target as HTMLInputElement; + const files = target.files; + if (!files || files.length === 0) return; + + // Trigger the upload process for each file + const event = new CustomEvent('upload-files', { + detail: { files: Array.from(files) } + }); + window.dispatchEvent(event); + }; + + fileInput.click(); + }; + + return ( +
+ + + {showNewMenu && ( +
+ + +
+ )} + + + + {error && ( +
+ {error} +
+ )} + + loadDirectory(currentPath)} + > + loadDirectory(currentPath)} + /> + +
+ ); +}; + +export default FileExplorer; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileItem.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileItem.css new file mode 100644 index 00000000..9e13843a --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileItem.css @@ -0,0 +1,115 @@ +.file-item { + display: flex; + align-items: center; + padding: 8px 12px; + cursor: pointer; + user-select: none; + border-radius: 4px; + transition: background-color 0.2s; + color: var(--text-primary); + position: relative; + /* Prevent iOS default touch behaviors */ + -webkit-touch-callout: none; + -webkit-tap-highlight-color: transparent; +} + +.file-item:hover { + background-color: var(--bg-hover); +} + +.file-item.selected { + background-color: var(--bg-selected); +} + +.file-item-list { + gap: 16px; +} + +.file-item-grid { + flex-direction: column; + text-align: left; + padding: 16px 8px; + align-items: flex-start; +} + +.file-icon { + font-size: 20px; + margin-right: 8px; + display: inline-flex; + align-items: center; +} + +.file-item-grid .file-icon { + font-size: 48px; + margin-bottom: 8px; + margin-right: 0; +} + +.file-icon.clickable-folder { + cursor: pointer; + transition: transform 0.2s; +} + +.file-icon.clickable-folder:hover { + transform: scale(1.1); +} + +.file-name { + flex: 1 1 auto; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + text-align: left; + min-width: 0; /* Allow flex item to shrink below content size */ + margin-right: 16px; +} + +.file-size, +.file-modified { + color: var(--text-secondary); + font-size: 14px; + flex: 0 0 auto; + text-align: right; +} + +.file-size { + min-width: 80px; + margin-right: 16px; +} + +.file-modified { + min-width: 100px; +} + +/* On small screens, hide other columns to prioritize file name */ +@media (max-width: 768px) { + .file-modified { + display: none; + } +} + +@media (max-width: 480px) { + .file-size { + display: none; + } + + .file-name { + margin-right: 8px; + } +} + +.file-children { + /* Nested files container */ +} + +.shared-indicator { + font-size: 16px; + margin-left: 8px; + opacity: 0.7; + transition: opacity 0.2s; + cursor: help; +} + +.file-item:hover .shared-indicator { + opacity: 1; +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileItem.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileItem.tsx new file mode 100644 index 00000000..f6390153 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileItem.tsx @@ -0,0 +1,311 @@ +import React, { useState, useRef, useEffect } from 'react'; +import { FileInfo, deleteFile, deleteDirectory } from '../../lib/api'; +import useFileExplorerStore from '../../store/fileExplorer'; +import ContextMenu from '../ContextMenu/ContextMenu'; +import ShareDialog from '../ShareDialog/ShareDialog'; +import './FileItem.css'; + +interface FileItemProps { + file: FileInfo & { children?: FileInfo[] }; + viewMode: 'list' | 'grid'; + onNavigate: (path: string) => void; + depth?: number; + onLoadSubdirectory?: (path: string) => Promise; + onDelete?: () => void; +} + +const FileItem: React.FC = ({ file, viewMode, onNavigate, depth = 0, onLoadSubdirectory, onDelete }) => { + const { selectedFiles, toggleFileSelection, isFileShared } = useFileExplorerStore(); + const [contextMenuOpen, setContextMenuOpen] = useState(false); + const [contextMenuPosition, setContextMenuPosition] = useState({ x: 0, y: 0 }); + const [shareDialogOpen, setShareDialogOpen] = useState(false); + const [menuOpenedByTouch, setMenuOpenedByTouch] = useState(false); + + const isSelected = selectedFiles.includes(file.path); + const isShared = !file.isDirectory && isFileShared(file.path); + + const [isExpanded, setIsExpanded] = useState(false); + const [childrenLoaded, setChildrenLoaded] = useState(false); + const [loadedChildren, setLoadedChildren] = useState<(FileInfo & { children?: FileInfo[] })[]>([]); + + // Touch handling for iOS long-press + const touchTimerRef = useRef(null); + const touchStartPos = useRef<{ x: number; y: number } | null>(null); + const longPressTriggered = useRef(false); + + const handleClick = (e: React.MouseEvent) => { + if (e.ctrlKey || e.metaKey) { + toggleFileSelection(file.path); + } else if (file.isDirectory) { + // Single click navigates into directories + onNavigate(file.path); + } + // Remove file selection on single click - no action for files + }; + + const buildTreeFromFlatList = (flatList: FileInfo[], parentPath: string): (FileInfo & { children?: FileInfo[] })[] => { + const fileMap = new Map(); + const topLevelFiles: (FileInfo & { children?: FileInfo[] })[] = []; + + // First pass: create map of all files + flatList.forEach(file => { + fileMap.set(file.path, { ...file, children: [] }); + }); + + // Second pass: build parent-child relationships + flatList.forEach(file => { + const fileWithChildren = fileMap.get(file.path)!; + const fileParentPath = file.path.substring(0, file.path.lastIndexOf('/')); + + if (fileMap.has(fileParentPath)) { + // This file has a parent in our list + const parent = fileMap.get(fileParentPath)!; + if (!parent.children) parent.children = []; + parent.children.push(fileWithChildren); + } else if (fileParentPath === parentPath) { + // This is a direct child of the parent directory + topLevelFiles.push(fileWithChildren); + } + }); + + // Sort files: directories first, then by name + const sortFiles = (files: (FileInfo & { children?: FileInfo[] })[]) => { + return [...files].sort((a, b) => { + if (a.isDirectory && !b.isDirectory) return -1; + if (!a.isDirectory && b.isDirectory) return 1; + return a.name.localeCompare(b.name); + }); + }; + + // Recursively sort all children + const sortRecursive = (files: (FileInfo & { children?: FileInfo[] })[]) => { + const sorted = sortFiles(files); + sorted.forEach(file => { + if (file.children && file.children.length > 0) { + file.children = sortRecursive(file.children); + } + }); + return sorted; + }; + + return sortRecursive(topLevelFiles); + }; + + const handleExpandToggle = async (e: React.MouseEvent) => { + e.stopPropagation(); + + // If expanding and we haven't loaded children yet, load them + if (!isExpanded && file.isDirectory && !childrenLoaded && onLoadSubdirectory) { + const flatChildren = await onLoadSubdirectory(file.path); + const treeChildren = buildTreeFromFlatList(flatChildren, file.path); + setLoadedChildren(treeChildren); + setChildrenLoaded(true); + } + + setIsExpanded(!isExpanded); + }; + + const handleContextMenu = (e: React.MouseEvent) => { + e.preventDefault(); + setContextMenuPosition({ x: e.clientX, y: e.clientY }); + setMenuOpenedByTouch(false); + setContextMenuOpen(true); + }; + + // Touch event handlers for iOS compatibility + const handleTouchStart = (e: React.TouchEvent) => { + const touch = e.touches[0]; + touchStartPos.current = { x: touch.clientX, y: touch.clientY }; + longPressTriggered.current = false; + + // Start long press timer (500ms) + touchTimerRef.current = window.setTimeout(() => { + if (touchStartPos.current) { + longPressTriggered.current = true; + // Trigger context menu + setContextMenuPosition({ x: touchStartPos.current.x, y: touchStartPos.current.y }); + setMenuOpenedByTouch(true); + setContextMenuOpen(true); + // Prevent default touch behavior + e.preventDefault(); + } + }, 500); + }; + + const handleTouchMove = (e: React.TouchEvent) => { + // If the touch moves more than 10px, cancel the long press + if (touchStartPos.current && touchTimerRef.current) { + const touch = e.touches[0]; + const deltaX = Math.abs(touch.clientX - touchStartPos.current.x); + const deltaY = Math.abs(touch.clientY - touchStartPos.current.y); + + if (deltaX > 10 || deltaY > 10) { + if (touchTimerRef.current) { + clearTimeout(touchTimerRef.current); + touchTimerRef.current = null; + } + } + } + }; + + const handleTouchEnd = (e: React.TouchEvent) => { + // Clear the timer + if (touchTimerRef.current) { + clearTimeout(touchTimerRef.current); + touchTimerRef.current = null; + } + + // If long press was triggered, prevent default click behavior + if (longPressTriggered.current) { + e.preventDefault(); + e.stopPropagation(); // Stop propagation to prevent menu from closing + longPressTriggered.current = false; + } else if (!e.defaultPrevented) { + // Normal tap - handle as click + if (file.isDirectory) { + onNavigate(file.path); + } + } + + touchStartPos.current = null; + }; + + // Clean up timer on unmount + useEffect(() => { + return () => { + if (touchTimerRef.current) { + clearTimeout(touchTimerRef.current); + } + }; + }, []); + + const handleDelete = async () => { + if (!confirm(`Delete ${file.name}?`)) return; + + try { + if (file.isDirectory) { + await deleteDirectory(file.path); + } else { + await deleteFile(file.path); + } + // Call the parent's onDelete callback to refresh the list + if (onDelete) { + onDelete(); + } + } catch (err) { + console.error('Failed to delete:', err); + alert(`Failed to delete ${file.name}: ${err instanceof Error ? err.message : 'Unknown error'}`); + } + }; + + const getFileIcon = () => { + if (file.isDirectory) { + return isExpanded ? '📂' : '📁'; + } + const ext = file.name.split('.').pop()?.toLowerCase(); + switch (ext) { + case 'txt': return '📄'; + case 'pdf': return '📕'; + case 'jpg': + case 'jpeg': + case 'png': + case 'gif': return '🖼️'; + case 'mp3': + case 'wav': return '🎵'; + case 'mp4': + case 'avi': return '🎬'; + case 'zip': + case 'rar': return '📦'; + default: return '📄'; + } + }; + + const formatFileSize = (bytes: number) => { + if (bytes === 0) return '0 B'; + const k = 1024; + const sizes = ['B', 'KB', 'MB', 'GB']; + const i = Math.floor(Math.log(bytes) / Math.log(k)); + return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]; + }; + + // Determine which children to use - loaded children take precedence + const childrenToRender = childrenLoaded ? loadedChildren : (file.children || []); + const hasChildren = file.isDirectory && (childrenToRender.length > 0 || !childrenLoaded); + + return ( + <> +
+ + {getFileIcon()} + + {file.name} + {isShared && ( + + 🔗 + + )} + {viewMode === 'list' && ( + <> + + {file.isDirectory ? `${file.size} items` : formatFileSize(file.size)} + + + {file.modified ? new Date(file.modified * 1000).toLocaleDateString() : '-'} + + + )} +
+ + {/* Render children when expanded */} + {isExpanded && viewMode === 'list' && childrenToRender.length > 0 && ( +
+ {childrenToRender.map((child) => ( + + ))} +
+ )} + + {contextMenuOpen && ( + setContextMenuOpen(false)} + onShare={() => { + setShareDialogOpen(true); + setContextMenuOpen(false); + }} + onDelete={handleDelete} + openedByTouch={menuOpenedByTouch} + /> + )} + + {shareDialogOpen && ( + setShareDialogOpen(false)} + /> + )} + + ); +}; + +export default FileItem; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileList.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileList.css new file mode 100644 index 00000000..b544f138 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileList.css @@ -0,0 +1,30 @@ +.file-list { + flex: 1; + overflow-y: auto; + overflow-x: hidden; + padding: 16px; + background-color: var(--bg-primary); + min-height: 0; /* Important for flex children with overflow */ +} + +.file-list-loading, +.file-list-empty { + display: flex; + align-items: center; + justify-content: center; + height: 100%; + color: var(--text-secondary); + font-size: 16px; +} + +.file-list-list { + display: flex; + flex-direction: column; + gap: 2px; +} + +.file-list-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); + gap: 16px; +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileList.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileList.tsx new file mode 100644 index 00000000..9e52288c --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/FileList.tsx @@ -0,0 +1,104 @@ +import React from 'react'; +import { FileInfo } from '../../lib/api'; +import FileItem from './FileItem'; +import './FileList.css'; + +interface FileListProps { + files: FileInfo[]; + viewMode: 'list' | 'grid'; + loading: boolean; + onNavigate: (path: string) => void; + currentPath: string; + onLoadSubdirectory?: (path: string) => Promise; + onDelete?: () => void; +} + +const FileList: React.FC = ({ files, viewMode, loading, onNavigate, currentPath, onLoadSubdirectory, onDelete }) => { + if (loading) { + return
Loading...
; + } + + if (files.length === 0) { + return
No files in this directory
; + } + + // Build tree structure from flat list + const fileMap = new Map(); + const topLevelFiles: (FileInfo & { children?: FileInfo[] })[] = []; + + // First pass: create map of all files + files.forEach(file => { + fileMap.set(file.path, { ...file, children: [] }); + }); + + // Second pass: build ALL parent-child relationships first + files.forEach(file => { + const fileWithChildren = fileMap.get(file.path)!; + const parentPath = file.path.substring(0, file.path.lastIndexOf('/')); + + + if (fileMap.has(parentPath)) { + // This file has a parent in our list + const parent = fileMap.get(parentPath)!; + if (!parent.children) parent.children = []; + parent.children.push(fileWithChildren); + } + }); + + // Third pass: determine what goes at the top level + // Handle potential leading slash mismatch between breadcrumb and double-click navigation + const normalizedCurrentPath = currentPath.startsWith('/') && currentPath !== '/' + ? currentPath.substring(1) + : currentPath; + const expectedParent = normalizedCurrentPath === '/' ? '' : normalizedCurrentPath; + + files.forEach(file => { + const fileWithChildren = fileMap.get(file.path)!; + const parentPath = file.path.substring(0, file.path.lastIndexOf('/')); + + // Only add to top level if it's a direct child of current directory and has no parent in the list + if (!fileMap.has(parentPath) && parentPath === expectedParent) { + topLevelFiles.push(fileWithChildren); + } + }); + + // Sort files: directories first, then by name + const sortFiles = (files: (FileInfo & { children?: FileInfo[] })[]) => { + return [...files].sort((a, b) => { + if (a.isDirectory && !b.isDirectory) return -1; + if (!a.isDirectory && b.isDirectory) return 1; + return a.name.localeCompare(b.name); + }); + }; + + // Recursively sort all children + const sortRecursive = (files: (FileInfo & { children?: FileInfo[] })[]) => { + const sorted = sortFiles(files); + sorted.forEach(file => { + if (file.children && file.children.length > 0) { + file.children = sortRecursive(file.children); + } + }); + return sorted; + }; + + const sortedFiles = sortRecursive(topLevelFiles); + + return ( +
+ {sortedFiles.map((file) => ( + + ))} +
+ ); +}; + +export default FileList; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Toolbar.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Toolbar.css new file mode 100644 index 00000000..2e563128 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Toolbar.css @@ -0,0 +1,47 @@ +.toolbar { + display: flex; + justify-content: space-between; + padding: 8px 16px; + background-color: var(--bg-secondary); + border-bottom: 1px solid var(--border-color); + flex-shrink: 0; +} + +.toolbar-group { + display: flex; + gap: 8px; +} + +.toolbar button { + padding: 6px 12px; + border: 1px solid var(--border-color); + background-color: var(--bg-primary); + color: var(--text-primary); + cursor: pointer; + border-radius: 4px; + transition: background-color 0.2s, border-color 0.2s; +} + +.toolbar button.icon-button { + padding: 6px 10px; + font-size: 18px; + min-width: 36px; + display: flex; + align-items: center; + justify-content: center; +} + +.toolbar button:hover:not(:disabled) { + background-color: var(--bg-hover); + border-color: var(--text-secondary); +} + +.toolbar button:disabled { + opacity: 0.5; + cursor: not-allowed; +} + +.toolbar button.active { + background-color: var(--bg-selected); + border-color: var(--link-color); +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Toolbar.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Toolbar.tsx new file mode 100644 index 00000000..0d669aed --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/FileExplorer/Toolbar.tsx @@ -0,0 +1,55 @@ +import React from 'react'; +import './Toolbar.css'; + +interface ToolbarProps { + viewMode: 'list' | 'grid'; + onViewModeChange: (mode: 'list' | 'grid') => void; + onNewMenu: () => void; + onUploadFiles: () => void; + onUploadFolder: () => void; + onRefresh: () => void; +} + +const Toolbar: React.FC = ({ + viewMode, + onViewModeChange, + onNewMenu, + onUploadFiles, + onUploadFolder, + onRefresh +}) => { + const toggleViewMode = () => { + onViewModeChange(viewMode === 'list' ? 'grid' : 'list'); + }; + + return ( +
+
+ + + + +
+ +
+ +
+
+ ); +}; + +export default Toolbar; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ShareDialog/ShareDialog.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ShareDialog/ShareDialog.css new file mode 100644 index 00000000..79f42251 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ShareDialog/ShareDialog.css @@ -0,0 +1,193 @@ +.share-dialog-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + justify-content: center; + z-index: 1000; +} + +.share-dialog { + background-color: var(--bg-primary); + color: var(--text-primary); + border-radius: 8px; + padding: 24px; + width: 90%; + max-width: 500px; + max-height: 90vh; + overflow-y: auto; + box-shadow: 0 4px 16px var(--shadow-color); + border: 1px solid var(--border-color); +} + +.share-dialog h3 { + margin-top: 0; + margin-bottom: 16px; + word-break: break-word; + font-size: 1.2rem; +} + +.share-options { + display: flex; + flex-direction: column; + gap: 12px; + margin-bottom: 20px; +} + +.share-options label { + display: flex; + align-items: center; + gap: 8px; + cursor: pointer; + color: var(--text-primary); +} + +.share-button { + width: 100%; + padding: 10px; + background-color: var(--link-color); + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 16px; + transition: background-color 0.2s; +} + +.share-button:hover:not(:disabled) { + background-color: var(--link-hover); +} + +.share-button:disabled { + opacity: 0.6; + cursor: not-allowed; +} + +.share-link-container { + display: flex; + gap: 8px; + margin-top: 16px; + flex-wrap: wrap; +} + +.share-link-input { + flex: 1; + min-width: 0; + padding: 8px; + border: 1px solid var(--border-color); + background-color: var(--bg-secondary); + color: var(--text-primary); + border-radius: 4px; + font-family: monospace; + font-size: 12px; + word-break: break-all; +} + +.share-link-container button { + flex-shrink: 0; + padding: 8px 16px; + background-color: var(--bg-secondary); + color: var(--text-primary); + border: 1px solid var(--border-color); + border-radius: 4px; + cursor: pointer; + transition: background-color 0.2s; +} + +.share-link-container button:hover { + background-color: var(--bg-hover); +} + +.dialog-actions { + display: flex; + justify-content: flex-end; + margin-top: 20px; + gap: 8px; +} + +.dialog-actions button { + padding: 8px 16px; + border: 1px solid var(--border-color); + background-color: var(--bg-secondary); + color: var(--text-primary); + border-radius: 4px; + cursor: pointer; + transition: background-color 0.2s; +} + +.dialog-actions button:hover { + background-color: var(--bg-hover); +} + +.loading-container { + text-align: center; + padding: 20px 0; +} + +.share-success-message { + background-color: #d4edda; + color: #155724; + padding: 12px; + border-radius: 4px; + margin-bottom: 16px; + text-align: center; +} + +.qr-container { + margin-top: 20px; + text-align: center; + padding: 16px; + background-color: var(--bg-secondary); + border-radius: 8px; + border: 1px solid var(--border-color); +} + +.qr-code canvas, +.qr-code img { + border: 1px solid var(--border-color); + border-radius: 4px; + max-width: 200px; + width: 100%; + height: auto; + display: block; + margin: 0 auto; +} + +/* Mobile responsiveness */ +@media (max-width: 480px) { + .share-dialog { + padding: 16px; + width: 95%; + } + + .share-dialog h3 { + font-size: 1rem; + } + + .share-link-input { + font-size: 11px; + padding: 6px; + } + + .share-link-container { + flex-direction: column; + } + + .share-link-container button { + width: 100%; + } + + .qr-code canvas, + .qr-code img { + max-width: 150px; + } + + .share-success-message { + font-size: 0.9rem; + padding: 10px; + } +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ShareDialog/ShareDialog.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ShareDialog/ShareDialog.tsx new file mode 100644 index 00000000..52a14f6c --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/ShareDialog/ShareDialog.tsx @@ -0,0 +1,193 @@ +import React, { useState, useEffect, useRef } from 'react'; +import { FileInfo, AuthScheme, shareFile } from '../../lib/api'; +import useFileExplorerStore from '../../store/fileExplorer'; +import QRCode from 'qrcode'; +import './ShareDialog.css'; + +interface ShareDialogProps { + file: FileInfo; + onClose: () => void; +} + +const ShareDialog: React.FC = ({ file, onClose }) => { + const [authScheme, setAuthScheme] = useState("Public"); + const [shareLink, setShareLink] = useState(''); + const [loading, setLoading] = useState(false); + const [qrCodeDataUrl, setQrCodeDataUrl] = useState(''); + const [copied, setCopied] = useState(false); + const { addSharedLink } = useFileExplorerStore(); + const canvasRef = useRef(null); + + // Detect if we're in iOS standalone mode (PWA) + const isIosPwa = () => { + return (window.navigator as any).standalone === true || + window.matchMedia('(display-mode: standalone)').matches; + }; + + // Auto-generate share link on mount + useEffect(() => { + handleShare(); + }, []); + + // Generate QR code when share link is available + useEffect(() => { + if (shareLink) { + const generateQrCode = async () => { + try { + if (isIosPwa()) { + // For iOS PWA, use canvas rendering + if (canvasRef.current) { + await QRCode.toCanvas(canvasRef.current, shareLink, { + width: 200, + margin: 2, + color: { + dark: '#000000', + light: '#FFFFFF' + } + }); + } + } else { + // For desktop and regular mobile browsers, use data URL + const dataUrl = await QRCode.toDataURL(shareLink, { + width: 200, + margin: 2, + color: { + dark: '#000000', + light: '#FFFFFF' + } + }); + setQrCodeDataUrl(dataUrl); + } + } catch (err) { + console.error('Failed to generate QR code:', err); + } + }; + + generateQrCode(); + } + }, [shareLink]); + + const handleShare = async () => { + setLoading(true); + try { + const link = await shareFile(file.path, authScheme); + + // Remove first element of origin (e.g., http://foo.bar.com -> http://bar.com) + let origin = window.location.origin; + const urlParts = new URL(origin); + const hostParts = urlParts.hostname.split('.'); + if (hostParts.length > 2) { + // Remove the first subdomain + hostParts.shift(); + urlParts.hostname = hostParts.join('.'); + origin = urlParts.toString().replace(/\/$/, ''); // Remove trailing slash + } + + const fullLink = `${origin}${link}`; + setShareLink(fullLink); + addSharedLink(file.path, fullLink); + + // Auto-copy to clipboard with fallback + try { + await navigator.clipboard.writeText(fullLink); + setCopied(true); + } catch (clipboardErr) { + // Fallback for when clipboard API fails + const textArea = document.createElement('textarea'); + textArea.value = fullLink; + textArea.style.position = 'fixed'; + textArea.style.left = '-999999px'; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + try { + document.execCommand('copy'); + setCopied(true); + } catch (e) { + console.error('Failed to copy to clipboard:', e); + } + document.body.removeChild(textArea); + } + } catch (err) { + console.error('Failed to share file:', err); + } finally { + setLoading(false); + } + }; + + const copyToClipboard = async () => { + try { + await navigator.clipboard.writeText(shareLink); + setCopied(true); + } catch (clipboardErr) { + // Fallback for when clipboard API fails + const textArea = document.createElement('textarea'); + textArea.value = shareLink; + textArea.style.position = 'fixed'; + textArea.style.left = '-999999px'; + document.body.appendChild(textArea); + textArea.focus(); + textArea.select(); + try { + document.execCommand('copy'); + setCopied(true); + } catch (e) { + console.error('Failed to copy to clipboard:', e); + } + document.body.removeChild(textArea); + } + setTimeout(() => setCopied(false), 2000); + }; + + return ( +
+
e.stopPropagation()}> +

Share File: {file.name}

+ + {loading ? ( +
+

Generating share link...

+
+ ) : shareLink ? ( + <> +
+

✓ Share link created and copied to clipboard!

+
+ +
+ + +
+ + {shareLink && ( +
+
+ {isIosPwa() ? ( + + ) : ( + qrCodeDataUrl && QR Code + )} +
+
+ )} + + ) : ( +

Failed to generate share link

+ )} + +
+ +
+
+
+ ); +}; + +export default ShareDialog; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/Upload/UploadZone.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/Upload/UploadZone.css new file mode 100644 index 00000000..5772d204 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/Upload/UploadZone.css @@ -0,0 +1,38 @@ +.upload-zone { + position: relative; + flex: 1; + display: flex; + flex-direction: column; +} + +.upload-zone.dragging { + background-color: rgba(33, 150, 243, 0.1); +} + +.upload-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(33, 150, 243, 0.2); + display: flex; + align-items: center; + justify-content: center; + pointer-events: none; + z-index: 10; +} + +[data-theme="dark"] .upload-overlay { + background-color: rgba(100, 181, 246, 0.2); +} + +.upload-message { + padding: 24px 48px; + background-color: var(--link-color); + color: white; + border-radius: 8px; + font-size: 18px; + font-weight: 500; + box-shadow: 0 4px 8px var(--shadow-color); +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/Upload/UploadZone.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/Upload/UploadZone.tsx new file mode 100644 index 00000000..3bcc775f --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/components/Upload/UploadZone.tsx @@ -0,0 +1,187 @@ +import React, { useState, useRef } from 'react'; +import { uploadFile, createDirectory } from '../../lib/api'; +import useFileExplorerStore from '../../store/fileExplorer'; +import './UploadZone.css'; + +interface UploadZoneProps { + currentPath: string; + onUploadComplete: () => void; + children: React.ReactNode; +} + +const UploadZone: React.FC = ({ currentPath, onUploadComplete, children }) => { + const [isDragging, setIsDragging] = useState(false); + const { updateUploadProgress, setError } = useFileExplorerStore(); + const dragCounter = useRef(0); + + // Listen for upload events from the toolbar + React.useEffect(() => { + const handleUploadEvent = async (e: CustomEvent) => { + const files = e.detail.files as File[]; + for (const file of files) { + await handleFileUpload(file); + } + }; + + window.addEventListener('upload-files', handleUploadEvent as EventListener); + return () => { + window.removeEventListener('upload-files', handleUploadEvent as EventListener); + }; + }, [currentPath, onUploadComplete]); + + const handleDrag = (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + }; + + const handleDragIn = (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + dragCounter.current++; + if (e.dataTransfer.items && e.dataTransfer.items.length > 0) { + setIsDragging(true); + } + }; + + const handleDragOut = (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + dragCounter.current--; + if (dragCounter.current === 0) { + setIsDragging(false); + } + }; + + const handleDrop = async (e: React.DragEvent) => { + e.preventDefault(); + e.stopPropagation(); + setIsDragging(false); + dragCounter.current = 0; + + // Handle both files and folders + const items = e.dataTransfer.items; + if (items) { + // Use DataTransferItemList interface when available + const files: File[] = []; + + for (let i = 0; i < items.length; i++) { + const item = items[i]; + if (item.kind === 'file') { + const entry = item.webkitGetAsEntry?.(); + if (entry) { + await processEntry(entry, '', files); + } else { + // Fallback to getAsFile for browsers that don't support webkitGetAsEntry + const file = item.getAsFile(); + if (file) files.push(file); + } + } + } + + // Upload all collected files + for (const file of files) { + await handleFileUpload(file); + } + } else { + // Fallback for browsers that don't support DataTransferItemList + const files = Array.from(e.dataTransfer.files); + for (const file of files) { + await handleFileUpload(file); + } + } + }; + + // Recursively process file system entries (for folder support) + const processEntry = async (entry: any, path: string, files: File[]): Promise => { + if (entry.isFile) { + // Handle file + return new Promise((resolve) => { + entry.file((file: File) => { + // Add the relative path to the file object + Object.defineProperty(file, 'webkitRelativePath', { + value: path + file.name, + writable: false + }); + files.push(file); + resolve(); + }); + }); + } else if (entry.isDirectory) { + // Handle directory + const dirReader = entry.createReader(); + return new Promise((resolve) => { + dirReader.readEntries(async (entries: any[]) => { + for (const childEntry of entries) { + await processEntry(childEntry, path + entry.name + '/', files); + } + resolve(); + }); + }); + } + }; + + const handleFileUpload = async (file: File) => { + const fileId = `${file.name}-${Date.now()}`; + + try { + updateUploadProgress(fileId, 0); + + const content = await file.arrayBuffer(); + const contentArray = Array.from(new Uint8Array(content)); + + // Check if file is part of a folder upload + const relativePath = (file as any).webkitRelativePath || ''; + let uploadPath = currentPath; + let fileName = file.name; + + if (relativePath) { + // Handle folder structure + const pathParts = relativePath.split('/'); + fileName = pathParts.pop() || file.name; + + // Create nested folder structure + for (const folderName of pathParts) { + uploadPath = uploadPath === '/' ? `/${folderName}` : `${uploadPath}/${folderName}`; + try { + await createDirectory(uploadPath); + } catch (err) { + // Ignore if directory already exists + console.log(`Directory ${uploadPath} might already exist`); + } + } + } + + // Simulate upload progress + updateUploadProgress(fileId, 50); + + await uploadFile(uploadPath, fileName, contentArray); + + updateUploadProgress(fileId, 100); + onUploadComplete(); + } catch (err) { + setError(err instanceof Error ? err.message : 'Upload failed'); + updateUploadProgress(fileId, 100); // Remove from progress + } + }; + + return ( +
+ {children} + {isDragging && ( +
+
+ Drop files or folders here to upload +
+
+ )} +
+ ); +}; + +export default UploadZone; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/contexts/ThemeContext.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/contexts/ThemeContext.tsx new file mode 100644 index 00000000..4394b10a --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/contexts/ThemeContext.tsx @@ -0,0 +1,56 @@ +import React, { createContext, useContext, useEffect, useState } from 'react'; + +type Theme = 'light' | 'dark'; + +interface ThemeContextType { + theme: Theme; + toggleTheme: () => void; +} + +const ThemeContext = createContext(undefined); + +export const useTheme = () => { + const context = useContext(ThemeContext); + if (!context) { + throw new Error('useTheme must be used within a ThemeProvider'); + } + return context; +}; + +export const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => { + // Auto-detect system theme preference + const getSystemTheme = (): Theme => { + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + return 'dark'; + } + return 'light'; + }; + + const [theme, setTheme] = useState(getSystemTheme()); + + useEffect(() => { + // Apply theme to document root + document.documentElement.setAttribute('data-theme', theme); + }, [theme]); + + useEffect(() => { + // Listen for system theme changes + const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); + const handleChange = (e: MediaQueryListEvent) => { + setTheme(e.matches ? 'dark' : 'light'); + }; + + mediaQuery.addEventListener('change', handleChange); + return () => mediaQuery.removeEventListener('change', handleChange); + }, []); + + const toggleTheme = () => { + setTheme(prev => prev === 'light' ? 'dark' : 'light'); + }; + + return ( + + {children} + + ); +}; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/index.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/index.css new file mode 100644 index 00000000..5b7e24b3 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/index.css @@ -0,0 +1,120 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* Light theme variables */ +[data-theme="light"] { + --bg-primary: #ffffff; + --bg-secondary: #f5f5f5; + --bg-hover: #e9e9e9; + --bg-selected: #e3f2fd; + --text-primary: #213547; + --text-secondary: #666666; + --border-color: #e0e0e0; + --shadow-color: rgba(0, 0, 0, 0.1); + --link-color: #0066cc; + --link-hover: #0052a3; + --error-color: #d32f2f; + --success-color: #388e3c; +} + +/* Dark theme variables */ +[data-theme="dark"] { + --bg-primary: #1e1e1e; + --bg-secondary: #2d2d2d; + --bg-hover: #3a3a3a; + --bg-selected: #1a4d7a; + --text-primary: #e0e0e0; + --text-secondary: #b0b0b0; + --border-color: #404040; + --shadow-color: rgba(0, 0, 0, 0.3); + --link-color: #64b5f6; + --link-hover: #90caf9; + --error-color: #f44336; + --success-color: #66bb6a; +} + +/* Apply theme colors */ +body { + margin: 0; + padding: 0; + min-width: 320px; + min-height: 100vh; + color: var(--text-primary); + background-color: var(--bg-primary); + transition: background-color 0.3s ease, color 0.3s ease; + overflow: hidden; +} + +#root { + width: 100%; + height: 100vh; + margin: 0; + padding: 0; + overflow: hidden; +} + +a { + font-weight: 500; + color: var(--link-color); + text-decoration: inherit; +} +a:hover { + color: var(--link-hover); +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +ul { + list-style: none; + padding: 0; + margin: 0; +} + +button { + border-radius: 8px; + border: 1px solid var(--border-color); + padding: 0.6em 1.2em; + background-color: var(--bg-secondary); + color: var(--text-primary); + font-size: 1em; + font-weight: 500; + font-family: inherit; + cursor: pointer; + transition: background-color 0.25s, border-color 0.25s; +} +button:hover { + background-color: var(--bg-hover); + border-color: var(--text-secondary); +} +button:focus, +button:focus-visible { + outline: 2px solid var(--link-color); + outline-offset: 2px; +} + +/* Additional utility classes */ +.error-message { + color: var(--error-color); + padding: 1rem; + background-color: var(--bg-secondary); + border-radius: 4px; + margin: 0.5rem 0; +} + +.success-message { + color: var(--success-color); + padding: 1rem; + background-color: var(--bg-secondary); + border-radius: 4px; + margin: 0.5rem 0; +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/lib/api.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/lib/api.ts new file mode 100644 index 00000000..2d0912e4 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/lib/api.ts @@ -0,0 +1,2 @@ +// Re-export everything from the generated caller-utils +export * from '../types/api'; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/main.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/main.tsx new file mode 100644 index 00000000..3d7150da --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/store/fileExplorer.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/store/fileExplorer.ts new file mode 100644 index 00000000..9e04b585 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/store/fileExplorer.ts @@ -0,0 +1,110 @@ +import { create } from 'zustand'; +import { FileInfo } from '../lib/api'; + +interface FileExplorerStore { + currentPath: string; + files: FileInfo[]; + selectedFiles: string[]; + expandedDirectories: Set; + uploadProgress: Map; + sharedLinks: Map; + loading: boolean; + error: string | null; + + // Actions + setCurrentPath: (path: string) => void; + setFiles: (files: FileInfo[]) => void; + selectFile: (path: string) => void; + deselectFile: (path: string) => void; + toggleFileSelection: (path: string) => void; + clearSelection: () => void; + selectAll: () => void; + toggleDirectoryExpanded: (path: string) => void; + updateUploadProgress: (fileId: string, progress: number) => void; + addSharedLink: (path: string, link: string) => void; + removeSharedLink: (path: string) => void; + isFileShared: (path: string) => boolean; + setLoading: (loading: boolean) => void; + setError: (error: string | null) => void; +} + +const useFileExplorerStore = create((set, get) => ({ + currentPath: '', // Start with empty path to avoid loading root before home is set + files: [], + selectedFiles: [], + expandedDirectories: new Set(), + uploadProgress: new Map(), + sharedLinks: new Map(), + loading: false, + error: null, + + setCurrentPath: (path) => set({ currentPath: path }), + + setFiles: (files) => set({ files, error: null }), + + selectFile: (path) => set((state) => ({ + selectedFiles: [...state.selectedFiles, path] + })), + + deselectFile: (path) => set((state) => ({ + selectedFiles: state.selectedFiles.filter(p => p !== path) + })), + + toggleFileSelection: (path) => { + const state = get(); + if (state.selectedFiles.includes(path)) { + state.deselectFile(path); + } else { + state.selectFile(path); + } + }, + + clearSelection: () => set({ selectedFiles: [] }), + + selectAll: () => set((state) => ({ + selectedFiles: state.files.map(f => f.path) + })), + + toggleDirectoryExpanded: (path) => set((state) => { + const newExpanded = new Set(state.expandedDirectories); + if (newExpanded.has(path)) { + newExpanded.delete(path); + } else { + newExpanded.add(path); + } + return { expandedDirectories: newExpanded }; + }), + + updateUploadProgress: (fileId, progress) => set((state) => { + const newProgress = new Map(state.uploadProgress); + if (progress >= 100) { + newProgress.delete(fileId); + } else { + newProgress.set(fileId, progress); + } + return { uploadProgress: newProgress }; + }), + + addSharedLink: (path, link) => set((state) => { + const newLinks = new Map(state.sharedLinks); + newLinks.set(path, link); + return { sharedLinks: newLinks }; + }), + + removeSharedLink: (path) => set((state) => { + const newLinks = new Map(state.sharedLinks); + newLinks.delete(path); + return { sharedLinks: newLinks }; + }), + + isFileShared: (path) => { + const state = get(); + return state.sharedLinks.has(path); + }, + + setLoading: (loading) => set({ loading }), + + setError: (error) => set({ error }), +})); + +export default useFileExplorerStore; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/api.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/api.ts new file mode 100644 index 00000000..68d8d24a --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/api.ts @@ -0,0 +1,2 @@ +// Re-export everything from caller-utils +export * from '../../../target/ui/caller-utils'; \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/caller-utils.d.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/caller-utils.d.ts new file mode 100644 index 00000000..e6eb2774 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/caller-utils.d.ts @@ -0,0 +1,17 @@ +// Temporary type declarations for caller-utils +declare module '../../../target/ui/caller-utils' { + export interface FileInfo { + name: string; + path: string; + size: number; + created: number; + modified: number; + is_directory: boolean; + permissions: string; + } + + export enum AuthScheme { + Public = "public", + Private = "private" + } +} \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/global.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/global.ts new file mode 100644 index 00000000..44640a4c --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/types/global.ts @@ -0,0 +1,10 @@ +declare module "global" { + global { + interface Window { + our: { + node: string; + process: string; + }; + } + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/vite-env.d.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/tsconfig.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/tsconfig.json new file mode 100644 index 00000000..6f148432 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + // "strict": true, + // "noUnusedLocals": true, + // "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src", + "../pkg/manifest.json", + "../pkg/metadata.json", + ], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/tsconfig.node.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/tsconfig.node.json new file mode 100644 index 00000000..42872c59 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/vite.config.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/vite.config.ts new file mode 100644 index 00000000..3683e564 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/file-explorer/ui/vite.config.ts @@ -0,0 +1,67 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +/* +If you are developing a UI outside of a Hyperware project, +comment out the following 2 lines: +*/ +import manifest from '../pkg/manifest.json' +import metadata from '../metadata.json' + +/* +IMPORTANT: +This must match the process name from pkg/manifest.json + pkg/metadata.json +The format is "/" + "process_name:package_name:publisher_node" +*/ +const BASE_URL = `/${manifest[0].process_name}:${metadata.properties.package_name}:${metadata.properties.publisher}`; + +// This is the proxy URL, it must match the node you are developing against +const PROXY_URL = (process.env.VITE_NODE_URL || 'http://127.0.0.1:8080').replace('localhost', '127.0.0.1'); + +console.log('process.env.VITE_NODE_URL', process.env.VITE_NODE_URL, PROXY_URL); + +export default defineConfig({ + plugins: [react()], + base: BASE_URL, + build: { + rollupOptions: { + external: ['/our.js'] + } + }, + server: { + open: true, + proxy: { + '/our': { + target: PROXY_URL, + changeOrigin: true, + }, + [`${BASE_URL}/our.js`]: { + target: PROXY_URL, + changeOrigin: true, + rewrite: (path) => path.replace(BASE_URL, ''), + }, + // This route will match all other HTTP requests to the backend + [`^${BASE_URL}/(?!(@vite/client|src/.*|node_modules/.*|@react-refresh|$))`]: { + target: PROXY_URL, + changeOrigin: true, + }, + // '/example': { + // target: PROXY_URL, + // changeOrigin: true, + // rewrite: (path) => path.replace(BASE_URL, ''), + // // This is only for debugging purposes + // configure: (proxy, _options) => { + // proxy.on('error', (err, _req, _res) => { + // console.log('proxy error', err); + // }); + // proxy.on('proxyReq', (proxyReq, req, _res) => { + // console.log('Sending Request to the Target:', req.method, req.url); + // }); + // proxy.on('proxyRes', (proxyRes, req, _res) => { + // console.log('Received Response from the Target:', proxyRes.statusCode, req.url); + // }); + // }, + // }, + } + } +}); diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/Cargo.toml b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/Cargo.toml new file mode 100644 index 00000000..bf793365 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/Cargo.toml @@ -0,0 +1,11 @@ +[profile.release] +lto = true +opt-level = "s" +panic = "abort" + +[workspace] +members = [ + "id", + "target/caller-utils", +] +resolver = "2" diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/README.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/README.md new file mode 100644 index 00000000..b0027a8a --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/README.md @@ -0,0 +1,3 @@ +# id + +For use with https://github.com/nick1udwig/sign diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/4247a91.rs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/4247a91.rs new file mode 100644 index 00000000..d7d1806f --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/4247a91.rs @@ -0,0 +1,10009 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use caller_utils::sign::{sign_local_rpc, verify_local_rpc}; +use hyperprocess_macro::hyperprocess; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::{Address, println}; +struct IdState {} +#[automatically_derived] +impl ::core::default::Default for IdState { + #[inline] + fn default() -> IdState { + IdState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for IdState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "IdState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for IdState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "IdState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for IdState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = IdState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct IdState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(IdState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(IdState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "IdState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +fn make_sign_sys() -> Address { + Address::new("our", ("sign", "sign", "sys")) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_id_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod id { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (http) + pub struct SignSignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureHttp { + #[inline] + fn clone(&self) -> SignSignatureHttp { + SignSignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureHttp> for Vec { + fn from(value: &'a SignSignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureHttp", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (http) + pub struct VerifySignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureHttp { + #[inline] + fn clone(&self) -> VerifySignatureHttp { + VerifySignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureHttp> for Vec { + fn from(value: &'a VerifySignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureHttp, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureHttp", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_id_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"interface id {\nuse standard.{address};\n\n // Function signature for: sign (http)\n record sign-signature-http {\n target: string,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (http)\n record verify-signature-http {\n target: string,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world types-id-sys-v0 {\n import id;\n include lib;\n}"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +const _: &[u8] = b"world types {\n include types-sign-sys-v0;\n include types-id-sys-v0;\n}\n"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +const _: &[u8] = b"interface sign {\nuse standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +const _: &[u8] = b"world id-sys-v0 {\n import id;\n include process-v1;\n}"; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl IdState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("a")); + res + }), + ); + }; + let target = make_sign_sys(); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("b")); + res + }), + ); + }; + match sign_local_rpc(&target, message).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + let target = make_sign_sys(); + match verify_local_rpc(&target, message, signature).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut IdState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("http response a"), + ); + res + }), + ); + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("http response b"), + ); + res + }), + ); + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("http response c"), + ); + res + }), + ); + }; + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("http response a"), + ); + res + }), + ); + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("http response b"), + ); + res + }), + ); + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("http response c"), + ); + res + }), + ); + }; + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-http request variant received in http handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No local handlers defined but received a local request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}\nRaw request value: {1:?}", + e, + message.body(), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "id"; + let app_icon = None; + let app_widget = None; + let ui_config = Some(HttpBindingConfig::default()); + let endpoints = <[_]>::into_vec( + #[rustc_box] + ::alloc::boxed::Box::new([ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default(), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default(), + }, + ]), + ); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut IdState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_message = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(ref error) => { + if let hyperware_process_lib::SendError { + context: Some(context), + .. + } = error { + let correlation_id = String::from_utf8_lossy(context) + .to_string(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut + .insert(correlation_id, serde_json::to_vec(error).unwrap()); + }); + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/Cargo.toml b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/Cargo.toml new file mode 100644 index 00000000..81a3cd48 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/Cargo.toml @@ -0,0 +1,35 @@ +[dependencies] +anyhow = "1.0.97" +process_macros = "0.1" +rmp-serde = "1.3.0" +serde_json = "1.0" +wit-bindgen = "0.36.0" + +[dependencies.caller-utils] +path = "../target/caller-utils" + +[dependencies.hyperprocess_macro] +git = "https://github.com/hyperware-ai/hyperprocess-macro" +rev = "4c944b2" + +[dependencies.hyperware_app_common] +git = "https://github.com/hyperware-ai/hyperprocess-macro" +rev = "4c944b2" + +[dependencies.serde] +features = ["derive"] +version = "1.0" + +[features] +simulation-mode = [] + +[lib] +crate-type = ["cdylib"] + +[package] +edition = "2021" +name = "id" +version = "0.1.0" + +[package.metadata.component] +package = "hyperware:process" diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/b6ad495.rs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/b6ad495.rs new file mode 100644 index 00000000..9dbec1a4 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/b6ad495.rs @@ -0,0 +1,9968 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use caller_utils::sign::{sign_local_rpc, verify_local_rpc}; +use hyperprocess_macro::hyperprocess; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::Address; +struct IdState {} +#[automatically_derived] +impl ::core::default::Default for IdState { + #[inline] + fn default() -> IdState { + IdState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for IdState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "IdState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for IdState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "IdState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for IdState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = IdState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct IdState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(IdState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(IdState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "IdState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +fn make_sign_sys() -> Address { + Address::new("our", ("sign", "sign", "sys")) +} +const CURRENT_MESSAGE: ::std::thread::LocalKey< + std::cell::RefCell>, +> = { + #[inline] + fn __init() -> std::cell::RefCell> { + std::cell::RefCell::new(None) + } + unsafe { + ::std::thread::LocalKey::new(const { + if ::std::mem::needs_drop::< + std::cell::RefCell>, + >() { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + (), + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } else { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + !, + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } + }) + } +}; +fn source() -> hyperware_process_lib::Address { + CURRENT_MESSAGE + .with(|cell| { + cell.borrow() + .as_ref() + .expect("No message in current context") + .source() + .clone() + }) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_id_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod id { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (http) + pub struct SignSignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureHttp { + #[inline] + fn clone(&self) -> SignSignatureHttp { + SignSignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureHttp> for Vec { + fn from(value: &'a SignSignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureHttp", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (http) + pub struct VerifySignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureHttp { + #[inline] + fn clone(&self) -> VerifySignatureHttp { + VerifySignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureHttp> for Vec { + fn from(value: &'a VerifySignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureHttp, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureHttp", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_id_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"world types-id-sys-v0 {\n import id;\n include lib;\n}"; +const _: &[u8] = b"world types {\n include types-sign-sys-v0;\n include types-id-sys-v0;\n}\n"; +const _: &[u8] = b"interface sign {\nuse standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"interface id {\nuse standard.{address};\n\n // Function signature for: sign (http)\n record sign-signature-http {\n target: string,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (http)\n record verify-signature-http {\n target: string,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +const _: &[u8] = b"world id-sys-v0 {\n import id;\n include process-v1;\n}"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl IdState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + let target = make_sign_sys(); + match sign_local_rpc(&target, message).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + let target = make_sign_sys(); + match verify_local_rpc(&target, message, signature).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut IdState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-http request variant received in http handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No local handlers defined but received a local request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}\nRaw request value: {1:?}", + e, + message.body(), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "id"; + let app_icon = None; + let app_widget = None; + let ui_config = Some(HttpBindingConfig::default()); + let endpoints = <[_]>::into_vec( + #[rustc_box] + ::alloc::boxed::Box::new([ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default(), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default(), + }, + ]), + ); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut IdState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + CURRENT_MESSAGE + .with(|cell| { + *cell.borrow_mut() = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(ref error) => { + if let hyperware_process_lib::SendError { + context: Some(context), + .. + } = error { + let correlation_id = String::from_utf8_lossy(context) + .to_string(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut + .insert(correlation_id, serde_json::to_vec(error).unwrap()); + }); + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/ce0d06e-2.rs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/ce0d06e-2.rs new file mode 100644 index 00000000..f7141758 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/ce0d06e-2.rs @@ -0,0 +1,9943 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use caller_utils::sign::{sign_local_rpc, verify_local_rpc}; +use hyperprocess_macro::hyperprocess; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::{Address, println}; +struct IdState {} +#[automatically_derived] +impl ::core::default::Default for IdState { + #[inline] + fn default() -> IdState { + IdState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for IdState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "IdState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for IdState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "IdState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for IdState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = IdState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct IdState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(IdState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(IdState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "IdState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +fn make_sign_sys() -> Address { + Address::new("our", ("sign", "sign", "sys")) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_id_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod id { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (http) + pub struct SignSignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureHttp { + #[inline] + fn clone(&self) -> SignSignatureHttp { + SignSignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureHttp> for Vec { + fn from(value: &'a SignSignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureHttp", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (http) + pub struct VerifySignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureHttp { + #[inline] + fn clone(&self) -> VerifySignatureHttp { + VerifySignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureHttp> for Vec { + fn from(value: &'a VerifySignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureHttp, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureHttp", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_id_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"interface sign {\nuse standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +const _: &[u8] = b"world id-sys-v0 {\n import id;\n include process-v1;\n}"; +const _: &[u8] = b"world types-id-sys-v0 {\n import id;\n include lib;\n}"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +const _: &[u8] = b"world types {\n include types-sign-sys-v0;\n include types-id-sys-v0;\n}\n"; +const _: &[u8] = b"interface id {\nuse standard.{address};\n\n // Function signature for: sign (http)\n record sign-signature-http {\n target: string,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (http)\n record verify-signature-http {\n target: string,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl IdState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("a")); + res + }), + ); + }; + let target = make_sign_sys(); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("b")); + res + }), + ); + }; + match sign_local_rpc(&target, message).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + let target = make_sign_sys(); + match verify_local_rpc(&target, message, signature).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut IdState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-http request variant received in http handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No local handlers defined but received a local request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}\nRaw request value: {1:?}", + e, + message.body(), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "id"; + let app_icon = None; + let app_widget = None; + let ui_config = Some(HttpBindingConfig::default()); + let endpoints = <[_]>::into_vec( + #[rustc_box] + ::alloc::boxed::Box::new([ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default(), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default(), + }, + ]), + ); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut IdState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_message = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(ref error) => { + if let hyperware_process_lib::SendError { + context: Some(context), + .. + } = error { + let correlation_id = String::from_utf8_lossy(context) + .to_string(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut + .insert(correlation_id, serde_json::to_vec(error).unwrap()); + }); + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/ce0d06e.rs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/ce0d06e.rs new file mode 100644 index 00000000..03c777aa --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/ce0d06e.rs @@ -0,0 +1,9925 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use caller_utils::sign::{sign_local_rpc, verify_local_rpc}; +use hyperprocess_macro::hyperprocess; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::Address; +struct IdState {} +#[automatically_derived] +impl ::core::default::Default for IdState { + #[inline] + fn default() -> IdState { + IdState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for IdState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "IdState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for IdState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "IdState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for IdState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = IdState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct IdState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(IdState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(IdState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "IdState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +fn make_sign_sys() -> Address { + Address::new("our", ("sign", "sign", "sys")) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_id_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod id { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (http) + pub struct SignSignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureHttp { + #[inline] + fn clone(&self) -> SignSignatureHttp { + SignSignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureHttp> for Vec { + fn from(value: &'a SignSignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureHttp", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (http) + pub struct VerifySignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureHttp { + #[inline] + fn clone(&self) -> VerifySignatureHttp { + VerifySignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureHttp> for Vec { + fn from(value: &'a VerifySignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureHttp, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureHttp", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_id_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"world types-id-sys-v0 {\n import id;\n include lib;\n}"; +const _: &[u8] = b"interface id {\nuse standard.{address};\n\n // Function signature for: sign (http)\n record sign-signature-http {\n target: string,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (http)\n record verify-signature-http {\n target: string,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +const _: &[u8] = b"world id-sys-v0 {\n import id;\n include process-v1;\n}"; +const _: &[u8] = b"world types {\n include types-sign-sys-v0;\n include types-id-sys-v0;\n}\n"; +const _: &[u8] = b"interface sign {\nuse standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl IdState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + let target = make_sign_sys(); + match sign_local_rpc(&target, message).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + let target = make_sign_sys(); + match verify_local_rpc(&target, message, signature).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut IdState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-http request variant received in http handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No local handlers defined but received a local request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}\nRaw request value: {1:?}", + e, + message.body(), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "id"; + let app_icon = None; + let app_widget = None; + let ui_config = Some(HttpBindingConfig::default()); + let endpoints = <[_]>::into_vec( + #[rustc_box] + ::alloc::boxed::Box::new([ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default(), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default(), + }, + ]), + ); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut IdState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + hyperware_app_common::APP_HELPERS + .with(|ctx| { + ctx.borrow_mut().current_message = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(ref error) => { + if let hyperware_process_lib::SendError { + context: Some(context), + .. + } = error { + let correlation_id = String::from_utf8_lossy(context) + .to_string(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut + .insert(correlation_id, serde_json::to_vec(error).unwrap()); + }); + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-id-old.txt b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-id-old.txt new file mode 100644 index 00000000..7ac06dcc --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-id-old.txt @@ -0,0 +1,10207 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use caller_utils::sign::{sign_local_rpc, verify_local_rpc}; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_app_common::SendResult; +use hyperprocess_macro::hyperprocess; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::Address; +struct IdState {} +#[automatically_derived] +impl ::core::default::Default for IdState { + #[inline] + fn default() -> IdState { + IdState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for IdState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "IdState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for IdState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "IdState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for IdState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = IdState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct IdState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(IdState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(IdState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "IdState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +fn make_sign_sys() -> Address { + Address::new("our", ("sign", "sign", "sys")) +} +const CURRENT_MESSAGE: ::std::thread::LocalKey< + std::cell::RefCell>, +> = { + #[inline] + fn __init() -> std::cell::RefCell> { + std::cell::RefCell::new(None) + } + unsafe { + ::std::thread::LocalKey::new(const { + if ::std::mem::needs_drop::< + std::cell::RefCell>, + >() { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + (), + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } else { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + !, + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } + }) + } +}; +fn source() -> hyperware_process_lib::Address { + CURRENT_MESSAGE + .with(|cell| { + cell.borrow() + .as_ref() + .expect("No message in current context") + .source() + .clone() + }) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_id_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod id { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (http) + pub struct SignSignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureHttp { + #[inline] + fn clone(&self) -> SignSignatureHttp { + SignSignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureHttp> for Vec { + fn from(value: &'a SignSignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureHttp", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (http) + pub struct VerifySignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureHttp { + #[inline] + fn clone(&self) -> VerifySignatureHttp { + VerifySignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureHttp> for Vec { + fn from(value: &'a VerifySignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureHttp, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureHttp", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_id_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"world types {\n include types-sign-sys-v0;\n include types-id-sys-v0;\n}\n"; +const _: &[u8] = b"world types-id-sys-v0 {\n import id;\n include lib;\n}"; +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +const _: &[u8] = b"interface sign {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world id-sys-v0 {\n import id;\n include process-v1;\n}"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +const _: &[u8] = b"interface id {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (http)\n record sign-signature-http {\n target: string,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (http)\n record verify-signature-http {\n target: string,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl IdState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + let target = make_sign_sys(); + match sign_local_rpc(&target, message).await { + SendResult::Success(r) => r, + _ => Err("oops".to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + let target = make_sign_sys(); + match verify_local_rpc(&target, message, signature).await { + SendResult::Success(r) => r, + _ => Err("oops".to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut IdState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-http request variant received in http handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No local handlers defined but received a local request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Raw request value: {0:?}", req_value) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:15", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(15u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "id"; + let app_icon = None; + let app_widget = None; + let ui_config = Some(HttpBindingConfig::default()); + let endpoints = <[_]>::into_vec( + #[rustc_box] + ::alloc::boxed::Box::new([ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default(), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default(), + }, + ]), + ); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut IdState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + CURRENT_MESSAGE + .with(|cell| { + *cell.borrow_mut() = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(error) => { + let kind = &error.kind; + let target = &error.target; + let body = String::from_utf8(error.message.body().to_vec()) + .map(|s| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("\"{0}\"", s)); + res + })) + .unwrap_or_else(|_| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("{0:?}", error.message.body()), + ); + res + })); + let context = error + .context + .as_ref() + .map(|bytes| String::from_utf8_lossy(bytes).into_owned()); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!( + "SendError {{\n kind: {0:?},\n target: {1},\n body: {2},\n context: {3}\n }}", + kind, + target, + body, + context + .map(|s| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("\"{0}\"", s)); + res + })) + .unwrap_or("None".to_string()), + ), + ); + res + }), + ); + }; + if let hyperware_process_lib::SendError { + kind, + context: Some(context), + .. + } = &error { + if let Ok(correlation_id) = String::from_utf8(context.to_vec()) { + let none_response = serde_json::to_vec(kind).unwrap(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, none_response); + }); + } + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-id.txt b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-id.txt new file mode 100644 index 00000000..6e53b400 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-id.txt @@ -0,0 +1,10166 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use caller_utils::sign::{sign_local_rpc, verify_local_rpc}; +use hyperprocess_macro::hyperprocess; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::Address; +struct IdState {} +#[automatically_derived] +impl ::core::default::Default for IdState { + #[inline] + fn default() -> IdState { + IdState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for IdState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "IdState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for IdState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "IdState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for IdState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = IdState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct IdState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(IdState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(IdState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "IdState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +fn make_sign_sys() -> Address { + Address::new("our", ("sign", "sign", "sys")) +} +const CURRENT_MESSAGE: ::std::thread::LocalKey< + std::cell::RefCell>, +> = { + #[inline] + fn __init() -> std::cell::RefCell> { + std::cell::RefCell::new(None) + } + unsafe { + ::std::thread::LocalKey::new(const { + if ::std::mem::needs_drop::< + std::cell::RefCell>, + >() { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + (), + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } else { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + !, + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } + }) + } +}; +fn source() -> hyperware_process_lib::Address { + CURRENT_MESSAGE + .with(|cell| { + cell.borrow() + .as_ref() + .expect("No message in current context") + .source() + .clone() + }) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_id_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod id { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (http) + pub struct SignSignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureHttp { + #[inline] + fn clone(&self) -> SignSignatureHttp { + SignSignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureHttp> for Vec { + fn from(value: &'a SignSignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureHttp with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureHttp { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureHttp", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (http) + pub struct VerifySignatureHttp { + pub target: _rt::String, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureHttp { + #[inline] + fn clone(&self) -> VerifySignatureHttp { + VerifySignatureHttp { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureHttp> for Vec { + fn from(value: &'a VerifySignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureHttp with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureHttp { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureHttp, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureHttp", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureHttp") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_id_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +const _: &[u8] = b"interface sign {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world types {\n include types-sign-sys-v0;\n include types-id-sys-v0;\n}\n"; +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +const _: &[u8] = b"interface id {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (http)\n record sign-signature-http {\n target: string,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (http)\n record verify-signature-http {\n target: string,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +const _: &[u8] = b"world types-id-sys-v0 {\n import id;\n include lib;\n}"; +const _: &[u8] = b"world id-sys-v0 {\n import id;\n include process-v1;\n}"; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl IdState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + let target = make_sign_sys(); + match sign_local_rpc(&target, message).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + let target = make_sign_sys(); + match verify_local_rpc(&target, message, signature).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut IdState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-http request variant received in http handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No local handlers defined but received a local request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Raw request value: {0:?}", req_value) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "id"; + let app_icon = None; + let app_widget = None; + let ui_config = Some(HttpBindingConfig::default()); + let endpoints = <[_]>::into_vec( + #[rustc_box] + ::alloc::boxed::Box::new([ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default(), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default(), + }, + ]), + ); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut IdState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + CURRENT_MESSAGE + .with(|cell| { + *cell.borrow_mut() = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(ref error) => { + if let hyperware_process_lib::SendError { + context: Some(context), + .. + } = error { + let correlation_id = String::from_utf8_lossy(context) + .to_string(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut + .insert(correlation_id, serde_json::to_vec(error).unwrap()); + }); + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-sign-old.txt b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-sign-old.txt new file mode 100644 index 00000000..eb6debf5 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-sign-old.txt @@ -0,0 +1,10319 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use anyhow::anyhow; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::net::{NetAction, NetResponse}; +use hyperware_process_lib::{last_blob, our, LazyLoadBlob, Request}; +use hyperware_app_common::{send_rmp, SendResult}; +use hyperprocess_macro::hyperprocess; +struct SignState {} +#[automatically_derived] +impl ::core::default::Default for SignState { + #[inline] + fn default() -> SignState { + SignState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for SignState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "SignState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(SignState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(SignState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +async fn sign(message: Vec) -> anyhow::Result> { + let message = make_message(&message); + let body = rmp_serde::to_vec(&NetAction::Sign)?; + let req = Request::to(("our", "net", "distro", "sys")) + .expects_response(5) + .blob(LazyLoadBlob { + mime: None, + bytes: message, + }) + .body(body); + let _resp: NetResponse = match send_rmp(req).await { + SendResult::Success(r) => r, + SendResult::Timeout => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("timeout")); + error + }), + ); + } + SendResult::Offline => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("offline")); + error + }), + ); + } + SendResult::DeserializationError(e) => { + return Err( + ::anyhow::__private::must_use({ + use ::anyhow::__private::kind::*; + let error = match e { + error => (&error).anyhow_kind().new(error), + }; + error + }), + ); + } + SendResult::BuildError(e) => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("{0}", e)); + error + }), + ); + } + }; + let Some(signature) = last_blob() else { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("no blob")); + error + }), + ); + }; + Ok(signature.bytes) +} +async fn verify(message: Vec, signature: Vec) -> anyhow::Result { + let message = make_message(&message); + let body = rmp_serde::to_vec( + &NetAction::Verify { + from: our(), + signature, + }, + )?; + let req = Request::to(("our", "net", "distro", "sys")) + .expects_response(5) + .blob(LazyLoadBlob { + mime: None, + bytes: message, + }) + .body(body); + let resp: NetResponse = match send_rmp(req).await { + SendResult::Success(r) => r, + SendResult::Timeout => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("timeout")); + error + }), + ); + } + SendResult::Offline => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("offline")); + error + }), + ); + } + SendResult::DeserializationError(e) => { + return Err( + ::anyhow::__private::must_use({ + use ::anyhow::__private::kind::*; + let error = match e { + error => (&error).anyhow_kind().new(error), + }; + error + }), + ); + } + SendResult::BuildError(e) => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("{0}", e)); + error + }), + ); + } + }; + match resp { + NetResponse::Verified(is_good) => Ok(is_good), + _ => { + Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err( + format_args!("weird response"), + ); + error + }), + ) + } + } +} +/// net:distro:sys prepends the message to sign with the sender of the request +/// +/// since any sign requests passed through sign:sign:sys will look to net:distro:sys +/// like they come from sign:sign:sys, we additionally prepend the message with +/// source here +/// +/// so final message to be signed looks like +/// +/// [sign-address, source, bytes].concat() +fn make_message(bytes: &Vec) -> Vec { + [source().to_string().as_bytes(), &bytes].concat() +} +const CURRENT_MESSAGE: ::std::thread::LocalKey< + std::cell::RefCell>, +> = { + #[inline] + fn __init() -> std::cell::RefCell> { + std::cell::RefCell::new(None) + } + unsafe { + ::std::thread::LocalKey::new(const { + if ::std::mem::needs_drop::< + std::cell::RefCell>, + >() { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + (), + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } else { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + !, + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } + }) + } +}; +fn source() -> hyperware_process_lib::Address { + CURRENT_MESSAGE + .with(|cell| { + cell.borrow() + .as_ref() + .expect("No message in current context") + .source() + .clone() + }) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_sign_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod sign { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (local) + pub struct SignSignatureLocal { + pub target: Address, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureLocal { + #[inline] + fn clone(&self) -> SignSignatureLocal { + SignSignatureLocal { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureLocal) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureLocal> for Vec { + fn from(value: &'a SignSignatureLocal) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureLocal { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureLocal { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureLocal { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureLocal; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureLocal", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureLocal { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureLocal { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureLocal", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + SignSignatureLocal, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureLocal { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureLocal", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureLocal { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureLocal") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (local) + pub struct VerifySignatureLocal { + pub target: Address, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureLocal { + #[inline] + fn clone(&self) -> VerifySignatureLocal { + VerifySignatureLocal { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureLocal) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureLocal> for Vec { + fn from(value: &'a VerifySignatureLocal) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureLocal { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureLocal { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureLocal { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureLocal; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureLocal", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureLocal { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureLocal { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureLocal", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureLocal, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureLocal { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureLocal", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureLocal { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureLocal") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_sign_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +const _: &[u8] = b"interface sign {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl SignState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + match sign(message).await { + Ok(s) => Ok(s), + Err(e) => Err(e.to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + match verify(message, signature).await { + Ok(v) => Ok(v), + Err(e) => Err(e.to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut SignState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No HTTP handlers defined but received an HTTP request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut SignState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut SignState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let resp = hyperware_process_lib::Response::new() + .body(serde_json::to_vec(&result).unwrap()); + resp.send().unwrap(); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut SignState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let resp = hyperware_process_lib::Response::new() + .body(serde_json::to_vec(&result).unwrap()); + resp.send().unwrap(); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-local request variant received in local handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message( + state: *mut SignState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Raw request value: {0:?}", req_value) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "sign"; + let app_icon = None; + let app_widget = None; + let ui_config = None; + let endpoints = ::alloc::vec::Vec::new(); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut SignState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + CURRENT_MESSAGE + .with(|cell| { + *cell.borrow_mut() = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(error) => { + let kind = &error.kind; + let target = &error.target; + let body = String::from_utf8(error.message.body().to_vec()) + .map(|s| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("\"{0}\"", s)); + res + })) + .unwrap_or_else(|_| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("{0:?}", error.message.body()), + ); + res + })); + let context = error + .context + .as_ref() + .map(|bytes| String::from_utf8_lossy(bytes).into_owned()); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!( + "SendError {{\n kind: {0:?},\n target: {1},\n body: {2},\n context: {3}\n }}", + kind, + target, + body, + context + .map(|s| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("\"{0}\"", s)); + res + })) + .unwrap_or("None".to_string()), + ), + ); + res + }), + ); + }; + if let hyperware_process_lib::SendError { + kind, + context: Some(context), + .. + } = &error { + if let Ok(correlation_id) = String::from_utf8(context.to_vec()) { + let none_response = serde_json::to_vec(kind).unwrap(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, none_response); + }); + } + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-sign.txt b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-sign.txt new file mode 100644 index 00000000..7dba0497 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/expand-sign.txt @@ -0,0 +1,10205 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use anyhow::anyhow; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::net::{NetAction, NetResponse}; +use hyperware_process_lib::{last_blob, our, LazyLoadBlob, Request}; +use hyperware_app_common::send_rmp; +use hyperprocess_macro::hyperprocess; +struct SignState {} +#[automatically_derived] +impl ::core::default::Default for SignState { + #[inline] + fn default() -> SignState { + SignState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for SignState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "SignState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(SignState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(SignState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +async fn sign(message: Vec) -> anyhow::Result> { + let message = make_message(&message); + let body = rmp_serde::to_vec(&NetAction::Sign)?; + let req = Request::to(("our", "net", "distro", "sys")) + .expects_response(5) + .blob(LazyLoadBlob { + mime: None, + bytes: message, + }) + .body(body); + let _resp: NetResponse = send_rmp(req).await?; + let Some(signature) = last_blob() else { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("no blob")); + error + }), + ); + }; + Ok(signature.bytes) +} +async fn verify(message: Vec, signature: Vec) -> anyhow::Result { + let message = make_message(&message); + let body = rmp_serde::to_vec( + &NetAction::Verify { + from: our(), + signature, + }, + )?; + let req = Request::to(("our", "net", "distro", "sys")) + .expects_response(5) + .blob(LazyLoadBlob { + mime: None, + bytes: message, + }) + .body(body); + let resp: NetResponse = send_rmp(req).await?; + match resp { + NetResponse::Verified(is_good) => Ok(is_good), + _ => { + Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err( + format_args!("weird response"), + ); + error + }), + ) + } + } +} +/// net:distro:sys prepends the message to sign with the sender of the request +/// +/// since any sign requests passed through sign:sign:sys will look to net:distro:sys +/// like they come from sign:sign:sys, we additionally prepend the message with +/// source here +/// +/// so final message to be signed looks like +/// +/// [sign-address, source, bytes].concat() +fn make_message(bytes: &Vec) -> Vec { + [source().to_string().as_bytes(), &bytes].concat() +} +const CURRENT_MESSAGE: ::std::thread::LocalKey< + std::cell::RefCell>, +> = { + #[inline] + fn __init() -> std::cell::RefCell> { + std::cell::RefCell::new(None) + } + unsafe { + ::std::thread::LocalKey::new(const { + if ::std::mem::needs_drop::< + std::cell::RefCell>, + >() { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + (), + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } else { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + !, + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } + }) + } +}; +fn source() -> hyperware_process_lib::Address { + CURRENT_MESSAGE + .with(|cell| { + cell.borrow() + .as_ref() + .expect("No message in current context") + .source() + .clone() + }) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_sign_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod sign { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (local) + pub struct SignSignatureLocal { + pub target: Address, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureLocal { + #[inline] + fn clone(&self) -> SignSignatureLocal { + SignSignatureLocal { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureLocal) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureLocal> for Vec { + fn from(value: &'a SignSignatureLocal) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureLocal { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureLocal { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureLocal { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureLocal; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureLocal", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureLocal { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureLocal { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureLocal", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + SignSignatureLocal, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureLocal { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureLocal", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureLocal { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureLocal") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (local) + pub struct VerifySignatureLocal { + pub target: Address, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureLocal { + #[inline] + fn clone(&self) -> VerifySignatureLocal { + VerifySignatureLocal { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureLocal) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureLocal> for Vec { + fn from(value: &'a VerifySignatureLocal) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureLocal { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureLocal { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureLocal { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureLocal; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureLocal", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureLocal { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureLocal { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureLocal", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureLocal, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureLocal { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureLocal", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureLocal { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureLocal") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_sign_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"interface sign {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl SignState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + match sign(message).await { + Ok(s) => Ok(s), + Err(e) => Err(e.to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + match verify(message, signature).await { + Ok(v) => Ok(v), + Err(e) => Err(e.to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut SignState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No HTTP handlers defined but received an HTTP request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut SignState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut SignState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let resp = hyperware_process_lib::Response::new() + .body(serde_json::to_vec(&result).unwrap()); + resp.send().unwrap(); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut SignState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let resp = hyperware_process_lib::Response::new() + .body(serde_json::to_vec(&result).unwrap()); + resp.send().unwrap(); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-local request variant received in local handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message( + state: *mut SignState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Raw request value: {0:?}", req_value) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:72", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(72u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "sign"; + let app_icon = None; + let app_widget = None; + let ui_config = None; + let endpoints = ::alloc::vec::Vec::new(); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut SignState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + CURRENT_MESSAGE + .with(|cell| { + *cell.borrow_mut() = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(ref error) => { + if let hyperware_process_lib::SendError { + context: Some(context), + .. + } = error { + let correlation_id = String::from_utf8_lossy(context) + .to_string(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut + .insert(correlation_id, serde_json::to_vec(error).unwrap()); + }); + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/id-expand.txt b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/id-expand.txt new file mode 100644 index 00000000..b3f28810 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/id-expand.txt @@ -0,0 +1,10072 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use caller_utils::sign::{sign_local_rpc, verify_local_rpc}; +use hyperprocess_macro::hyperprocess; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::Address; +struct IdState {} +#[automatically_derived] +impl ::core::default::Default for IdState { + #[inline] + fn default() -> IdState { + IdState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for IdState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "IdState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for IdState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "IdState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for IdState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = IdState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct IdState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(IdState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(IdState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "IdState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +fn make_sign_sys() -> Address { + Address::new("our", ("sign", "sign", "sys")) +} +const CURRENT_MESSAGE: ::std::thread::LocalKey< + std::cell::RefCell>, +> = { + #[inline] + fn __init() -> std::cell::RefCell> { + std::cell::RefCell::new(None) + } + unsafe { + ::std::thread::LocalKey::new(const { + if ::std::mem::needs_drop::< + std::cell::RefCell>, + >() { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + (), + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } else { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + !, + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } + }) + } +}; +fn source() -> hyperware_process_lib::Address { + CURRENT_MESSAGE + .with(|cell| { + cell.borrow() + .as_ref() + .expect("No message in current context") + .source() + .clone() + }) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_id_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod id { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (http) + pub struct SignSignatureHttp { + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureHttp { + #[inline] + fn clone(&self) -> SignSignatureHttp { + SignSignatureHttp { + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureHttp> for Vec { + fn from(value: &'a SignSignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "message" => _serde::__private::Ok(__Field::__field0), + "returning" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"message" => _serde::__private::Ok(__Field::__field0), + b"returning" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureHttp with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureHttp with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureHttp { + message: __field0, + returning: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field1: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureHttp { + message: __field0, + returning: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureHttp", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureHttp") + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (http) + pub struct VerifySignatureHttp { + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureHttp { + #[inline] + fn clone(&self) -> VerifySignatureHttp { + VerifySignatureHttp { + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureHttp) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureHttp> for Vec { + fn from(value: &'a VerifySignatureHttp) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureHttp { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureHttp { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "message" => _serde::__private::Ok(__Field::__field0), + "signature" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"message" => _serde::__private::Ok(__Field::__field0), + b"signature" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureHttp; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureHttp", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureHttp with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureHttp with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureHttp with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureHttp { + message: __field0, + signature: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureHttp { + message: __field0, + signature: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureHttp", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureHttp, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureHttp { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureHttp", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureHttp { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureHttp") + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_id_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +const _: &[u8] = b"world types {\n include types-sign-sys-v0;\n include types-id-sys-v0;\n}\n"; +const _: &[u8] = b"interface id {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (http)\n record sign-signature-http {\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (http)\n record verify-signature-http {\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"world id-sys-v0 {\n import id;\n include process-v1;\n}"; +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +const _: &[u8] = b"world types-id-sys-v0 {\n import id;\n include lib;\n}"; +const _: &[u8] = b"interface sign {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl IdState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + let target = make_sign_sys(); + match sign_local_rpc(&target, message).await { + Ok(r) => r, + _ => Err("oops".to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + let target = make_sign_sys(); + match verify_local_rpc(&target, message, signature).await { + Ok(r) => r, + _ => Err("oops".to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut IdState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut IdState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let response_bytes = serde_json::to_vec(&result).unwrap(); + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::OK, + None, + response_bytes, + ); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-http request variant received in http handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No local handlers defined but received a local request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message(state: *mut IdState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Raw request value: {0:?}", req_value) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event id/src/lib.rs:13", + "id", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "id/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(13u32), + ::tracing_core::__macro_support::Option::Some("id"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "id"; + let app_icon = None; + let app_widget = None; + let ui_config = Some(HttpBindingConfig::default()); + let endpoints = <[_]>::into_vec( + #[rustc_box] + ::alloc::boxed::Box::new([ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default(), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default(), + }, + ]), + ); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut IdState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + CURRENT_MESSAGE + .with(|cell| { + *cell.borrow_mut() = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(ref error) => { + if let hyperware_process_lib::SendError { + context: Some(context), + .. + } = error { + let correlation_id = String::from_utf8_lossy(context) + .to_string(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut + .insert(correlation_id, serde_json::to_vec(error).unwrap()); + }); + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/src/icon b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/src/icon new file mode 100644 index 00000000..f67b371b --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/src/icon @@ -0,0 +1 @@ +data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI5NjAiIGhlaWdodD0iOTYwIiByeD0iNDgwIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMjA5MV8xMDI4MikiIGZpbGwtb3BhY2l0eT0iMC40Ii8+CjxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9Ijk2MCIgaGVpZ2h0PSI5NjAiIHJ4PSI0ODAiIHN0cm9rZT0idXJsKCNwYWludDFfbGluZWFyXzIwOTFfMTAyODIpIiBzdHJva2Utd2lkdGg9IjQwIi8+CjxwYXRoIGQ9Ik01ODEuMTE2IDU4NS43ODNMNjY0LjUzOCA2NjkuMTJDNjE3LjY5OSA3MTUuNzU4IDU1Ni42MjUgNzM5IDQ5NS4yNDUgNzM5QzQzMy44NjUgNzM5IDM3Mi42MzggNzE1LjYwNSAzMjYuMTA1IDY2OS4xMkMyODAuNzk3IDYyMy44NTggMjU2IDU2My45MTcgMjU2IDUwMEMyNTYgNDM2LjA4MyAyODAuOTUgMzc2LjE0MiAzMjYuMTA1IDMzMC44OEMzNzEuMjYgMjg1LjYxOSA0MzEuMjYyIDI2MSA0OTUuMjQ1IDI2MUM1NTkuMjI3IDI2MSA2MTkuMjMgMjg1LjkyNCA2NjQuNTM4IDMzMC44OEw1ODAuOTYzIDQxNC41MjNDNTQ1LjYwNCAzODMuOTQgNTA1LjE5NCAzNzQuNzY2IDQ2MS4yNjQgMzkxLjEyN0MzOTQuOTg1IDQxNS44OTkgMzY2LjgyMSA0ODkuMjk2IDM5Ny40MzUgNTUyLjc1NEMzOTguNjU5IDU1NS4yMDEgMzk4Ljk2NSA1NTguNzE4IDM5OC4zNTMgNTYxLjMxN0MzOTUuNzUxIDU3Mi40OCAzOTIuNjg5IDU4My40OSAzODkuNzgxIDU5NC4zNDZDMzg2LjEwNyA2MDcuOTU1IDM5My45MTQgNjE1Ljc1NCA0MDcuNTM3IDYxMi4yMzdDNDE4LjU1OCA2MDkuMzMxIDQyOS41NzkgNjA2LjEyIDQ0MC42IDYwMy42NzRDNDQzLjM1NSA2MDIuOTA5IDQ0Ny4wMjkgNjAzLjIxNSA0NDkuNjMxIDYwNC40MzhDNDkwLjUgNjIzLjM5OSA1MjkuOTkxIDYyMC44IDU2Ny43OTkgNTk2LjE4MUM1NzIuNTQ0IDU5My4xMjMgNTc2LjY3NyA1ODkuNDUzIDU4MS4xMTYgNTg1Ljc4M1oiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8yMDkxXzEwMjgyKSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzIwOTFfMTAyODIiIHgxPSI1MDAiIHkxPSIwIiB4Mj0iNTAwIiB5Mj0iMTAwMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRjM1NDIyIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8yMDkxXzEwMjgyIiB4MT0iNzgyLjUiIHkxPSI3My41IiB4Mj0iMTg1LjUiIHkyPSI4OTQuNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRjM1NDIyIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0E1MzEwQyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfMjA5MV8xMDI4MiIgeDE9Ijc1NCIgeTE9Ijg5LjUiIHgyPSIyNTYiIHkyPSIxMDE1LjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0YzNTQyMiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNBNzMyMEQiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/src/lib.rs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/src/lib.rs new file mode 100644 index 00000000..8c40a479 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/id/src/lib.rs @@ -0,0 +1,52 @@ +use caller_utils::sign::{sign_local_rpc, verify_local_rpc}; +use hyperprocess_macro::hyperprocess; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::Address; + +#[derive(Default, Debug, serde::Serialize, serde::Deserialize)] +struct IdState {} + +fn make_sign_sys() -> Address { + Address::new("our", ("sign", "sign", "sys")) +} + +#[hyperprocess( + name = "id", + ui = Some(HttpBindingConfig::default()), + endpoints = vec![ + Binding::Http { + path: "/api", + config: HttpBindingConfig::default(), + }, + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default(), + } + ], + save_config = SaveOptions::Never, + wit_world = "id-sys-v0", +)] +impl IdState { + #[init] + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + + #[http] + async fn sign(&mut self, message: Vec) -> Result, String> { + let target = make_sign_sys(); + match sign_local_rpc(&target, message).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } + + #[http] + async fn verify(&mut self, message: Vec, signature: Vec) -> Result { + let target = make_sign_sys(); + match verify_local_rpc(&target, message, signature).await { + Ok(r) => r, + Err(e) => Err(e.to_string()), + } + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/metadata.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/metadata.json new file mode 100644 index 00000000..5bf6ace7 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/metadata.json @@ -0,0 +1,20 @@ +{ + "name": "id", + "description": "Prove your Hyperware id", + "image": "", + "properties": { + "package_name": "id", + "current_version": "0.1.0", + "publisher": "sys", + "mirrors": [], + "code_hashes": { + "0.1.0": "" + }, + "wit_version": 1, + "dependencies": [ + "sign:sys" + ] + }, + "external_url": "https://hyperware.ai", + "animation_url": "" +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/pkg/manifest.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/pkg/manifest.json new file mode 100644 index 00000000..3fed0681 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/pkg/manifest.json @@ -0,0 +1,19 @@ +[ + { + "process_name": "id", + "process_wasm_path": "/id.wasm", + "on_exit": "Restart", + "request_networking": false, + "request_capabilities": [ + "http-server:distro:sys", + "sign:sign:sys", + "vfs:distro:sys" + ], + "grant_capabilities": [ + "http-server:distro:sys", + "sign:sign:sys", + "vfs:distro:sys" + ], + "public": false + } +] diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/.eslintrc.cjs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/.eslintrc.cjs new file mode 100644 index 00000000..d6c95379 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/.eslintrc.cjs @@ -0,0 +1,18 @@ +module.exports = { + root: true, + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + ignorePatterns: ['dist', '.eslintrc.cjs'], + parser: '@typescript-eslint/parser', + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/.gitignore b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/.gitignore new file mode 100644 index 00000000..a547bf36 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/README.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/README.md new file mode 100644 index 00000000..b0e896f4 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/README.md @@ -0,0 +1,56 @@ +# Hyperware UI Template + +Based on the Vite React Typescript template. + +## Setup + +When using `kit new`, the `BASE_URL` on line 9 of `vite.config.ts` will be set automatically. +The `BASE_URL` will be the first process in `manifest.json`, the `package` from `metadata.json`, and `publisher` from `metadata.json`. +If you have multiple processes in `manifest.json`, make sure the first process will be the one serving the UI. + +## Development + +Run `npm i` and then `npm run dev` to start working on the UI. + +You may see an error: + +``` +[vite] Pre-transform error: Failed to load url /our.js (resolved id: /our.js). Does the file exist? +``` + +You can safely ignore this error. The file will be served by the node via the proxy. + +## public vs assets + +The `public/assets` folder contains files that are referenced in `index.html`, `src/assets` is for asset files that are only referenced in `src` code. + +## About Vite + React + +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. + +Currently, two official plugins are available: + +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + +## Expanding the ESLint configuration + +If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: + +- Configure the top-level `parserOptions` property like this: + +```js +export default { + // other rules... + parserOptions: { + ecmaVersion: 'latest', + sourceType: 'module', + project: ['./tsconfig.json', './tsconfig.node.json'], + tsconfigRootDir: __dirname, + }, +} +``` + +- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` +- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` +- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/index.html b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/index.html new file mode 100644 index 00000000..60766304 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/index.html @@ -0,0 +1,16 @@ + + + + + + + + + + Simple Id + + +
+ + + diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/package-lock.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/package-lock.json new file mode 100644 index 00000000..b84255a3 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/package-lock.json @@ -0,0 +1,3384 @@ +{ + "name": "ui-template", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ui-template", + "version": "0.0.0", + "dependencies": { + "@hyperware-ai/client-api": "^0.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zustand": "^4.4.7" + }, + "devDependencies": { + "@types/node": "^20.10.4", + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.55.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "http-proxy-middleware": "^2.0.6", + "typescript": "^5.2.2", + "vite": "^5.0.8" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", + "integrity": "sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.10.tgz", + "integrity": "sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.10.tgz", + "integrity": "sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.10.tgz", + "integrity": "sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.10.tgz", + "integrity": "sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.10.tgz", + "integrity": "sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.10.tgz", + "integrity": "sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.10.tgz", + "integrity": "sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.10.tgz", + "integrity": "sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.10.tgz", + "integrity": "sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.10.tgz", + "integrity": "sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.10.tgz", + "integrity": "sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.10.tgz", + "integrity": "sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.10.tgz", + "integrity": "sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.10.tgz", + "integrity": "sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.10.tgz", + "integrity": "sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.10.tgz", + "integrity": "sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.10.tgz", + "integrity": "sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.10.tgz", + "integrity": "sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.10.tgz", + "integrity": "sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.10.tgz", + "integrity": "sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.10.tgz", + "integrity": "sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.10.tgz", + "integrity": "sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true + }, + "node_modules/@hyperware-ai/client-api": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@hyperware-ai/client-api/-/client-api-0.1.0.tgz", + "integrity": "sha512-qDj7xew+Z1qSQtiq8oc2ntZuiVdM1rtwIAQnyLxpL0j+f3cCfUnaDE6/604wJIrYmh8xjrtxUpWqu+ZmZoy6yg==", + "dependencies": { + "buffer": "^6.0.3", + "node-forge": "^1.3.1", + "typescript": "^4.9.5" + } + }, + "node_modules/@hyperware-ai/client-api/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.1.tgz", + "integrity": "sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.1.tgz", + "integrity": "sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.1.tgz", + "integrity": "sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.1.tgz", + "integrity": "sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.1.tgz", + "integrity": "sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.1.tgz", + "integrity": "sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.1.tgz", + "integrity": "sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.1.tgz", + "integrity": "sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.1.tgz", + "integrity": "sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.1.tgz", + "integrity": "sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.1.tgz", + "integrity": "sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.1.tgz", + "integrity": "sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.1.tgz", + "integrity": "sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.5.tgz", + "integrity": "sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/prop-types": { + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "devOptional": true + }, + "node_modules/@types/react": { + "version": "18.2.45", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", + "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", + "devOptional": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.18", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", + "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "devOptional": true + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.15.0.tgz", + "integrity": "sha512-j5qoikQqPccq9QoBAupOP+CBu8BaJ8BLjaXSioDISeTZkVO3ig7oSIKh3H+rEpee7xCXtWwSB4KIL5l6hWZzpg==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/type-utils": "6.15.0", + "@typescript-eslint/utils": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", + "integrity": "sha512-MkgKNnsjC6QwcMdlNAel24jjkEO/0hQaMDLqP4S9zq5HBAUJNQB6y+3DwLjX7b3l2b37eNAxMPLwb3/kh8VKdA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/typescript-estree": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.15.0.tgz", + "integrity": "sha512-+BdvxYBltqrmgCNu4Li+fGDIkW9n//NrruzG9X1vBzaNK+ExVXPoGB71kneaVw/Jp+4rH/vaMAGC6JfMbHstVg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.15.0.tgz", + "integrity": "sha512-CnmHKTfX6450Bo49hPg2OkIm/D/TVYV7jO1MCfPYGwf6x3GO0VU8YMO5AYMn+u3X05lRRxA4fWCz87GFQV6yVQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.15.0", + "@typescript-eslint/utils": "6.15.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.15.0.tgz", + "integrity": "sha512-yXjbt//E4T/ee8Ia1b5mGlbNj9fB9lJP4jqLbZualwpP2BCQ5is6BcWwxpIsY4XKAhmdv3hrW92GdtJbatC6dQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.15.0.tgz", + "integrity": "sha512-7mVZJN7Hd15OmGuWrp2T9UvqR2Ecg+1j/Bp1jXUEY2GZKV6FXlOIoqVDmLpBiEiq3katvj/2n2mR0SDwtloCew==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/visitor-keys": "6.15.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.15.0.tgz", + "integrity": "sha512-eF82p0Wrrlt8fQSRL0bGXzK5nWPRV2dYQZdajcfzOD9+cQz9O7ugifrJxclB+xVOvWvagXfqS4Es7vpLP4augw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.15.0", + "@typescript-eslint/types": "6.15.0", + "@typescript-eslint/typescript-estree": "6.15.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.15.0.tgz", + "integrity": "sha512-1zvtdC1a9h5Tb5jU9x3ADNXO9yjP8rXlaoChu0DQX40vf5ACVpYIVIZhIMZ6d5sDXH7vq4dsZBT1fEGj8D2n2w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.15.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", + "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.5", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001571", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz", + "integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.616", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", + "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.19.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.10.tgz", + "integrity": "sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.10", + "@esbuild/android-arm": "0.19.10", + "@esbuild/android-arm64": "0.19.10", + "@esbuild/android-x64": "0.19.10", + "@esbuild/darwin-arm64": "0.19.10", + "@esbuild/darwin-x64": "0.19.10", + "@esbuild/freebsd-arm64": "0.19.10", + "@esbuild/freebsd-x64": "0.19.10", + "@esbuild/linux-arm": "0.19.10", + "@esbuild/linux-arm64": "0.19.10", + "@esbuild/linux-ia32": "0.19.10", + "@esbuild/linux-loong64": "0.19.10", + "@esbuild/linux-mips64el": "0.19.10", + "@esbuild/linux-ppc64": "0.19.10", + "@esbuild/linux-riscv64": "0.19.10", + "@esbuild/linux-s390x": "0.19.10", + "@esbuild/linux-x64": "0.19.10", + "@esbuild/netbsd-x64": "0.19.10", + "@esbuild/openbsd-x64": "0.19.10", + "@esbuild/sunos-x64": "0.19.10", + "@esbuild/win32-arm64": "0.19.10", + "@esbuild/win32-ia32": "0.19.10", + "@esbuild/win32-x64": "0.19.10" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.5.tgz", + "integrity": "sha512-D53FYKJa+fDmZMtriODxvhwrO+IOqrxoEo21gMA0sjHdU6dPVH4OhyFip9ypl8HOF5RV5KdTo+rBQLvnY2cO8w==", + "dev": true, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-refresh": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz", + "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.1.tgz", + "integrity": "sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.9.1", + "@rollup/rollup-android-arm64": "4.9.1", + "@rollup/rollup-darwin-arm64": "4.9.1", + "@rollup/rollup-darwin-x64": "4.9.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.9.1", + "@rollup/rollup-linux-arm64-gnu": "4.9.1", + "@rollup/rollup-linux-arm64-musl": "4.9.1", + "@rollup/rollup-linux-riscv64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-gnu": "4.9.1", + "@rollup/rollup-linux-x64-musl": "4.9.1", + "@rollup/rollup-win32-arm64-msvc": "4.9.1", + "@rollup/rollup-win32-ia32-msvc": "4.9.1", + "@rollup/rollup-win32-x64-msvc": "4.9.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-api-utils": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "dev": true, + "engines": { + "node": ">=16.13.0" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/vite": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", + "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zustand": { + "version": "4.4.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.7.tgz", + "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", + "dependencies": { + "use-sync-external-store": "1.2.0" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + } + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/package.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/package.json new file mode 100644 index 00000000..ec9ddd50 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/package.json @@ -0,0 +1,35 @@ +{ + "name": "ui-template", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite --port 3000", + "start": "vite --port 3000", + "build": "tsc && vite build", + "copy": "mkdir -p ../pkg/ui && rm -rf ../pkg/ui/* && cp -r dist/* ../pkg/ui/", + "build:copy": "npm run build && npm run copy", + "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "@hyperware-ai/client-api": "^0.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "zustand": "^4.4.7" + }, + "devDependencies": { + "@types/node": "^20.10.4", + "@types/react": "^18.2.43", + "@types/react-dom": "^18.2.17", + "@typescript-eslint/eslint-plugin": "^6.14.0", + "@typescript-eslint/parser": "^6.14.0", + "@vitejs/plugin-react": "^4.2.1", + "eslint": "^8.55.0", + "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-refresh": "^0.4.5", + "http-proxy-middleware": "^2.0.6", + "typescript": "^5.2.2", + "vite": "^5.0.8" + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/public/assets/vite.svg b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/public/assets/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/public/assets/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/App.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/App.css new file mode 100644 index 00000000..30b8e13e --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/App.css @@ -0,0 +1,173 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; + width: 75%; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 1em; +} + +.read-the-docs { + color: #888; +} + +.message-list { + display: flex; + flex-direction: column; + margin-bottom: 0.5em; + text-align: left; +} + +.message-list li { + margin-bottom: 1em; + padding: 1em; + border-radius: 0.5em; + background-color: #f5f5f5; + border: 1px solid #e0e0e0; + overflow-wrap: break-word; + width: 90%; +} + +.signed-message { + display: flex; + flex-direction: column; + gap: 0.5em; +} + +.message-content { + display: flex; + flex-direction: column; + gap: 0.5em; +} + +.message-text { + font-weight: 500; +} + +.message-signature { + font-family: monospace; + font-size: 0.85em; + color: #666; + background-color: #efefef; + padding: 0.5em; + border-radius: 0.3em; + border: 1px solid #ddd; + overflow-x: auto; +} + +.verification { + display: flex; + align-items: center; + gap: 1em; + margin-top: 0.5em; +} + +.verify-button { + background-color: #4b9ad8; + border: none; + color: white; + padding: 0.5em 1em; + border-radius: 0.3em; + cursor: pointer; + font-size: 0.9em; +} + +.verify-button:hover { + background-color: #357abd; +} + +.verification-result { + font-size: 1.2em; + font-weight: bold; + padding: 0.2em 0.5em; + border-radius: 50%; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.verification-result.verified { + color: white; + background-color: #4caf50; +} + +.verification-result.failed { + color: white; + background-color: #f44336; +} + +.node-not-connected { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: rgba(255, 255, 255, 0.9); + z-index: 1000; +} + +.input-row { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + width: 100%; +} + +.input-row > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + padding: 0.5em 1.2em; + background-color: #4b9ad8; + color: white; + font-weight: 600; +} + +.input-row > button:hover { + background-color: #357abd; +} + +.input-row > input { + border: 1px solid #ccc; + padding: 0.5em 0.8em; + font-size: 1em; + border-radius: 0.25em; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + width: 100%; +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/App.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/App.tsx new file mode 100644 index 00000000..d994bb5c --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/App.tsx @@ -0,0 +1,182 @@ +import { useState, useEffect, useCallback } from "react"; +import HyperwareClientApi from "@hyperware-ai/client-api"; +import "./App.css"; +import useIdStore from "./store/id"; +import { sign, verify, ApiError } from "../../target/ui/caller-utils"; + +const BASE_URL = import.meta.env.BASE_URL; +if (window.our) window.our.process = BASE_URL?.replace("/", ""); + +const PROXY_TARGET = `${(import.meta.env.VITE_NODE_URL || "http://localhost:8080")}${BASE_URL}`; + +// This env also has BASE_URL which should match the process + package name +const WEBSOCKET_URL = import.meta.env.DEV + ? `${PROXY_TARGET.replace('http', 'ws')}` + : undefined; + +function App() { + const { messageHistory, addSignedMessage, updateVerificationStatus } = useIdStore(); + const [message, setMessage] = useState(""); + const [nodeConnected, setNodeConnected] = useState(true); + const [api, setApi] = useState(); + + useEffect(() => { + // Connect to the Hyperdrive via websocket + console.log('WEBSOCKET URL', WEBSOCKET_URL) + if (window.our?.node && window.our?.process) { + const api = new HyperwareClientApi({ + uri: WEBSOCKET_URL, + nodeId: window.our.node, + processId: window.our.process, + onOpen: (_event, _api) => { + console.log("Connected to Hyperware"); + }, + onMessage: (json, _api) => { + console.log('WEBSOCKET MESSAGE', json) + try { + const data = JSON.parse(json); + console.log("WebSocket received message", data); + } catch (error) { + console.error("Error parsing WebSocket message", error); + } + }, + }); + + setApi(api); + } else { + setNodeConnected(false); + } + }, []); + + const sendMessage = useCallback( + async (event) => { + event.preventDefault(); + + if (!message) return; + + // Create a message object + const encoder = new TextEncoder(); + const messageBytes = encoder.encode(message); + const messageArray = Array.from(messageBytes); + + // Send a message to the node via the sign function + try { + const signature = await sign(messageArray); + + // Add the message and its signature to the store + addSignedMessage(message, signature); + setMessage(""); + } catch (error) { + if (error instanceof ApiError) { + console.error("API Error:", error.message, error.details); + } else { + console.error(error); + } + } + }, + [message, setMessage, addSignedMessage] + ); + + const verifyMessage = useCallback( + async (index: number) => { + const signedMessage = messageHistory.messages[index]; + if (!signedMessage) return; + + // Create message bytes + const encoder = new TextEncoder(); + const messageBytes = encoder.encode(signedMessage.message); + const messageArray = Array.from(messageBytes); + + // Send a verification request via the verify function + try { + const isValid = await verify(messageArray, signedMessage.signature); + + // Update the verification status in the store + updateVerificationStatus(index, isValid); + } catch (error) { + if (error instanceof ApiError) { + console.error("API Error:", error.message, error.details); + } else { + console.error(error); + } + } + }, + [messageHistory, updateVerificationStatus] + ); + + return ( +
+
+ ID: {window.our?.node} +
+ {!nodeConnected && ( +
+

Node not connected

+

+ You need to start a node at {PROXY_TARGET} before you can use this UI + in development. +

+
+ )} +

Signature Verifier

+
+
+

Message History

+
+
    + {messageHistory.messages.map((signedMessage, index) => ( +
  • +
    + {signedMessage.message} + + Signature: [{signedMessage.signature.slice(0, 5).join(', ')} + {signedMessage.signature.length > 5 ? '...' : ''}] + +
    +
    + + {signedMessage.verified !== undefined && ( + + {signedMessage.verified ? '✓' : '✗'} + + )} +
    +
  • + ))} +
+
+
+
+ setMessage(event.target.value)} + autoFocus + /> + +
+
+
+
+
+ ); +} + +export default App; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/assets/react.svg b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/assets/react.svg new file mode 100644 index 00000000..6c87de9b --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/assets/vite.svg b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/assets/vite.svg new file mode 100644 index 00000000..e7b8dfb1 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/assets/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/index.css b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/index.css new file mode 100644 index 00000000..22463e3e --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/index.css @@ -0,0 +1,72 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +ul { + list-style: none; + padding: 0; + margin: 0; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + background-color: darkblue; + color: white; + font-size: 1em; + font-weight: 500; + font-family: inherit; + cursor: pointer; + transition: background-color 0.25s; +} +button:hover { + background-color: blue; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/main.tsx b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/main.tsx new file mode 100644 index 00000000..3d7150da --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App.tsx' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/store/id.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/store/id.ts new file mode 100644 index 00000000..a53b8fc4 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/store/id.ts @@ -0,0 +1,39 @@ +import { create } from 'zustand' +import { SignedMessage, MessageHistory } from '../types/Id' +import { persist, createJSONStorage } from 'zustand/middleware' + +export interface IdStore { + messageHistory: MessageHistory + addSignedMessage: (message: string, signature: number[]) => void + updateVerificationStatus: (index: number, verified: boolean) => void + get: () => IdStore + set: (partial: IdStore | Partial) => void +} + +const useIdStore = create()( + persist( + (set, get) => ({ + messageHistory: { messages: [] }, + addSignedMessage: (message: string, signature: number[]) => { + const { messageHistory } = get() + messageHistory.messages.push({ message, signature }) + set({ messageHistory }) + }, + updateVerificationStatus: (index: number, verified: boolean) => { + const { messageHistory } = get() + if (index >= 0 && index < messageHistory.messages.length) { + messageHistory.messages[index].verified = verified + set({ messageHistory }) + } + }, + get, + set, + }), + { + name: 'id', // unique name + storage: createJSONStorage(() => sessionStorage), // (optional) by default, 'localStorage' is used + } + ) +) + +export default useIdStore diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/types/Id.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/types/Id.ts new file mode 100644 index 00000000..0b5bda01 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/types/Id.ts @@ -0,0 +1,32 @@ +export interface SignedMessage { + message: string + signature: number[] + verified?: boolean +} + +export interface NewMessage { + id: string + author: string + content: string +} + +export interface SignIdMessage { + Sign: number[] +} + +export interface VerifyIdMessage { + Verify: [number[], number[]] +} + +export interface SignResponse { + Ok: number[] +} + +export interface VerifyResponse { + Ok: boolean +} + +// MessageHistory consists of a list of signed messages +export interface MessageHistory { + messages: SignedMessage[] +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/types/global.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/types/global.ts new file mode 100644 index 00000000..44640a4c --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/types/global.ts @@ -0,0 +1,10 @@ +declare module "global" { + global { + interface Window { + our: { + node: string; + process: string; + }; + } + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/vite-env.d.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/vite-env.d.ts new file mode 100644 index 00000000..11f02fe2 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/tsconfig.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/tsconfig.json new file mode 100644 index 00000000..6f148432 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/tsconfig.json @@ -0,0 +1,29 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + // "strict": true, + // "noUnusedLocals": true, + // "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": [ + "src", + "../pkg/manifest.json", + "../pkg/metadata.json", + ], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/tsconfig.node.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/tsconfig.node.json new file mode 100644 index 00000000..42872c59 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/vite.config.ts b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/vite.config.ts new file mode 100644 index 00000000..3683e564 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/id/ui/vite.config.ts @@ -0,0 +1,67 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +/* +If you are developing a UI outside of a Hyperware project, +comment out the following 2 lines: +*/ +import manifest from '../pkg/manifest.json' +import metadata from '../metadata.json' + +/* +IMPORTANT: +This must match the process name from pkg/manifest.json + pkg/metadata.json +The format is "/" + "process_name:package_name:publisher_node" +*/ +const BASE_URL = `/${manifest[0].process_name}:${metadata.properties.package_name}:${metadata.properties.publisher}`; + +// This is the proxy URL, it must match the node you are developing against +const PROXY_URL = (process.env.VITE_NODE_URL || 'http://127.0.0.1:8080').replace('localhost', '127.0.0.1'); + +console.log('process.env.VITE_NODE_URL', process.env.VITE_NODE_URL, PROXY_URL); + +export default defineConfig({ + plugins: [react()], + base: BASE_URL, + build: { + rollupOptions: { + external: ['/our.js'] + } + }, + server: { + open: true, + proxy: { + '/our': { + target: PROXY_URL, + changeOrigin: true, + }, + [`${BASE_URL}/our.js`]: { + target: PROXY_URL, + changeOrigin: true, + rewrite: (path) => path.replace(BASE_URL, ''), + }, + // This route will match all other HTTP requests to the backend + [`^${BASE_URL}/(?!(@vite/client|src/.*|node_modules/.*|@react-refresh|$))`]: { + target: PROXY_URL, + changeOrigin: true, + }, + // '/example': { + // target: PROXY_URL, + // changeOrigin: true, + // rewrite: (path) => path.replace(BASE_URL, ''), + // // This is only for debugging purposes + // configure: (proxy, _options) => { + // proxy.on('error', (err, _req, _res) => { + // console.log('proxy error', err); + // }); + // proxy.on('proxyReq', (proxyReq, req, _res) => { + // console.log('Sending Request to the Target:', req.method, req.url); + // }); + // proxy.on('proxyRes', (proxyRes, req, _res) => { + // console.log('Received Response from the Target:', proxyRes.statusCode, req.url); + // }); + // }, + // }, + } + } +}); diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/Cargo.toml b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/Cargo.toml new file mode 100644 index 00000000..859185a7 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/Cargo.toml @@ -0,0 +1,11 @@ +[profile.release] +lto = true +opt-level = "s" +panic = "abort" + +[workspace] +members = [ + "sign", + "target/caller-utils", +] +resolver = "2" diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/README.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/README.md new file mode 100644 index 00000000..0c901b60 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/README.md @@ -0,0 +1,46 @@ +# sign + +A fork of [hyperdrive's `sign`](https://github.com/hyperware-ai/hyperdrive/tree/4d5223758087d2813f3598c69907306e953dbab1/hyperdrive/packages/sign) using the Hyperapp Framework. + +## Goals + +1. Get Hyperapp Framework into a more full-featured, robust state by serving as a testing ground for it & its `kit` integration, +2. Begin the move of core apps to Hyperapp Framework. + +## Usage + +Use [`hf/build-add-hyper-bindgen` branch of `kit`](https://github.com/hyperware-ai/kit/pull/312) i.e. +``` +cargo install --git https://github.com/hyperware-ai/kit --locked --branch hf/build-add-hyper-bindgen +``` + +Build using +``` +kit b --hyperapp +``` + +## Current state & TODOs + +1. Working end-to-end with [id](https://github.com/nick1udwig/id) as of [kit@3984259](https://github.com/hyperware-ai/kit/pull/312/commits/39842593e3cd4288823da93bff3658d7e1fdd84a) [sign@9570dbc](https://github.com/nick1udwig/sign/commit/9570dbc9cb0fbcd49eab9af692b1689dd5b23d2d) [id@6dd79d5](https://github.com/nick1udwig/id/commit/6dd79d591c1b98bbdc237c1558e6604136f12178). +2. Use as follows: + ``` + # Get proper version of kit + cargo install --git https://github.com/hyperware-ai/kit --locked --branch hf/build-add-hyper-bindgen + + # Start fake node + kit f + + # In new terminal + git clone https://github.com/nick1udwig/sign.git + cd sign + kit b --hyperapp + kit s + cd .. + + git clone https://github.com/nick1udwig/id.git + cd id + kit b --hyperapp -p 8080 + kit s + cd .. + ``` + Then open localhost:8080/id:id:sys and set your fake node terminal to Event Loop verbosity (hit Ctrl + V 3 times in the fake node terminal). diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/metadata.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/metadata.json new file mode 100644 index 00000000..e711b99c --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/metadata.json @@ -0,0 +1,18 @@ +{ + "name": "Sign", + "description": "Sign messages with Hyperware", + "image": "", + "properties": { + "package_name": "sign", + "current_version": "1.0.0", + "publisher": "sys", + "mirrors": [], + "code_hashes": { + "1.0.0": "" + }, + "wit_version": 1, + "dependencies": [] + }, + "external_url": "https://hyperware.ai", + "animation_url": "" +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/pkg/manifest.json b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/pkg/manifest.json new file mode 100644 index 00000000..1c4eaf09 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/pkg/manifest.json @@ -0,0 +1,11 @@ +[ + { + "process_name": "sign", + "process_wasm_path": "/sign.wasm", + "on_exit": "Restart", + "request_networking": false, + "request_capabilities": ["net:distro:sys", "vfs:distro:sys"], + "grant_capabilities": ["net:distro:sys", "vfs:distro:sys"], + "public": false + } +] diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/Cargo.toml b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/Cargo.toml new file mode 100644 index 00000000..d0c792a8 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/Cargo.toml @@ -0,0 +1,35 @@ +[dependencies] +anyhow = "1.0.97" +process_macros = "0.1" +rmp-serde = "1.1.2" +serde_json = "1.0" +wit-bindgen = "0.36.0" + +[dependencies.caller-utils] +path = "../target/caller-utils" + +[dependencies.hyperprocess_macro] +git = "https://github.com/hyperware-ai/hyperprocess-macro" +rev = "4c944b2" + +[dependencies.hyperware_app_common] +git = "https://github.com/hyperware-ai/hyperprocess-macro" +rev = "4c944b2" + +[dependencies.serde] +features = ["derive"] +version = "1.0" + +[features] +simulation-mode = [] + +[lib] +crate-type = ["cdylib"] + +[package] +edition = "2021" +name = "sign" +version = "0.1.0" + +[package.metadata.component] +package = "hyperware:process" diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/expand-sign-old.txt b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/expand-sign-old.txt new file mode 100644 index 00000000..eb6debf5 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/expand-sign-old.txt @@ -0,0 +1,10319 @@ +#![feature(prelude_import)] +#[prelude_import] +use std::prelude::rust_2021::*; +#[macro_use] +extern crate std; +use anyhow::anyhow; +use hyperware_app_common::hyperware_process_lib as hyperware_process_lib; +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::net::{NetAction, NetResponse}; +use hyperware_process_lib::{last_blob, our, LazyLoadBlob, Request}; +use hyperware_app_common::{send_rmp, SendResult}; +use hyperprocess_macro::hyperprocess; +struct SignState {} +#[automatically_derived] +impl ::core::default::Default for SignState { + #[inline] + fn default() -> SignState { + SignState {} + } +} +#[automatically_derived] +impl ::core::fmt::Debug for SignState { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + ::core::fmt::Formatter::write_str(f, "SignState") + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignState { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignState", + false as usize, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignState { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignState; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignState", + ) + } + #[inline] + fn visit_seq<__A>( + self, + _: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + _serde::__private::Ok(SignState {}) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + _serde::__private::Ok(SignState {}) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignState", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +async fn sign(message: Vec) -> anyhow::Result> { + let message = make_message(&message); + let body = rmp_serde::to_vec(&NetAction::Sign)?; + let req = Request::to(("our", "net", "distro", "sys")) + .expects_response(5) + .blob(LazyLoadBlob { + mime: None, + bytes: message, + }) + .body(body); + let _resp: NetResponse = match send_rmp(req).await { + SendResult::Success(r) => r, + SendResult::Timeout => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("timeout")); + error + }), + ); + } + SendResult::Offline => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("offline")); + error + }), + ); + } + SendResult::DeserializationError(e) => { + return Err( + ::anyhow::__private::must_use({ + use ::anyhow::__private::kind::*; + let error = match e { + error => (&error).anyhow_kind().new(error), + }; + error + }), + ); + } + SendResult::BuildError(e) => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("{0}", e)); + error + }), + ); + } + }; + let Some(signature) = last_blob() else { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("no blob")); + error + }), + ); + }; + Ok(signature.bytes) +} +async fn verify(message: Vec, signature: Vec) -> anyhow::Result { + let message = make_message(&message); + let body = rmp_serde::to_vec( + &NetAction::Verify { + from: our(), + signature, + }, + )?; + let req = Request::to(("our", "net", "distro", "sys")) + .expects_response(5) + .blob(LazyLoadBlob { + mime: None, + bytes: message, + }) + .body(body); + let resp: NetResponse = match send_rmp(req).await { + SendResult::Success(r) => r, + SendResult::Timeout => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("timeout")); + error + }), + ); + } + SendResult::Offline => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("offline")); + error + }), + ); + } + SendResult::DeserializationError(e) => { + return Err( + ::anyhow::__private::must_use({ + use ::anyhow::__private::kind::*; + let error = match e { + error => (&error).anyhow_kind().new(error), + }; + error + }), + ); + } + SendResult::BuildError(e) => { + return Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err(format_args!("{0}", e)); + error + }), + ); + } + }; + match resp { + NetResponse::Verified(is_good) => Ok(is_good), + _ => { + Err( + ::anyhow::__private::must_use({ + let error = ::anyhow::__private::format_err( + format_args!("weird response"), + ); + error + }), + ) + } + } +} +/// net:distro:sys prepends the message to sign with the sender of the request +/// +/// since any sign requests passed through sign:sign:sys will look to net:distro:sys +/// like they come from sign:sign:sys, we additionally prepend the message with +/// source here +/// +/// so final message to be signed looks like +/// +/// [sign-address, source, bytes].concat() +fn make_message(bytes: &Vec) -> Vec { + [source().to_string().as_bytes(), &bytes].concat() +} +const CURRENT_MESSAGE: ::std::thread::LocalKey< + std::cell::RefCell>, +> = { + #[inline] + fn __init() -> std::cell::RefCell> { + std::cell::RefCell::new(None) + } + unsafe { + ::std::thread::LocalKey::new(const { + if ::std::mem::needs_drop::< + std::cell::RefCell>, + >() { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + (), + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } else { + |init| { + #[thread_local] + static VAL: ::std::thread::local_impl::LazyStorage< + std::cell::RefCell>, + !, + > = ::std::thread::local_impl::LazyStorage::new(); + VAL.get_or_init(init, __init) + } + } + }) + } +}; +fn source() -> hyperware_process_lib::Address { + CURRENT_MESSAGE + .with(|cell| { + cell.borrow() + .as_ref() + .expect("No message in current context") + .source() + .clone() + }) +} +#[doc(hidden)] +#[allow(non_snake_case)] +pub unsafe fn _export_init_cabi(arg0: *mut u8, arg1: usize) { + let len0 = arg1; + let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0); + T::init(_rt::string_lift(bytes0)); +} +pub trait Guest { + fn init(our: _rt::String); +} +#[doc(hidden)] +pub(crate) use __export_world_sign_sys_v0_cabi; +#[allow(dead_code, clippy::all)] +pub mod hyperware { + pub mod process { + #[allow(dead_code, clippy::all)] + pub mod standard { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Types + /// ˗ˏˋ ♡ ˎˊ˗ + /// JSON is passed over Wasm boundary as a string. + pub type Json = _rt::String; + /// In types passed from kernel, node-id will be a valid Kimap entry. + pub type NodeId = _rt::String; + /// Context, like a message body, is a protocol-defined serialized byte + /// array. It is used when building a Request to save information that + /// will not be part of a Response, in order to more easily handle + /// ("contextualize") that Response. + pub type Context = _rt::Vec; + pub struct ProcessId { + pub process_name: _rt::String, + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for ProcessId { + #[inline] + fn clone(&self) -> ProcessId { + ProcessId { + process_name: ::core::clone::Clone::clone(&self.process_name), + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: ProcessId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a ProcessId> for Vec { + fn from(value: &'a ProcessId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for ProcessId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for ProcessId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "process_name" => _serde::__private::Ok(__Field::__field0), + "package_name" => _serde::__private::Ok(__Field::__field1), + "publisher_node" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"process_name" => _serde::__private::Ok(__Field::__field0), + b"package_name" => _serde::__private::Ok(__Field::__field1), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field2) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = ProcessId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct ProcessId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct ProcessId with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("process_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(ProcessId { + process_name: __field0, + package_name: __field1, + publisher_node: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "process_name", + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "ProcessId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for ProcessId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "ProcessId", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process_name", + &self.process_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for ProcessId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("ProcessId") + .field("process-name", &self.process_name) + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct PackageId { + pub package_name: _rt::String, + pub publisher_node: NodeId, + } + #[automatically_derived] + impl ::core::clone::Clone for PackageId { + #[inline] + fn clone(&self) -> PackageId { + PackageId { + package_name: ::core::clone::Clone::clone(&self.package_name), + publisher_node: ::core::clone::Clone::clone(&self.publisher_node), + } + } + } + impl From for Vec { + fn from(value: PackageId) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a PackageId> for Vec { + fn from(value: &'a PackageId) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for PackageId { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for PackageId { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for PackageId { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "package_name" => _serde::__private::Ok(__Field::__field0), + "publisher_node" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"package_name" => _serde::__private::Ok(__Field::__field0), + b"publisher_node" => { + _serde::__private::Ok(__Field::__field1) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = PackageId; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct PackageId", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + _rt::String, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct PackageId with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option<_rt::String> = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "package_name", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::String, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "publisher_node", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("package_name")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("publisher_node")? + } + }; + _serde::__private::Ok(PackageId { + package_name: __field0, + publisher_node: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "package_name", + "publisher_node", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "PackageId", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for PackageId { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "PackageId", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "package_name", + &self.package_name, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "publisher_node", + &self.publisher_node, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for PackageId { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("PackageId") + .field("package-name", &self.package_name) + .field("publisher-node", &self.publisher_node) + .finish() + } + } + pub struct Address { + pub node: NodeId, + pub process: ProcessId, + } + #[automatically_derived] + impl ::core::clone::Clone for Address { + #[inline] + fn clone(&self) -> Address { + Address { + node: ::core::clone::Clone::clone(&self.node), + process: ::core::clone::Clone::clone(&self.process), + } + } + } + impl From
for Vec { + fn from(value: Address) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Address> for Vec { + fn from(value: &'a Address) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Address { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Address { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Address { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "node" => _serde::__private::Ok(__Field::__field0), + "process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"node" => _serde::__private::Ok(__Field::__field0), + b"process" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData
, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Address; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Address", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + NodeId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Address with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + ProcessId, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Address with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("node"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "process", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("node")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("process")? + } + }; + _serde::__private::Ok(Address { + node: __field0, + process: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["node", "process"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Address", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::
, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Address { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Address", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "node", + &self.node, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "process", + &self.process, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Address { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Address") + .field("node", &self.node) + .field("process", &self.process) + .finish() + } + } + pub struct LazyLoadBlob { + pub mime: Option<_rt::String>, + pub bytes: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for LazyLoadBlob { + #[inline] + fn clone(&self) -> LazyLoadBlob { + LazyLoadBlob { + mime: ::core::clone::Clone::clone(&self.mime), + bytes: ::core::clone::Clone::clone(&self.bytes), + } + } + } + impl From for Vec { + fn from(value: LazyLoadBlob) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a LazyLoadBlob> for Vec { + fn from(value: &'a LazyLoadBlob) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for LazyLoadBlob { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for LazyLoadBlob { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "mime" => _serde::__private::Ok(__Field::__field0), + "bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"mime" => _serde::__private::Ok(__Field::__field0), + b"bytes" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = LazyLoadBlob; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct LazyLoadBlob", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Option<_rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct LazyLoadBlob with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + Option<_rt::String>, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("mime"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option<_rt::String>, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("bytes"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("mime")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("bytes")? + } + }; + _serde::__private::Ok(LazyLoadBlob { + mime: __field0, + bytes: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["mime", "bytes"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "LazyLoadBlob", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for LazyLoadBlob { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "LazyLoadBlob", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "mime", + &self.mime, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "bytes", + &self.bytes, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for LazyLoadBlob { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("LazyLoadBlob") + .field("mime", &self.mime) + .field("bytes", &self.bytes) + .finish() + } + } + pub struct Capability { + pub issuer: Address, + pub params: Json, + } + #[automatically_derived] + impl ::core::clone::Clone for Capability { + #[inline] + fn clone(&self) -> Capability { + Capability { + issuer: ::core::clone::Clone::clone(&self.issuer), + params: ::core::clone::Clone::clone(&self.params), + } + } + } + impl From for Vec { + fn from(value: Capability) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Capability> for Vec { + fn from(value: &'a Capability) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Capability { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Capability { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Capability { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "issuer" => _serde::__private::Ok(__Field::__field0), + "params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"issuer" => _serde::__private::Ok(__Field::__field0), + b"params" => _serde::__private::Ok(__Field::__field1), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Capability; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Capability", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Json, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Capability with 2 elements", + ), + ); + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("issuer"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("params"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("issuer")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("params")? + } + }; + _serde::__private::Ok(Capability { + issuer: __field0, + params: __field1, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &["issuer", "params"]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Capability", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Capability { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Capability", + false as usize + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "issuer", + &self.issuer, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "params", + &self.params, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Capability { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Capability") + .field("issuer", &self.issuer) + .field("params", &self.params) + .finish() + } + } + pub struct Request { + /// set in order to inherit lazy-load-blob from parent message, and if + /// expects-response is none, direct response to source of parent. + /// also carries forward certain aspects of parent message in kernel, + /// see documentation for formal spec and examples: + /// https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html + pub inherit: bool, + /// if some, request expects a response in the given number of seconds + pub expects_response: Option, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Request { + #[inline] + fn clone(&self) -> Request { + Request { + inherit: ::core::clone::Clone::clone(&self.inherit), + expects_response: ::core::clone::Clone::clone( + &self.expects_response, + ), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Request) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Request> for Vec { + fn from(value: &'a Request) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Request { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Request { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Request { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __field4, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + 4u64 => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + "body" => _serde::__private::Ok(__Field::__field2), + "metadata" => _serde::__private::Ok(__Field::__field3), + "capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"expects_response" => { + _serde::__private::Ok(__Field::__field1) + } + b"body" => _serde::__private::Ok(__Field::__field2), + b"metadata" => _serde::__private::Ok(__Field::__field3), + b"capabilities" => _serde::__private::Ok(__Field::__field4), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Request; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Request", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Request with 5 elements", + ), + ); + } + }; + let __field4 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 4usize, + &"struct Request with 5 elements", + ), + ); + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option> = _serde::__private::None; + let mut __field4: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "expects_response", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field4 => { + if _serde::__private::Option::is_some(&__field4) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field4 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("expects_response")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field4 = match __field4 { + _serde::__private::Some(__field4) => __field4, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Request { + inherit: __field0, + expects_response: __field1, + body: __field2, + metadata: __field3, + capabilities: __field4, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "expects_response", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Request", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Request { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Request", + false as usize + 1 + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "expects_response", + &self.expects_response, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Request { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Request") + .field("inherit", &self.inherit) + .field("expects-response", &self.expects_response) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + pub struct Response { + pub inherit: bool, + pub body: _rt::Vec, + pub metadata: Option, + pub capabilities: _rt::Vec, + } + #[automatically_derived] + impl ::core::clone::Clone for Response { + #[inline] + fn clone(&self) -> Response { + Response { + inherit: ::core::clone::Clone::clone(&self.inherit), + body: ::core::clone::Clone::clone(&self.body), + metadata: ::core::clone::Clone::clone(&self.metadata), + capabilities: ::core::clone::Clone::clone(&self.capabilities), + } + } + } + impl From for Vec { + fn from(value: Response) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Response> for Vec { + fn from(value: &'a Response) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Response { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Response { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Response { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "inherit" => _serde::__private::Ok(__Field::__field0), + "body" => _serde::__private::Ok(__Field::__field1), + "metadata" => _serde::__private::Ok(__Field::__field2), + "capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"inherit" => _serde::__private::Ok(__Field::__field0), + b"body" => _serde::__private::Ok(__Field::__field1), + b"metadata" => _serde::__private::Ok(__Field::__field2), + b"capabilities" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Response; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct Response", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + bool, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct Response with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct Response with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option = _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + _rt::Vec, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "inherit", + ), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("body"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "metadata", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "capabilities", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("inherit")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("body")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("metadata")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("capabilities")? + } + }; + _serde::__private::Ok(Response { + inherit: __field0, + body: __field1, + metadata: __field2, + capabilities: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "inherit", + "body", + "metadata", + "capabilities", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "Response", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Response { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "Response", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "inherit", + &self.inherit, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "body", + &self.body, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "metadata", + &self.metadata, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "capabilities", + &self.capabilities, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for Response { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("Response") + .field("inherit", &self.inherit) + .field("body", &self.body) + .field("metadata", &self.metadata) + .field("capabilities", &self.capabilities) + .finish() + } + } + /// A message can be a request or a response. Within a response, there is + /// a result which surfaces any error that happened because of a request. + /// A successful response will contain the context of the request it + /// matches, if any was set. + pub enum Message { + Request(Request), + Response((Response, Option)), + } + #[automatically_derived] + impl ::core::clone::Clone for Message { + #[inline] + fn clone(&self) -> Message { + match self { + Message::Request(__self_0) => { + Message::Request(::core::clone::Clone::clone(__self_0)) + } + Message::Response(__self_0) => { + Message::Response(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: Message) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a Message> for Vec { + fn from(value: &'a Message) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for Message { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for Message { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for Message { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Request" => _serde::__private::Ok(__Field::__field0), + "Response" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Request" => _serde::__private::Ok(__Field::__field0), + b"Response" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = Message; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum Message", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Request, + >(__variant), + Message::Request, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + (Response, Option), + >(__variant), + Message::Response, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Request", + "Response", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "Message", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for Message { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + Message::Request(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 0u32, + "Request", + __field0, + ) + } + Message::Response(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "Message", + 1u32, + "Response", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for Message { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + Message::Request(e) => { + f.debug_tuple("Message::Request").field(e).finish() + } + Message::Response(e) => { + f.debug_tuple("Message::Response").field(e).finish() + } + } + } + } + /// On-exit is a setting that determines what happens when a process + /// panics, completes, or otherwise "ends". + /// NOTE: requests will always have expects-response set to false by kernel. + pub enum OnExit { + None, + Restart, + Requests(_rt::Vec<(Address, Request, Option)>), + } + #[automatically_derived] + impl ::core::clone::Clone for OnExit { + #[inline] + fn clone(&self) -> OnExit { + match self { + OnExit::None => OnExit::None, + OnExit::Restart => OnExit::Restart, + OnExit::Requests(__self_0) => { + OnExit::Requests(::core::clone::Clone::clone(__self_0)) + } + } + } + } + impl From for Vec { + fn from(value: OnExit) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a OnExit> for Vec { + fn from(value: &'a OnExit) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for OnExit { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for OnExit { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for OnExit { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 3", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "None" => _serde::__private::Ok(__Field::__field0), + "Restart" => _serde::__private::Ok(__Field::__field1), + "Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"None" => _serde::__private::Ok(__Field::__field0), + b"Restart" => _serde::__private::Ok(__Field::__field1), + b"Requests" => _serde::__private::Ok(__Field::__field2), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = OnExit; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum OnExit", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::None) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(OnExit::Restart) + } + (__Field::__field2, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + _rt::Vec<(Address, Request, Option)>, + >(__variant), + OnExit::Requests, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "None", + "Restart", + "Requests", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "OnExit", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for OnExit { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + OnExit::None => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 0u32, + "None", + ) + } + OnExit::Restart => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "OnExit", + 1u32, + "Restart", + ) + } + OnExit::Requests(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "OnExit", + 2u32, + "Requests", + __field0, + ) + } + } + } + } + }; + impl ::core::fmt::Debug for OnExit { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + OnExit::None => f.debug_tuple("OnExit::None").finish(), + OnExit::Restart => f.debug_tuple("OnExit::Restart").finish(), + OnExit::Requests(e) => { + f.debug_tuple("OnExit::Requests").field(e).finish() + } + } + } + } + #[repr(u8)] + pub enum SendErrorKind { + Offline, + Timeout, + } + #[automatically_derived] + impl ::core::clone::Clone for SendErrorKind { + #[inline] + fn clone(&self) -> SendErrorKind { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::Eq for SendErrorKind { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SendErrorKind { + #[inline] + fn cmp(&self, other: &SendErrorKind) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SendErrorKind {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SendErrorKind { + #[inline] + fn eq(&self, other: &SendErrorKind) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SendErrorKind { + #[inline] + fn partial_cmp( + &self, + other: &SendErrorKind, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SendErrorKind) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendErrorKind> for Vec { + fn from(value: &'a SendErrorKind) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendErrorKind { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendErrorKind { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Offline" => _serde::__private::Ok(__Field::__field0), + "Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Offline" => _serde::__private::Ok(__Field::__field0), + b"Timeout" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendErrorKind; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SendErrorKind", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Offline) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SendErrorKind::Timeout) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "Offline", + "Timeout", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SendErrorKind", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendErrorKind { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SendErrorKind::Offline => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 0u32, + "Offline", + ) + } + SendErrorKind::Timeout => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SendErrorKind", + 1u32, + "Timeout", + ) + } + } + } + } + }; + impl ::core::fmt::Debug for SendErrorKind { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + match self { + SendErrorKind::Offline => { + f.debug_tuple("SendErrorKind::Offline").finish() + } + SendErrorKind::Timeout => { + f.debug_tuple("SendErrorKind::Timeout").finish() + } + } + } + } + impl SendErrorKind { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SendErrorKind { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SendErrorKind::Offline, + 1 => SendErrorKind::Timeout, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + /// Send errors come from trying to send a message to another process, + /// either locally or on another node. + /// A message can fail by timing out, or by the node being entirely + /// unreachable (offline or can't be found in PKI). In either case, + /// the message is not delivered and the process that sent it receives + /// that message back along with any assigned context and/or lazy-load-blob, + /// and is free to handle it as it sees fit. + /// In the local case, only timeout errors are possible and also cover the case + /// in which a process is not running or does not exist. + pub struct SendError { + pub kind: SendErrorKind, + pub target: Address, + pub message: Message, + pub lazy_load_blob: Option, + } + #[automatically_derived] + impl ::core::clone::Clone for SendError { + #[inline] + fn clone(&self) -> SendError { + SendError { + kind: ::core::clone::Clone::clone(&self.kind), + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + lazy_load_blob: ::core::clone::Clone::clone(&self.lazy_load_blob), + } + } + } + impl From for Vec { + fn from(value: SendError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SendError> for Vec { + fn from(value: &'a SendError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SendError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SendError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SendError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "kind" => _serde::__private::Ok(__Field::__field0), + "target" => _serde::__private::Ok(__Field::__field1), + "message" => _serde::__private::Ok(__Field::__field2), + "lazy_load_blob" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"kind" => _serde::__private::Ok(__Field::__field0), + b"target" => _serde::__private::Ok(__Field::__field1), + b"message" => _serde::__private::Ok(__Field::__field2), + b"lazy_load_blob" => { + _serde::__private::Ok(__Field::__field3) + } + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SendError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SendError", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + SendErrorKind, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Message, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Option, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct SendError with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option< + SendErrorKind, + > = _serde::__private::None; + let mut __field1: _serde::__private::Option
= _serde::__private::None; + let mut __field2: _serde::__private::Option = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Option, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("kind"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + SendErrorKind, + >(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "lazy_load_blob", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Option, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("kind")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("lazy_load_blob")? + } + }; + _serde::__private::Ok(SendError { + kind: __field0, + target: __field1, + message: __field2, + lazy_load_blob: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "kind", + "target", + "message", + "lazy_load_blob", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SendError", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SendError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SendError", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "kind", + &self.kind, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "lazy_load_blob", + &self.lazy_load_blob, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SendError") + .field("kind", &self.kind) + .field("target", &self.target) + .field("message", &self.message) + .field("lazy-load-blob", &self.lazy_load_blob) + .finish() + } + } + impl ::core::fmt::Display for SendError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt(format_args!("{0:?}", self)) + } + } + impl std::error::Error for SendError {} + #[repr(u8)] + pub enum SpawnError { + NameTaken, + NoFileAtPath, + } + #[automatically_derived] + impl ::core::clone::Clone for SpawnError { + #[inline] + fn clone(&self) -> SpawnError { + *self + } + } + #[automatically_derived] + impl ::core::marker::Copy for SpawnError {} + #[automatically_derived] + impl ::core::cmp::Eq for SpawnError { + #[inline] + #[doc(hidden)] + #[coverage(off)] + fn assert_receiver_is_total_eq(&self) -> () {} + } + #[automatically_derived] + impl ::core::cmp::Ord for SpawnError { + #[inline] + fn cmp(&self, other: &SpawnError) -> ::core::cmp::Ordering { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::Ord::cmp(&__self_discr, &__arg1_discr) + } + } + #[automatically_derived] + impl ::core::marker::StructuralPartialEq for SpawnError {} + #[automatically_derived] + impl ::core::cmp::PartialEq for SpawnError { + #[inline] + fn eq(&self, other: &SpawnError) -> bool { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + __self_discr == __arg1_discr + } + } + #[automatically_derived] + impl ::core::cmp::PartialOrd for SpawnError { + #[inline] + fn partial_cmp( + &self, + other: &SpawnError, + ) -> ::core::option::Option<::core::cmp::Ordering> { + let __self_discr = ::core::intrinsics::discriminant_value(self); + let __arg1_discr = ::core::intrinsics::discriminant_value(other); + ::core::cmp::PartialOrd::partial_cmp(&__self_discr, &__arg1_discr) + } + } + impl From for Vec { + fn from(value: SpawnError) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SpawnError> for Vec { + fn from(value: &'a SpawnError) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SpawnError { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SpawnError { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "NameTaken" => _serde::__private::Ok(__Field::__field0), + "NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"NameTaken" => _serde::__private::Ok(__Field::__field0), + b"NoFileAtPath" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SpawnError; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum SpawnError", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NameTaken) + } + (__Field::__field1, __variant) => { + _serde::de::VariantAccess::unit_variant(__variant)?; + _serde::__private::Ok(SpawnError::NoFileAtPath) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &[ + "NameTaken", + "NoFileAtPath", + ]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "SpawnError", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SpawnError { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + SpawnError::NameTaken => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 0u32, + "NameTaken", + ) + } + SpawnError::NoFileAtPath => { + _serde::Serializer::serialize_unit_variant( + __serializer, + "SpawnError", + 1u32, + "NoFileAtPath", + ) + } + } + } + } + }; + impl SpawnError { + pub fn name(&self) -> &'static str { + match self { + SpawnError::NameTaken => "name-taken", + SpawnError::NoFileAtPath => "no-file-at-path", + } + } + pub fn message(&self) -> &'static str { + match self { + SpawnError::NameTaken => "", + SpawnError::NoFileAtPath => "", + } + } + } + impl ::core::fmt::Debug for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SpawnError") + .field("code", &(*self as i32)) + .field("name", &self.name()) + .field("message", &self.message()) + .finish() + } + } + impl ::core::fmt::Display for SpawnError { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.write_fmt( + format_args!("{0} (error {1})", self.name(), *self as i32), + ) + } + } + impl std::error::Error for SpawnError {} + impl SpawnError { + #[doc(hidden)] + pub unsafe fn _lift(val: u8) -> SpawnError { + if !true { + return ::core::mem::transmute(val); + } + match val { + 0 => SpawnError::NameTaken, + 1 => SpawnError::NoFileAtPath, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid enum discriminant"), + ); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// System Utils + /// ˗ˏˋ ♡ ˎˊ˗ + /// Prints to the terminal at a given verbosity level. + /// Higher verbosity levels print more information. + /// Level 0 is always printed -- use sparingly. + pub fn print_to_terminal(verbosity: u8, message: &str) { + unsafe { + let vec0 = message; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(_rt::as_i32(&verbosity), ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the address of the process. + pub fn our() -> Address { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 32]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 32]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let len3 = l2; + let bytes3 = _rt::Vec::from_raw_parts(l1.cast(), len3, len3); + let l4 = *ptr0.add(8).cast::<*mut u8>(); + let l5 = *ptr0.add(12).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts(l4.cast(), len6, len6); + let l7 = *ptr0.add(16).cast::<*mut u8>(); + let l8 = *ptr0.add(20).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts(l7.cast(), len9, len9); + let l10 = *ptr0.add(24).cast::<*mut u8>(); + let l11 = *ptr0.add(28).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts(l10.cast(), len12, len12); + Address { + node: _rt::string_lift(bytes3), + process: ProcessId { + process_name: _rt::string_lift(bytes6), + package_name: _rt::string_lift(bytes9), + publisher_node: _rt::string_lift(bytes12), + }, + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Process Management + /// ˗ˏˋ ♡ ˎˊ˗ + pub fn get_on_exit() -> OnExit { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + let v53 = match l1 { + 0 => OnExit::None, + 1 => OnExit::Restart, + n => { + if true { + match (&n, &2) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e53 = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let base52 = l2; + let len52 = l3; + let mut result52 = _rt::Vec::with_capacity(len52); + for i in 0..len52 { + let base = base52.add(i * 112); + let e52 = { + let l4 = *base.add(0).cast::<*mut u8>(); + let l5 = *base.add(4).cast::(); + let len6 = l5; + let bytes6 = _rt::Vec::from_raw_parts( + l4.cast(), + len6, + len6, + ); + let l7 = *base.add(8).cast::<*mut u8>(); + let l8 = *base.add(12).cast::(); + let len9 = l8; + let bytes9 = _rt::Vec::from_raw_parts( + l7.cast(), + len9, + len9, + ); + let l10 = *base.add(16).cast::<*mut u8>(); + let l11 = *base.add(20).cast::(); + let len12 = l11; + let bytes12 = _rt::Vec::from_raw_parts( + l10.cast(), + len12, + len12, + ); + let l13 = *base.add(24).cast::<*mut u8>(); + let l14 = *base.add(28).cast::(); + let len15 = l14; + let bytes15 = _rt::Vec::from_raw_parts( + l13.cast(), + len15, + len15, + ); + let l16 = i32::from(*base.add(32).cast::()); + let l17 = i32::from(*base.add(40).cast::()); + let l19 = *base.add(56).cast::<*mut u8>(); + let l20 = *base.add(60).cast::(); + let len21 = l20; + let l22 = i32::from(*base.add(64).cast::()); + let l26 = *base.add(76).cast::<*mut u8>(); + let l27 = *base.add(80).cast::(); + let base43 = l26; + let len43 = l27; + let mut result43 = _rt::Vec::with_capacity(len43); + for i in 0..len43 { + let base = base43.add(i * 40); + let e43 = { + let l28 = *base.add(0).cast::<*mut u8>(); + let l29 = *base.add(4).cast::(); + let len30 = l29; + let bytes30 = _rt::Vec::from_raw_parts( + l28.cast(), + len30, + len30, + ); + let l31 = *base.add(8).cast::<*mut u8>(); + let l32 = *base.add(12).cast::(); + let len33 = l32; + let bytes33 = _rt::Vec::from_raw_parts( + l31.cast(), + len33, + len33, + ); + let l34 = *base.add(16).cast::<*mut u8>(); + let l35 = *base.add(20).cast::(); + let len36 = l35; + let bytes36 = _rt::Vec::from_raw_parts( + l34.cast(), + len36, + len36, + ); + let l37 = *base.add(24).cast::<*mut u8>(); + let l38 = *base.add(28).cast::(); + let len39 = l38; + let bytes39 = _rt::Vec::from_raw_parts( + l37.cast(), + len39, + len39, + ); + let l40 = *base.add(32).cast::<*mut u8>(); + let l41 = *base.add(36).cast::(); + let len42 = l41; + let bytes42 = _rt::Vec::from_raw_parts( + l40.cast(), + len42, + len42, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes30), + process: ProcessId { + process_name: _rt::string_lift(bytes33), + package_name: _rt::string_lift(bytes36), + publisher_node: _rt::string_lift(bytes39), + }, + }, + params: _rt::string_lift(bytes42), + } + }; + result43.push(e43); + } + _rt::cabi_dealloc(base43, len43 * 40, 4); + let l44 = i32::from(*base.add(88).cast::()); + ( + Address { + node: _rt::string_lift(bytes6), + process: ProcessId { + process_name: _rt::string_lift(bytes9), + package_name: _rt::string_lift(bytes12), + publisher_node: _rt::string_lift(bytes15), + }, + }, + Request { + inherit: _rt::bool_lift(l16 as u8), + expects_response: match l17 { + 0 => None, + 1 => { + let e = { + let l18 = *base.add(48).cast::(); + l18 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l19.cast(), len21, len21), + metadata: match l22 { + 0 => None, + 1 => { + let e = { + let l23 = *base.add(68).cast::<*mut u8>(); + let l24 = *base.add(72).cast::(); + let len25 = l24; + let bytes25 = _rt::Vec::from_raw_parts( + l23.cast(), + len25, + len25, + ); + _rt::string_lift(bytes25) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result43, + }, + match l44 { + 0 => None, + 1 => { + let e = { + let l45 = i32::from(*base.add(92).cast::()); + let l49 = *base.add(104).cast::<*mut u8>(); + let l50 = *base.add(108).cast::(); + let len51 = l50; + LazyLoadBlob { + mime: match l45 { + 0 => None, + 1 => { + let e = { + let l46 = *base.add(96).cast::<*mut u8>(); + let l47 = *base.add(100).cast::(); + let len48 = l47; + let bytes48 = _rt::Vec::from_raw_parts( + l46.cast(), + len48, + len48, + ); + _rt::string_lift(bytes48) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l49.cast(), len51, len51), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + result52.push(e52); + } + _rt::cabi_dealloc(base52, len52 * 112, 8); + result52 + }; + OnExit::Requests(e53) + } + }; + v53 + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_on_exit(on_exit: &OnExit) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let (result23_0, result23_1, result23_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec22 = e; + let len22 = vec22.len(); + let layout22 = _rt::alloc::Layout::from_size_align_unchecked( + vec22.len() * 112, + 8, + ); + let result22 = if layout22.size() != 0 { + let ptr = _rt::alloc::alloc(layout22).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout22); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec22.into_iter().enumerate() { + let base = result22.add(i * 112); + { + let (t0_0, t0_1, t0_2) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(100).cast::() = len20; + *base.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(108).cast::() = len21; + *base.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + cleanup_list.extend_from_slice(&[(result22, layout22)]); + (2i32, result22, len22) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23_0, result23_1, result23_2); + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn get_state() -> Option<_rt::Vec> { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 12]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 12]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = *ptr0.add(4).cast::<*mut u8>(); + let l3 = *ptr0.add(8).cast::(); + let len4 = l3; + _rt::Vec::from_raw_parts(l2.cast(), len4, len4) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn set_state(bytes: &[u8]) { + unsafe { + let vec0 = bytes; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0.cast_mut(), len0); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn clear_state() { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(); + } + } + #[allow(unused_unsafe, clippy::all)] + pub fn spawn( + name: Option<&str>, + wasm_path: &str, + on_exit: &OnExit, + request_capabilities: &[Capability], + grant_capabilities: &[(ProcessId, Json)], + public: bool, + ) -> Result { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 28]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 28]); + let (result1_0, result1_1, result1_2) = match name { + Some(e) => { + let vec0 = e; + let ptr0 = vec0.as_ptr().cast::(); + let len0 = vec0.len(); + (1i32, ptr0.cast_mut(), len0) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec2 = wasm_path; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + let (result26_0, result26_1, result26_2) = match on_exit { + OnExit::None => (0i32, ::core::ptr::null_mut(), 0usize), + OnExit::Restart => (1i32, ::core::ptr::null_mut(), 0usize), + OnExit::Requests(e) => { + let vec25 = e; + let len25 = vec25.len(); + let layout25 = _rt::alloc::Layout::from_size_align_unchecked( + vec25.len() * 112, + 8, + ); + let result25 = if layout25.size() != 0 { + let ptr = _rt::alloc::alloc(layout25).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout25); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec25.into_iter().enumerate() { + let base = result25.add(i * 112); + { + let (t3_0, t3_1, t3_2) = e; + let Address { node: node4, process: process4 } = t3_0; + let vec5 = node4; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(4).cast::() = len5; + *base.add(0).cast::<*mut u8>() = ptr5.cast_mut(); + let ProcessId { + process_name: process_name6, + package_name: package_name6, + publisher_node: publisher_node6, + } = process4; + let vec7 = process_name6; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(12).cast::() = len7; + *base.add(8).cast::<*mut u8>() = ptr7.cast_mut(); + let vec8 = package_name6; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(20).cast::() = len8; + *base.add(16).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = publisher_node6; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(28).cast::() = len9; + *base.add(24).cast::<*mut u8>() = ptr9.cast_mut(); + let Request { + inherit: inherit10, + expects_response: expects_response10, + body: body10, + metadata: metadata10, + capabilities: capabilities10, + } = t3_1; + *base.add(32).cast::() = (match inherit10 { + true => 1, + false => 0, + }) as u8; + match expects_response10 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec11 = body10; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(60).cast::() = len11; + *base.add(56).cast::<*mut u8>() = ptr11.cast_mut(); + match metadata10 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec12 = e; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(72).cast::() = len12; + *base.add(68).cast::<*mut u8>() = ptr12.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec21 = capabilities10; + let len21 = vec21.len(); + let layout21 = _rt::alloc::Layout::from_size_align_unchecked( + vec21.len() * 40, + 4, + ); + let result21 = if layout21.size() != 0 { + let ptr = _rt::alloc::alloc(layout21).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout21); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec21.into_iter().enumerate() { + let base = result21.add(i * 40); + { + let Capability { issuer: issuer13, params: params13 } = e; + let Address { node: node14, process: process14 } = issuer13; + let vec15 = node14; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(4).cast::() = len15; + *base.add(0).cast::<*mut u8>() = ptr15.cast_mut(); + let ProcessId { + process_name: process_name16, + package_name: package_name16, + publisher_node: publisher_node16, + } = process14; + let vec17 = process_name16; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(12).cast::() = len17; + *base.add(8).cast::<*mut u8>() = ptr17.cast_mut(); + let vec18 = package_name16; + let ptr18 = vec18.as_ptr().cast::(); + let len18 = vec18.len(); + *base.add(20).cast::() = len18; + *base.add(16).cast::<*mut u8>() = ptr18.cast_mut(); + let vec19 = publisher_node16; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(28).cast::() = len19; + *base.add(24).cast::<*mut u8>() = ptr19.cast_mut(); + let vec20 = params13; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *base.add(36).cast::() = len20; + *base.add(32).cast::<*mut u8>() = ptr20.cast_mut(); + } + } + *base.add(80).cast::() = len21; + *base.add(76).cast::<*mut u8>() = result21; + match t3_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime22, bytes: bytes22 } = e; + match mime22 { + Some(e) => { + *base.add(92).cast::() = (1i32) as u8; + let vec23 = e; + let ptr23 = vec23.as_ptr().cast::(); + let len23 = vec23.len(); + *base.add(100).cast::() = len23; + *base.add(96).cast::<*mut u8>() = ptr23.cast_mut(); + } + None => { + *base.add(92).cast::() = (0i32) as u8; + } + }; + let vec24 = bytes22; + let ptr24 = vec24.as_ptr().cast::(); + let len24 = vec24.len(); + *base.add(108).cast::() = len24; + *base.add(104).cast::<*mut u8>() = ptr24.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result21, layout21)]); + } + } + cleanup_list.extend_from_slice(&[(result25, layout25)]); + (2i32, result25, len25) + } + }; + let vec35 = request_capabilities; + let len35 = vec35.len(); + let layout35 = _rt::alloc::Layout::from_size_align_unchecked( + vec35.len() * 40, + 4, + ); + let result35 = if layout35.size() != 0 { + let ptr = _rt::alloc::alloc(layout35).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout35); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec35.into_iter().enumerate() { + let base = result35.add(i * 40); + { + let Capability { issuer: issuer27, params: params27 } = e; + let Address { node: node28, process: process28 } = issuer27; + let vec29 = node28; + let ptr29 = vec29.as_ptr().cast::(); + let len29 = vec29.len(); + *base.add(4).cast::() = len29; + *base.add(0).cast::<*mut u8>() = ptr29.cast_mut(); + let ProcessId { + process_name: process_name30, + package_name: package_name30, + publisher_node: publisher_node30, + } = process28; + let vec31 = process_name30; + let ptr31 = vec31.as_ptr().cast::(); + let len31 = vec31.len(); + *base.add(12).cast::() = len31; + *base.add(8).cast::<*mut u8>() = ptr31.cast_mut(); + let vec32 = package_name30; + let ptr32 = vec32.as_ptr().cast::(); + let len32 = vec32.len(); + *base.add(20).cast::() = len32; + *base.add(16).cast::<*mut u8>() = ptr32.cast_mut(); + let vec33 = publisher_node30; + let ptr33 = vec33.as_ptr().cast::(); + let len33 = vec33.len(); + *base.add(28).cast::() = len33; + *base.add(24).cast::<*mut u8>() = ptr33.cast_mut(); + let vec34 = params27; + let ptr34 = vec34.as_ptr().cast::(); + let len34 = vec34.len(); + *base.add(36).cast::() = len34; + *base.add(32).cast::<*mut u8>() = ptr34.cast_mut(); + } + } + let vec42 = grant_capabilities; + let len42 = vec42.len(); + let layout42 = _rt::alloc::Layout::from_size_align_unchecked( + vec42.len() * 32, + 4, + ); + let result42 = if layout42.size() != 0 { + let ptr = _rt::alloc::alloc(layout42).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout42); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec42.into_iter().enumerate() { + let base = result42.add(i * 32); + { + let (t36_0, t36_1) = e; + let ProcessId { + process_name: process_name37, + package_name: package_name37, + publisher_node: publisher_node37, + } = t36_0; + let vec38 = process_name37; + let ptr38 = vec38.as_ptr().cast::(); + let len38 = vec38.len(); + *base.add(4).cast::() = len38; + *base.add(0).cast::<*mut u8>() = ptr38.cast_mut(); + let vec39 = package_name37; + let ptr39 = vec39.as_ptr().cast::(); + let len39 = vec39.len(); + *base.add(12).cast::() = len39; + *base.add(8).cast::<*mut u8>() = ptr39.cast_mut(); + let vec40 = publisher_node37; + let ptr40 = vec40.as_ptr().cast::(); + let len40 = vec40.len(); + *base.add(20).cast::() = len40; + *base.add(16).cast::<*mut u8>() = ptr40.cast_mut(); + let vec41 = t36_1; + let ptr41 = vec41.as_ptr().cast::(); + let len41 = vec41.len(); + *base.add(28).cast::() = len41; + *base.add(24).cast::<*mut u8>() = ptr41.cast_mut(); + } + } + let ptr43 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + result1_0, + result1_1, + result1_2, + ptr2.cast_mut(), + len2, + result26_0, + result26_1, + result26_2, + result35, + len35, + result42, + len42, + match &public { + true => 1, + false => 0, + }, + ptr43, + ); + let l44 = i32::from(*ptr43.add(0).cast::()); + if layout35.size() != 0 { + _rt::alloc::dealloc(result35.cast(), layout35); + } + if layout42.size() != 0 { + _rt::alloc::dealloc(result42.cast(), layout42); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + match l44 { + 0 => { + let e = { + let l45 = *ptr43.add(4).cast::<*mut u8>(); + let l46 = *ptr43.add(8).cast::(); + let len47 = l46; + let bytes47 = _rt::Vec::from_raw_parts( + l45.cast(), + len47, + len47, + ); + let l48 = *ptr43.add(12).cast::<*mut u8>(); + let l49 = *ptr43.add(16).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + let l51 = *ptr43.add(20).cast::<*mut u8>(); + let l52 = *ptr43.add(24).cast::(); + let len53 = l52; + let bytes53 = _rt::Vec::from_raw_parts( + l51.cast(), + len53, + len53, + ); + ProcessId { + process_name: _rt::string_lift(bytes47), + package_name: _rt::string_lift(bytes50), + publisher_node: _rt::string_lift(bytes53), + } + }; + Ok(e) + } + 1 => { + let e = { + let l54 = i32::from(*ptr43.add(4).cast::()); + SpawnError::_lift(l54 as u8) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Capabilities Management + /// ˗ˏˋ ♡ ˎˊ˗ + /// Saves the capabilities to persisted process state. + pub fn save_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Deletes the capabilities from persisted process state. + pub fn drop_capabilities(caps: &[Capability]) { + unsafe { + let vec8 = caps; + let len8 = vec8.len(); + let layout8 = _rt::alloc::Layout::from_size_align_unchecked( + vec8.len() * 40, + 4, + ); + let result8 = if layout8.size() != 0 { + let ptr = _rt::alloc::alloc(layout8).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout8); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec8.into_iter().enumerate() { + let base = result8.add(i * 40); + { + let Capability { issuer: issuer0, params: params0 } = e; + let Address { node: node1, process: process1 } = issuer0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let vec7 = params0; + let ptr7 = vec7.as_ptr().cast::(); + let len7 = vec7.len(); + *base.add(36).cast::() = len7; + *base.add(32).cast::<*mut u8>() = ptr7.cast_mut(); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result8, len8); + if layout8.size() != 0 { + _rt::alloc::dealloc(result8.cast(), layout8); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Gets all capabilities from persisted process state. + pub fn our_capabilities() -> _rt::Vec { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 8]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 8]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = *ptr0.add(0).cast::<*mut u8>(); + let l2 = *ptr0.add(4).cast::(); + let base18 = l1; + let len18 = l2; + let mut result18 = _rt::Vec::with_capacity(len18); + for i in 0..len18 { + let base = base18.add(i * 40); + let e18 = { + let l3 = *base.add(0).cast::<*mut u8>(); + let l4 = *base.add(4).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts(l3.cast(), len5, len5); + let l6 = *base.add(8).cast::<*mut u8>(); + let l7 = *base.add(12).cast::(); + let len8 = l7; + let bytes8 = _rt::Vec::from_raw_parts(l6.cast(), len8, len8); + let l9 = *base.add(16).cast::<*mut u8>(); + let l10 = *base.add(20).cast::(); + let len11 = l10; + let bytes11 = _rt::Vec::from_raw_parts( + l9.cast(), + len11, + len11, + ); + let l12 = *base.add(24).cast::<*mut u8>(); + let l13 = *base.add(28).cast::(); + let len14 = l13; + let bytes14 = _rt::Vec::from_raw_parts( + l12.cast(), + len14, + len14, + ); + let l15 = *base.add(32).cast::<*mut u8>(); + let l16 = *base.add(36).cast::(); + let len17 = l16; + let bytes17 = _rt::Vec::from_raw_parts( + l15.cast(), + len17, + len17, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes5), + process: ProcessId { + process_name: _rt::string_lift(bytes8), + package_name: _rt::string_lift(bytes11), + publisher_node: _rt::string_lift(bytes14), + }, + }, + params: _rt::string_lift(bytes17), + } + }; + result18.push(e18); + } + _rt::cabi_dealloc(base18, len18 * 40, 4); + result18 + } + } + #[allow(unused_unsafe, clippy::all)] + /// ˗ˏˋ ♡ ˎˊ˗ + /// Message I/O + /// ˗ˏˋ ♡ ˎˊ˗ + /// Ingest next message when it arrives along with its source. + /// Almost all long-running processes will call this in a loop. + pub fn receive() -> Result< + (Address, Message), + (SendError, Option), + > { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 152]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 152], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => { + let e = { + let l2 = *ptr0.add(8).cast::<*mut u8>(); + let l3 = *ptr0.add(12).cast::(); + let len4 = l3; + let bytes4 = _rt::Vec::from_raw_parts( + l2.cast(), + len4, + len4, + ); + let l5 = *ptr0.add(16).cast::<*mut u8>(); + let l6 = *ptr0.add(20).cast::(); + let len7 = l6; + let bytes7 = _rt::Vec::from_raw_parts( + l5.cast(), + len7, + len7, + ); + let l8 = *ptr0.add(24).cast::<*mut u8>(); + let l9 = *ptr0.add(28).cast::(); + let len10 = l9; + let bytes10 = _rt::Vec::from_raw_parts( + l8.cast(), + len10, + len10, + ); + let l11 = *ptr0.add(32).cast::<*mut u8>(); + let l12 = *ptr0.add(36).cast::(); + let len13 = l12; + let bytes13 = _rt::Vec::from_raw_parts( + l11.cast(), + len13, + len13, + ); + let l14 = i32::from(*ptr0.add(40).cast::()); + let v73 = match l14 { + 0 => { + let e73 = { + let l15 = i32::from(*ptr0.add(48).cast::()); + let l16 = i32::from(*ptr0.add(56).cast::()); + let l18 = *ptr0.add(72).cast::<*mut u8>(); + let l19 = *ptr0.add(76).cast::(); + let len20 = l19; + let l21 = i32::from(*ptr0.add(80).cast::()); + let l25 = *ptr0.add(92).cast::<*mut u8>(); + let l26 = *ptr0.add(96).cast::(); + let base42 = l25; + let len42 = l26; + let mut result42 = _rt::Vec::with_capacity(len42); + for i in 0..len42 { + let base = base42.add(i * 40); + let e42 = { + let l27 = *base.add(0).cast::<*mut u8>(); + let l28 = *base.add(4).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *base.add(8).cast::<*mut u8>(); + let l31 = *base.add(12).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *base.add(16).cast::<*mut u8>(); + let l34 = *base.add(20).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = *base.add(24).cast::<*mut u8>(); + let l37 = *base.add(28).cast::(); + let len38 = l37; + let bytes38 = _rt::Vec::from_raw_parts( + l36.cast(), + len38, + len38, + ); + let l39 = *base.add(32).cast::<*mut u8>(); + let l40 = *base.add(36).cast::(); + let len41 = l40; + let bytes41 = _rt::Vec::from_raw_parts( + l39.cast(), + len41, + len41, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes29), + process: ProcessId { + process_name: _rt::string_lift(bytes32), + package_name: _rt::string_lift(bytes35), + publisher_node: _rt::string_lift(bytes38), + }, + }, + params: _rt::string_lift(bytes41), + } + }; + result42.push(e42); + } + _rt::cabi_dealloc(base42, len42 * 40, 4); + Request { + inherit: _rt::bool_lift(l15 as u8), + expects_response: match l16 { + 0 => None, + 1 => { + let e = { + let l17 = *ptr0.add(64).cast::(); + l17 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l18.cast(), len20, len20), + metadata: match l21 { + 0 => None, + 1 => { + let e = { + let l22 = *ptr0.add(84).cast::<*mut u8>(); + let l23 = *ptr0.add(88).cast::(); + let len24 = l23; + let bytes24 = _rt::Vec::from_raw_parts( + l22.cast(), + len24, + len24, + ); + _rt::string_lift(bytes24) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result42, + } + }; + Message::Request(e73) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e73 = { + let l43 = i32::from(*ptr0.add(48).cast::()); + let l44 = *ptr0.add(52).cast::<*mut u8>(); + let l45 = *ptr0.add(56).cast::(); + let len46 = l45; + let l47 = i32::from(*ptr0.add(60).cast::()); + let l51 = *ptr0.add(72).cast::<*mut u8>(); + let l52 = *ptr0.add(76).cast::(); + let base68 = l51; + let len68 = l52; + let mut result68 = _rt::Vec::with_capacity(len68); + for i in 0..len68 { + let base = base68.add(i * 40); + let e68 = { + let l53 = *base.add(0).cast::<*mut u8>(); + let l54 = *base.add(4).cast::(); + let len55 = l54; + let bytes55 = _rt::Vec::from_raw_parts( + l53.cast(), + len55, + len55, + ); + let l56 = *base.add(8).cast::<*mut u8>(); + let l57 = *base.add(12).cast::(); + let len58 = l57; + let bytes58 = _rt::Vec::from_raw_parts( + l56.cast(), + len58, + len58, + ); + let l59 = *base.add(16).cast::<*mut u8>(); + let l60 = *base.add(20).cast::(); + let len61 = l60; + let bytes61 = _rt::Vec::from_raw_parts( + l59.cast(), + len61, + len61, + ); + let l62 = *base.add(24).cast::<*mut u8>(); + let l63 = *base.add(28).cast::(); + let len64 = l63; + let bytes64 = _rt::Vec::from_raw_parts( + l62.cast(), + len64, + len64, + ); + let l65 = *base.add(32).cast::<*mut u8>(); + let l66 = *base.add(36).cast::(); + let len67 = l66; + let bytes67 = _rt::Vec::from_raw_parts( + l65.cast(), + len67, + len67, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes55), + process: ProcessId { + process_name: _rt::string_lift(bytes58), + package_name: _rt::string_lift(bytes61), + publisher_node: _rt::string_lift(bytes64), + }, + }, + params: _rt::string_lift(bytes67), + } + }; + result68.push(e68); + } + _rt::cabi_dealloc(base68, len68 * 40, 4); + let l69 = i32::from(*ptr0.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l43 as u8), + body: _rt::Vec::from_raw_parts(l44.cast(), len46, len46), + metadata: match l47 { + 0 => None, + 1 => { + let e = { + let l48 = *ptr0.add(64).cast::<*mut u8>(); + let l49 = *ptr0.add(68).cast::(); + let len50 = l49; + let bytes50 = _rt::Vec::from_raw_parts( + l48.cast(), + len50, + len50, + ); + _rt::string_lift(bytes50) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result68, + }, + match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr0.add(84).cast::<*mut u8>(); + let l71 = *ptr0.add(88).cast::(); + let len72 = l71; + _rt::Vec::from_raw_parts(l70.cast(), len72, len72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e73) + } + }; + ( + Address { + node: _rt::string_lift(bytes4), + process: ProcessId { + process_name: _rt::string_lift(bytes7), + package_name: _rt::string_lift(bytes10), + publisher_node: _rt::string_lift(bytes13), + }, + }, + v73, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l74 = i32::from(*ptr0.add(8).cast::()); + let l75 = *ptr0.add(12).cast::<*mut u8>(); + let l76 = *ptr0.add(16).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *ptr0.add(20).cast::<*mut u8>(); + let l79 = *ptr0.add(24).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *ptr0.add(28).cast::<*mut u8>(); + let l82 = *ptr0.add(32).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *ptr0.add(36).cast::<*mut u8>(); + let l85 = *ptr0.add(40).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = i32::from(*ptr0.add(48).cast::()); + let v146 = match l87 { + 0 => { + let e146 = { + let l88 = i32::from(*ptr0.add(56).cast::()); + let l89 = i32::from(*ptr0.add(64).cast::()); + let l91 = *ptr0.add(80).cast::<*mut u8>(); + let l92 = *ptr0.add(84).cast::(); + let len93 = l92; + let l94 = i32::from(*ptr0.add(88).cast::()); + let l98 = *ptr0.add(100).cast::<*mut u8>(); + let l99 = *ptr0.add(104).cast::(); + let base115 = l98; + let len115 = l99; + let mut result115 = _rt::Vec::with_capacity(len115); + for i in 0..len115 { + let base = base115.add(i * 40); + let e115 = { + let l100 = *base.add(0).cast::<*mut u8>(); + let l101 = *base.add(4).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *base.add(8).cast::<*mut u8>(); + let l104 = *base.add(12).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *base.add(16).cast::<*mut u8>(); + let l107 = *base.add(20).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = *base.add(24).cast::<*mut u8>(); + let l110 = *base.add(28).cast::(); + let len111 = l110; + let bytes111 = _rt::Vec::from_raw_parts( + l109.cast(), + len111, + len111, + ); + let l112 = *base.add(32).cast::<*mut u8>(); + let l113 = *base.add(36).cast::(); + let len114 = l113; + let bytes114 = _rt::Vec::from_raw_parts( + l112.cast(), + len114, + len114, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes102), + process: ProcessId { + process_name: _rt::string_lift(bytes105), + package_name: _rt::string_lift(bytes108), + publisher_node: _rt::string_lift(bytes111), + }, + }, + params: _rt::string_lift(bytes114), + } + }; + result115.push(e115); + } + _rt::cabi_dealloc(base115, len115 * 40, 4); + Request { + inherit: _rt::bool_lift(l88 as u8), + expects_response: match l89 { + 0 => None, + 1 => { + let e = { + let l90 = *ptr0.add(72).cast::(); + l90 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l91.cast(), len93, len93), + metadata: match l94 { + 0 => None, + 1 => { + let e = { + let l95 = *ptr0.add(92).cast::<*mut u8>(); + let l96 = *ptr0.add(96).cast::(); + let len97 = l96; + let bytes97 = _rt::Vec::from_raw_parts( + l95.cast(), + len97, + len97, + ); + _rt::string_lift(bytes97) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result115, + } + }; + Message::Request(e146) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e146 = { + let l116 = i32::from(*ptr0.add(56).cast::()); + let l117 = *ptr0.add(60).cast::<*mut u8>(); + let l118 = *ptr0.add(64).cast::(); + let len119 = l118; + let l120 = i32::from(*ptr0.add(68).cast::()); + let l124 = *ptr0.add(80).cast::<*mut u8>(); + let l125 = *ptr0.add(84).cast::(); + let base141 = l124; + let len141 = l125; + let mut result141 = _rt::Vec::with_capacity(len141); + for i in 0..len141 { + let base = base141.add(i * 40); + let e141 = { + let l126 = *base.add(0).cast::<*mut u8>(); + let l127 = *base.add(4).cast::(); + let len128 = l127; + let bytes128 = _rt::Vec::from_raw_parts( + l126.cast(), + len128, + len128, + ); + let l129 = *base.add(8).cast::<*mut u8>(); + let l130 = *base.add(12).cast::(); + let len131 = l130; + let bytes131 = _rt::Vec::from_raw_parts( + l129.cast(), + len131, + len131, + ); + let l132 = *base.add(16).cast::<*mut u8>(); + let l133 = *base.add(20).cast::(); + let len134 = l133; + let bytes134 = _rt::Vec::from_raw_parts( + l132.cast(), + len134, + len134, + ); + let l135 = *base.add(24).cast::<*mut u8>(); + let l136 = *base.add(28).cast::(); + let len137 = l136; + let bytes137 = _rt::Vec::from_raw_parts( + l135.cast(), + len137, + len137, + ); + let l138 = *base.add(32).cast::<*mut u8>(); + let l139 = *base.add(36).cast::(); + let len140 = l139; + let bytes140 = _rt::Vec::from_raw_parts( + l138.cast(), + len140, + len140, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes128), + process: ProcessId { + process_name: _rt::string_lift(bytes131), + package_name: _rt::string_lift(bytes134), + publisher_node: _rt::string_lift(bytes137), + }, + }, + params: _rt::string_lift(bytes140), + } + }; + result141.push(e141); + } + _rt::cabi_dealloc(base141, len141 * 40, 4); + let l142 = i32::from(*ptr0.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l116 as u8), + body: _rt::Vec::from_raw_parts(l117.cast(), len119, len119), + metadata: match l120 { + 0 => None, + 1 => { + let e = { + let l121 = *ptr0.add(72).cast::<*mut u8>(); + let l122 = *ptr0.add(76).cast::(); + let len123 = l122; + let bytes123 = _rt::Vec::from_raw_parts( + l121.cast(), + len123, + len123, + ); + _rt::string_lift(bytes123) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result141, + }, + match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr0.add(92).cast::<*mut u8>(); + let l144 = *ptr0.add(96).cast::(); + let len145 = l144; + _rt::Vec::from_raw_parts(l143.cast(), len145, len145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e146) + } + }; + let l147 = i32::from(*ptr0.add(112).cast::()); + let l155 = i32::from(*ptr0.add(136).cast::()); + ( + SendError { + kind: SendErrorKind::_lift(l74 as u8), + target: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + message: v146, + lazy_load_blob: match l147 { + 0 => None, + 1 => { + let e = { + let l148 = i32::from(*ptr0.add(116).cast::()); + let l152 = *ptr0.add(128).cast::<*mut u8>(); + let l153 = *ptr0.add(132).cast::(); + let len154 = l153; + LazyLoadBlob { + mime: match l148 { + 0 => None, + 1 => { + let e = { + let l149 = *ptr0.add(120).cast::<*mut u8>(); + let l150 = *ptr0.add(124).cast::(); + let len151 = l150; + let bytes151 = _rt::Vec::from_raw_parts( + l149.cast(), + len151, + len151, + ); + _rt::string_lift(bytes151) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l152.cast(), len154, len154), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + }, + match l155 { + 0 => None, + 1 => { + let e = { + let l156 = *ptr0.add(140).cast::<*mut u8>(); + let l157 = *ptr0.add(144).cast::(); + let len158 = l157; + _rt::Vec::from_raw_parts(l156.cast(), len158, len158) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns whether or not the current message has a blob. + pub fn has_blob() -> bool { + unsafe { + #[cfg(not(target_arch = "wasm32"))] + fn wit_import() -> i32 { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + let ret = wit_import(); + _rt::bool_lift(ret as u8) + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the blob of the current message, if any. + pub fn get_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Returns the last blob this process received. + pub fn last_blob() -> Option { + unsafe { + #[repr(align(4))] + struct RetArea([::core::mem::MaybeUninit; 24]); + let mut ret_area = RetArea([::core::mem::MaybeUninit::uninit(); 24]); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + let l1 = i32::from(*ptr0.add(0).cast::()); + match l1 { + 0 => None, + 1 => { + let e = { + let l2 = i32::from(*ptr0.add(4).cast::()); + let l6 = *ptr0.add(16).cast::<*mut u8>(); + let l7 = *ptr0.add(20).cast::(); + let len8 = l7; + LazyLoadBlob { + mime: match l2 { + 0 => None, + 1 => { + let e = { + let l3 = *ptr0.add(8).cast::<*mut u8>(); + let l4 = *ptr0.add(12).cast::(); + let len5 = l4; + let bytes5 = _rt::Vec::from_raw_parts( + l3.cast(), + len5, + len5, + ); + _rt::string_lift(bytes5) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l6.cast(), len8, len8), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send request to target. + pub fn send_request( + target: &Address, + request: &Request, + context: Option<&Context>, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 128]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 128], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match context { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *ptr0.add(96).cast::() = len19; + *ptr0.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + match lazy_load_blob { + Some(e) => { + *ptr0.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *ptr0.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(112).cast::() = len21; + *ptr0.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *ptr0.add(120).cast::() = len22; + *ptr0.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *ptr0.add(100).cast::() = (0i32) as u8; + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send requests to targets. + pub fn send_requests( + requests: &[(Address, Request, Option, Option)], + ) { + unsafe { + let mut cleanup_list = _rt::Vec::new(); + let vec23 = requests; + let len23 = vec23.len(); + let layout23 = _rt::alloc::Layout::from_size_align_unchecked( + vec23.len() * 128, + 8, + ); + let result23 = if layout23.size() != 0 { + let ptr = _rt::alloc::alloc(layout23).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout23); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec23.into_iter().enumerate() { + let base = result23.add(i * 128); + { + let (t0_0, t0_1, t0_2, t0_3) = e; + let Address { node: node1, process: process1 } = t0_0; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *base.add(4).cast::() = len2; + *base.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *base.add(12).cast::() = len4; + *base.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *base.add(20).cast::() = len5; + *base.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(28).cast::() = len6; + *base.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = t0_1; + *base.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *base.add(40).cast::() = (1i32) as u8; + *base.add(48).cast::() = _rt::as_i64(e); + } + None => { + *base.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(60).cast::() = len8; + *base.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *base.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(72).cast::() = len9; + *base.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *base.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *base.add(80).cast::() = len18; + *base.add(76).cast::<*mut u8>() = result18; + match t0_2 { + Some(e) => { + *base.add(88).cast::() = (1i32) as u8; + let vec19 = e; + let ptr19 = vec19.as_ptr().cast::(); + let len19 = vec19.len(); + *base.add(96).cast::() = len19; + *base.add(92).cast::<*mut u8>() = ptr19.cast_mut(); + } + None => { + *base.add(88).cast::() = (0i32) as u8; + } + }; + match t0_3 { + Some(e) => { + *base.add(100).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime20, bytes: bytes20 } = e; + match mime20 { + Some(e) => { + *base.add(104).cast::() = (1i32) as u8; + let vec21 = e; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *base.add(112).cast::() = len21; + *base.add(108).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *base.add(104).cast::() = (0i32) as u8; + } + }; + let vec22 = bytes20; + let ptr22 = vec22.as_ptr().cast::(); + let len22 = vec22.len(); + *base.add(120).cast::() = len22; + *base.add(116).cast::<*mut u8>() = ptr22.cast_mut(); + } + None => { + *base.add(100).cast::() = (0i32) as u8; + } + }; + cleanup_list.extend_from_slice(&[(result18, layout18)]); + } + } + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: usize) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(result23, len23); + if layout23.size() != 0 { + _rt::alloc::dealloc(result23.cast(), layout23); + } + for (ptr, layout) in cleanup_list { + if layout.size() != 0 { + _rt::alloc::dealloc(ptr.cast(), layout); + } + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send response to the request currently being handled. + pub fn send_response( + response: &Response, + lazy_load_blob: Option<&LazyLoadBlob>, + ) { + unsafe { + let Response { + inherit: inherit0, + body: body0, + metadata: metadata0, + capabilities: capabilities0, + } = response; + let vec1 = body0; + let ptr1 = vec1.as_ptr().cast::(); + let len1 = vec1.len(); + let (result3_0, result3_1, result3_2) = match metadata0 { + Some(e) => { + let vec2 = e; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + (1i32, ptr2.cast_mut(), len2) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec12 = capabilities0; + let len12 = vec12.len(); + let layout12 = _rt::alloc::Layout::from_size_align_unchecked( + vec12.len() * 40, + 4, + ); + let result12 = if layout12.size() != 0 { + let ptr = _rt::alloc::alloc(layout12).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout12); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec12.into_iter().enumerate() { + let base = result12.add(i * 40); + { + let Capability { issuer: issuer4, params: params4 } = e; + let Address { node: node5, process: process5 } = issuer4; + let vec6 = node5; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *base.add(4).cast::() = len6; + *base.add(0).cast::<*mut u8>() = ptr6.cast_mut(); + let ProcessId { + process_name: process_name7, + package_name: package_name7, + publisher_node: publisher_node7, + } = process5; + let vec8 = process_name7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *base.add(12).cast::() = len8; + *base.add(8).cast::<*mut u8>() = ptr8.cast_mut(); + let vec9 = package_name7; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *base.add(20).cast::() = len9; + *base.add(16).cast::<*mut u8>() = ptr9.cast_mut(); + let vec10 = publisher_node7; + let ptr10 = vec10.as_ptr().cast::(); + let len10 = vec10.len(); + *base.add(28).cast::() = len10; + *base.add(24).cast::<*mut u8>() = ptr10.cast_mut(); + let vec11 = params4; + let ptr11 = vec11.as_ptr().cast::(); + let len11 = vec11.len(); + *base.add(36).cast::() = len11; + *base.add(32).cast::<*mut u8>() = ptr11.cast_mut(); + } + } + let ( + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ) = match lazy_load_blob { + Some(e) => { + let LazyLoadBlob { mime: mime13, bytes: bytes13 } = e; + let (result15_0, result15_1, result15_2) = match mime13 { + Some(e) => { + let vec14 = e; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + (1i32, ptr14.cast_mut(), len14) + } + None => (0i32, ::core::ptr::null_mut(), 0usize), + }; + let vec16 = bytes13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + ( + 1i32, + result15_0, + result15_1, + result15_2, + ptr16.cast_mut(), + len16, + ) + } + None => { + ( + 0i32, + 0i32, + ::core::ptr::null_mut(), + 0usize, + ::core::ptr::null_mut(), + 0usize, + ) + } + }; + #[cfg(not(target_arch = "wasm32"))] + fn wit_import( + _: i32, + _: *mut u8, + _: usize, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + _: i32, + _: i32, + _: *mut u8, + _: usize, + _: *mut u8, + _: usize, + ) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import( + match inherit0 { + true => 1, + false => 0, + }, + ptr1.cast_mut(), + len1, + result3_0, + result3_1, + result3_2, + result12, + len12, + result17_0, + result17_1, + result17_2, + result17_3, + result17_4, + result17_5, + ); + if layout12.size() != 0 { + _rt::alloc::dealloc(result12.cast(), layout12); + } + } + } + #[allow(unused_unsafe, clippy::all)] + /// Send a single request, then block (internally) until its response. The + /// type returned is Message but will always contain Response. + pub fn send_and_await_response( + target: &Address, + request: &Request, + lazy_load_blob: Option<&LazyLoadBlob>, + ) -> Result<(Address, Message), SendError> { + unsafe { + #[repr(align(8))] + struct RetArea([::core::mem::MaybeUninit; 136]); + let mut ret_area = RetArea( + [::core::mem::MaybeUninit::uninit(); 136], + ); + let ptr0 = ret_area.0.as_mut_ptr().cast::(); + let Address { node: node1, process: process1 } = target; + let vec2 = node1; + let ptr2 = vec2.as_ptr().cast::(); + let len2 = vec2.len(); + *ptr0.add(4).cast::() = len2; + *ptr0.add(0).cast::<*mut u8>() = ptr2.cast_mut(); + let ProcessId { + process_name: process_name3, + package_name: package_name3, + publisher_node: publisher_node3, + } = process1; + let vec4 = process_name3; + let ptr4 = vec4.as_ptr().cast::(); + let len4 = vec4.len(); + *ptr0.add(12).cast::() = len4; + *ptr0.add(8).cast::<*mut u8>() = ptr4.cast_mut(); + let vec5 = package_name3; + let ptr5 = vec5.as_ptr().cast::(); + let len5 = vec5.len(); + *ptr0.add(20).cast::() = len5; + *ptr0.add(16).cast::<*mut u8>() = ptr5.cast_mut(); + let vec6 = publisher_node3; + let ptr6 = vec6.as_ptr().cast::(); + let len6 = vec6.len(); + *ptr0.add(28).cast::() = len6; + *ptr0.add(24).cast::<*mut u8>() = ptr6.cast_mut(); + let Request { + inherit: inherit7, + expects_response: expects_response7, + body: body7, + metadata: metadata7, + capabilities: capabilities7, + } = request; + *ptr0.add(32).cast::() = (match inherit7 { + true => 1, + false => 0, + }) as u8; + match expects_response7 { + Some(e) => { + *ptr0.add(40).cast::() = (1i32) as u8; + *ptr0.add(48).cast::() = _rt::as_i64(e); + } + None => { + *ptr0.add(40).cast::() = (0i32) as u8; + } + }; + let vec8 = body7; + let ptr8 = vec8.as_ptr().cast::(); + let len8 = vec8.len(); + *ptr0.add(60).cast::() = len8; + *ptr0.add(56).cast::<*mut u8>() = ptr8.cast_mut(); + match metadata7 { + Some(e) => { + *ptr0.add(64).cast::() = (1i32) as u8; + let vec9 = e; + let ptr9 = vec9.as_ptr().cast::(); + let len9 = vec9.len(); + *ptr0.add(72).cast::() = len9; + *ptr0.add(68).cast::<*mut u8>() = ptr9.cast_mut(); + } + None => { + *ptr0.add(64).cast::() = (0i32) as u8; + } + }; + let vec18 = capabilities7; + let len18 = vec18.len(); + let layout18 = _rt::alloc::Layout::from_size_align_unchecked( + vec18.len() * 40, + 4, + ); + let result18 = if layout18.size() != 0 { + let ptr = _rt::alloc::alloc(layout18).cast::(); + if ptr.is_null() { + _rt::alloc::handle_alloc_error(layout18); + } + ptr + } else { + ::core::ptr::null_mut() + }; + for (i, e) in vec18.into_iter().enumerate() { + let base = result18.add(i * 40); + { + let Capability { issuer: issuer10, params: params10 } = e; + let Address { node: node11, process: process11 } = issuer10; + let vec12 = node11; + let ptr12 = vec12.as_ptr().cast::(); + let len12 = vec12.len(); + *base.add(4).cast::() = len12; + *base.add(0).cast::<*mut u8>() = ptr12.cast_mut(); + let ProcessId { + process_name: process_name13, + package_name: package_name13, + publisher_node: publisher_node13, + } = process11; + let vec14 = process_name13; + let ptr14 = vec14.as_ptr().cast::(); + let len14 = vec14.len(); + *base.add(12).cast::() = len14; + *base.add(8).cast::<*mut u8>() = ptr14.cast_mut(); + let vec15 = package_name13; + let ptr15 = vec15.as_ptr().cast::(); + let len15 = vec15.len(); + *base.add(20).cast::() = len15; + *base.add(16).cast::<*mut u8>() = ptr15.cast_mut(); + let vec16 = publisher_node13; + let ptr16 = vec16.as_ptr().cast::(); + let len16 = vec16.len(); + *base.add(28).cast::() = len16; + *base.add(24).cast::<*mut u8>() = ptr16.cast_mut(); + let vec17 = params10; + let ptr17 = vec17.as_ptr().cast::(); + let len17 = vec17.len(); + *base.add(36).cast::() = len17; + *base.add(32).cast::<*mut u8>() = ptr17.cast_mut(); + } + } + *ptr0.add(80).cast::() = len18; + *ptr0.add(76).cast::<*mut u8>() = result18; + match lazy_load_blob { + Some(e) => { + *ptr0.add(88).cast::() = (1i32) as u8; + let LazyLoadBlob { mime: mime19, bytes: bytes19 } = e; + match mime19 { + Some(e) => { + *ptr0.add(92).cast::() = (1i32) as u8; + let vec20 = e; + let ptr20 = vec20.as_ptr().cast::(); + let len20 = vec20.len(); + *ptr0.add(100).cast::() = len20; + *ptr0.add(96).cast::<*mut u8>() = ptr20.cast_mut(); + } + None => { + *ptr0.add(92).cast::() = (0i32) as u8; + } + }; + let vec21 = bytes19; + let ptr21 = vec21.as_ptr().cast::(); + let len21 = vec21.len(); + *ptr0.add(108).cast::() = len21; + *ptr0.add(104).cast::<*mut u8>() = ptr21.cast_mut(); + } + None => { + *ptr0.add(88).cast::() = (0i32) as u8; + } + }; + let ptr22 = ret_area.0.as_mut_ptr().cast::(); + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: *mut u8, _: *mut u8) { + ::core::panicking::panic( + "internal error: entered unreachable code", + ) + } + wit_import(ptr0, ptr22); + let l23 = i32::from(*ptr22.add(0).cast::()); + if layout18.size() != 0 { + _rt::alloc::dealloc(result18.cast(), layout18); + } + match l23 { + 0 => { + let e = { + let l24 = *ptr22.add(8).cast::<*mut u8>(); + let l25 = *ptr22.add(12).cast::(); + let len26 = l25; + let bytes26 = _rt::Vec::from_raw_parts( + l24.cast(), + len26, + len26, + ); + let l27 = *ptr22.add(16).cast::<*mut u8>(); + let l28 = *ptr22.add(20).cast::(); + let len29 = l28; + let bytes29 = _rt::Vec::from_raw_parts( + l27.cast(), + len29, + len29, + ); + let l30 = *ptr22.add(24).cast::<*mut u8>(); + let l31 = *ptr22.add(28).cast::(); + let len32 = l31; + let bytes32 = _rt::Vec::from_raw_parts( + l30.cast(), + len32, + len32, + ); + let l33 = *ptr22.add(32).cast::<*mut u8>(); + let l34 = *ptr22.add(36).cast::(); + let len35 = l34; + let bytes35 = _rt::Vec::from_raw_parts( + l33.cast(), + len35, + len35, + ); + let l36 = i32::from(*ptr22.add(40).cast::()); + let v95 = match l36 { + 0 => { + let e95 = { + let l37 = i32::from(*ptr22.add(48).cast::()); + let l38 = i32::from(*ptr22.add(56).cast::()); + let l40 = *ptr22.add(72).cast::<*mut u8>(); + let l41 = *ptr22.add(76).cast::(); + let len42 = l41; + let l43 = i32::from(*ptr22.add(80).cast::()); + let l47 = *ptr22.add(92).cast::<*mut u8>(); + let l48 = *ptr22.add(96).cast::(); + let base64 = l47; + let len64 = l48; + let mut result64 = _rt::Vec::with_capacity(len64); + for i in 0..len64 { + let base = base64.add(i * 40); + let e64 = { + let l49 = *base.add(0).cast::<*mut u8>(); + let l50 = *base.add(4).cast::(); + let len51 = l50; + let bytes51 = _rt::Vec::from_raw_parts( + l49.cast(), + len51, + len51, + ); + let l52 = *base.add(8).cast::<*mut u8>(); + let l53 = *base.add(12).cast::(); + let len54 = l53; + let bytes54 = _rt::Vec::from_raw_parts( + l52.cast(), + len54, + len54, + ); + let l55 = *base.add(16).cast::<*mut u8>(); + let l56 = *base.add(20).cast::(); + let len57 = l56; + let bytes57 = _rt::Vec::from_raw_parts( + l55.cast(), + len57, + len57, + ); + let l58 = *base.add(24).cast::<*mut u8>(); + let l59 = *base.add(28).cast::(); + let len60 = l59; + let bytes60 = _rt::Vec::from_raw_parts( + l58.cast(), + len60, + len60, + ); + let l61 = *base.add(32).cast::<*mut u8>(); + let l62 = *base.add(36).cast::(); + let len63 = l62; + let bytes63 = _rt::Vec::from_raw_parts( + l61.cast(), + len63, + len63, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes51), + process: ProcessId { + process_name: _rt::string_lift(bytes54), + package_name: _rt::string_lift(bytes57), + publisher_node: _rt::string_lift(bytes60), + }, + }, + params: _rt::string_lift(bytes63), + } + }; + result64.push(e64); + } + _rt::cabi_dealloc(base64, len64 * 40, 4); + Request { + inherit: _rt::bool_lift(l37 as u8), + expects_response: match l38 { + 0 => None, + 1 => { + let e = { + let l39 = *ptr22.add(64).cast::(); + l39 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l40.cast(), len42, len42), + metadata: match l43 { + 0 => None, + 1 => { + let e = { + let l44 = *ptr22.add(84).cast::<*mut u8>(); + let l45 = *ptr22.add(88).cast::(); + let len46 = l45; + let bytes46 = _rt::Vec::from_raw_parts( + l44.cast(), + len46, + len46, + ); + _rt::string_lift(bytes46) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result64, + } + }; + Message::Request(e95) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e95 = { + let l65 = i32::from(*ptr22.add(48).cast::()); + let l66 = *ptr22.add(52).cast::<*mut u8>(); + let l67 = *ptr22.add(56).cast::(); + let len68 = l67; + let l69 = i32::from(*ptr22.add(60).cast::()); + let l73 = *ptr22.add(72).cast::<*mut u8>(); + let l74 = *ptr22.add(76).cast::(); + let base90 = l73; + let len90 = l74; + let mut result90 = _rt::Vec::with_capacity(len90); + for i in 0..len90 { + let base = base90.add(i * 40); + let e90 = { + let l75 = *base.add(0).cast::<*mut u8>(); + let l76 = *base.add(4).cast::(); + let len77 = l76; + let bytes77 = _rt::Vec::from_raw_parts( + l75.cast(), + len77, + len77, + ); + let l78 = *base.add(8).cast::<*mut u8>(); + let l79 = *base.add(12).cast::(); + let len80 = l79; + let bytes80 = _rt::Vec::from_raw_parts( + l78.cast(), + len80, + len80, + ); + let l81 = *base.add(16).cast::<*mut u8>(); + let l82 = *base.add(20).cast::(); + let len83 = l82; + let bytes83 = _rt::Vec::from_raw_parts( + l81.cast(), + len83, + len83, + ); + let l84 = *base.add(24).cast::<*mut u8>(); + let l85 = *base.add(28).cast::(); + let len86 = l85; + let bytes86 = _rt::Vec::from_raw_parts( + l84.cast(), + len86, + len86, + ); + let l87 = *base.add(32).cast::<*mut u8>(); + let l88 = *base.add(36).cast::(); + let len89 = l88; + let bytes89 = _rt::Vec::from_raw_parts( + l87.cast(), + len89, + len89, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes77), + process: ProcessId { + process_name: _rt::string_lift(bytes80), + package_name: _rt::string_lift(bytes83), + publisher_node: _rt::string_lift(bytes86), + }, + }, + params: _rt::string_lift(bytes89), + } + }; + result90.push(e90); + } + _rt::cabi_dealloc(base90, len90 * 40, 4); + let l91 = i32::from(*ptr22.add(80).cast::()); + ( + Response { + inherit: _rt::bool_lift(l65 as u8), + body: _rt::Vec::from_raw_parts(l66.cast(), len68, len68), + metadata: match l69 { + 0 => None, + 1 => { + let e = { + let l70 = *ptr22.add(64).cast::<*mut u8>(); + let l71 = *ptr22.add(68).cast::(); + let len72 = l71; + let bytes72 = _rt::Vec::from_raw_parts( + l70.cast(), + len72, + len72, + ); + _rt::string_lift(bytes72) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result90, + }, + match l91 { + 0 => None, + 1 => { + let e = { + let l92 = *ptr22.add(84).cast::<*mut u8>(); + let l93 = *ptr22.add(88).cast::(); + let len94 = l93; + _rt::Vec::from_raw_parts(l92.cast(), len94, len94) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e95) + } + }; + ( + Address { + node: _rt::string_lift(bytes26), + process: ProcessId { + process_name: _rt::string_lift(bytes29), + package_name: _rt::string_lift(bytes32), + publisher_node: _rt::string_lift(bytes35), + }, + }, + v95, + ) + }; + Ok(e) + } + 1 => { + let e = { + let l96 = i32::from(*ptr22.add(8).cast::()); + let l97 = *ptr22.add(12).cast::<*mut u8>(); + let l98 = *ptr22.add(16).cast::(); + let len99 = l98; + let bytes99 = _rt::Vec::from_raw_parts( + l97.cast(), + len99, + len99, + ); + let l100 = *ptr22.add(20).cast::<*mut u8>(); + let l101 = *ptr22.add(24).cast::(); + let len102 = l101; + let bytes102 = _rt::Vec::from_raw_parts( + l100.cast(), + len102, + len102, + ); + let l103 = *ptr22.add(28).cast::<*mut u8>(); + let l104 = *ptr22.add(32).cast::(); + let len105 = l104; + let bytes105 = _rt::Vec::from_raw_parts( + l103.cast(), + len105, + len105, + ); + let l106 = *ptr22.add(36).cast::<*mut u8>(); + let l107 = *ptr22.add(40).cast::(); + let len108 = l107; + let bytes108 = _rt::Vec::from_raw_parts( + l106.cast(), + len108, + len108, + ); + let l109 = i32::from(*ptr22.add(48).cast::()); + let v168 = match l109 { + 0 => { + let e168 = { + let l110 = i32::from(*ptr22.add(56).cast::()); + let l111 = i32::from(*ptr22.add(64).cast::()); + let l113 = *ptr22.add(80).cast::<*mut u8>(); + let l114 = *ptr22.add(84).cast::(); + let len115 = l114; + let l116 = i32::from(*ptr22.add(88).cast::()); + let l120 = *ptr22.add(100).cast::<*mut u8>(); + let l121 = *ptr22.add(104).cast::(); + let base137 = l120; + let len137 = l121; + let mut result137 = _rt::Vec::with_capacity(len137); + for i in 0..len137 { + let base = base137.add(i * 40); + let e137 = { + let l122 = *base.add(0).cast::<*mut u8>(); + let l123 = *base.add(4).cast::(); + let len124 = l123; + let bytes124 = _rt::Vec::from_raw_parts( + l122.cast(), + len124, + len124, + ); + let l125 = *base.add(8).cast::<*mut u8>(); + let l126 = *base.add(12).cast::(); + let len127 = l126; + let bytes127 = _rt::Vec::from_raw_parts( + l125.cast(), + len127, + len127, + ); + let l128 = *base.add(16).cast::<*mut u8>(); + let l129 = *base.add(20).cast::(); + let len130 = l129; + let bytes130 = _rt::Vec::from_raw_parts( + l128.cast(), + len130, + len130, + ); + let l131 = *base.add(24).cast::<*mut u8>(); + let l132 = *base.add(28).cast::(); + let len133 = l132; + let bytes133 = _rt::Vec::from_raw_parts( + l131.cast(), + len133, + len133, + ); + let l134 = *base.add(32).cast::<*mut u8>(); + let l135 = *base.add(36).cast::(); + let len136 = l135; + let bytes136 = _rt::Vec::from_raw_parts( + l134.cast(), + len136, + len136, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes124), + process: ProcessId { + process_name: _rt::string_lift(bytes127), + package_name: _rt::string_lift(bytes130), + publisher_node: _rt::string_lift(bytes133), + }, + }, + params: _rt::string_lift(bytes136), + } + }; + result137.push(e137); + } + _rt::cabi_dealloc(base137, len137 * 40, 4); + Request { + inherit: _rt::bool_lift(l110 as u8), + expects_response: match l111 { + 0 => None, + 1 => { + let e = { + let l112 = *ptr22.add(72).cast::(); + l112 as u64 + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + body: _rt::Vec::from_raw_parts(l113.cast(), len115, len115), + metadata: match l116 { + 0 => None, + 1 => { + let e = { + let l117 = *ptr22.add(92).cast::<*mut u8>(); + let l118 = *ptr22.add(96).cast::(); + let len119 = l118; + let bytes119 = _rt::Vec::from_raw_parts( + l117.cast(), + len119, + len119, + ); + _rt::string_lift(bytes119) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result137, + } + }; + Message::Request(e168) + } + n => { + if true { + match (&n, &1) { + (left_val, right_val) => { + if !(*left_val == *right_val) { + let kind = ::core::panicking::AssertKind::Eq; + ::core::panicking::assert_failed( + kind, + &*left_val, + &*right_val, + ::core::option::Option::Some( + format_args!("invalid enum discriminant"), + ), + ); + } + } + }; + } + let e168 = { + let l138 = i32::from(*ptr22.add(56).cast::()); + let l139 = *ptr22.add(60).cast::<*mut u8>(); + let l140 = *ptr22.add(64).cast::(); + let len141 = l140; + let l142 = i32::from(*ptr22.add(68).cast::()); + let l146 = *ptr22.add(80).cast::<*mut u8>(); + let l147 = *ptr22.add(84).cast::(); + let base163 = l146; + let len163 = l147; + let mut result163 = _rt::Vec::with_capacity(len163); + for i in 0..len163 { + let base = base163.add(i * 40); + let e163 = { + let l148 = *base.add(0).cast::<*mut u8>(); + let l149 = *base.add(4).cast::(); + let len150 = l149; + let bytes150 = _rt::Vec::from_raw_parts( + l148.cast(), + len150, + len150, + ); + let l151 = *base.add(8).cast::<*mut u8>(); + let l152 = *base.add(12).cast::(); + let len153 = l152; + let bytes153 = _rt::Vec::from_raw_parts( + l151.cast(), + len153, + len153, + ); + let l154 = *base.add(16).cast::<*mut u8>(); + let l155 = *base.add(20).cast::(); + let len156 = l155; + let bytes156 = _rt::Vec::from_raw_parts( + l154.cast(), + len156, + len156, + ); + let l157 = *base.add(24).cast::<*mut u8>(); + let l158 = *base.add(28).cast::(); + let len159 = l158; + let bytes159 = _rt::Vec::from_raw_parts( + l157.cast(), + len159, + len159, + ); + let l160 = *base.add(32).cast::<*mut u8>(); + let l161 = *base.add(36).cast::(); + let len162 = l161; + let bytes162 = _rt::Vec::from_raw_parts( + l160.cast(), + len162, + len162, + ); + Capability { + issuer: Address { + node: _rt::string_lift(bytes150), + process: ProcessId { + process_name: _rt::string_lift(bytes153), + package_name: _rt::string_lift(bytes156), + publisher_node: _rt::string_lift(bytes159), + }, + }, + params: _rt::string_lift(bytes162), + } + }; + result163.push(e163); + } + _rt::cabi_dealloc(base163, len163 * 40, 4); + let l164 = i32::from(*ptr22.add(88).cast::()); + ( + Response { + inherit: _rt::bool_lift(l138 as u8), + body: _rt::Vec::from_raw_parts(l139.cast(), len141, len141), + metadata: match l142 { + 0 => None, + 1 => { + let e = { + let l143 = *ptr22.add(72).cast::<*mut u8>(); + let l144 = *ptr22.add(76).cast::(); + let len145 = l144; + let bytes145 = _rt::Vec::from_raw_parts( + l143.cast(), + len145, + len145, + ); + _rt::string_lift(bytes145) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + capabilities: result163, + }, + match l164 { + 0 => None, + 1 => { + let e = { + let l165 = *ptr22.add(92).cast::<*mut u8>(); + let l166 = *ptr22.add(96).cast::(); + let len167 = l166; + _rt::Vec::from_raw_parts(l165.cast(), len167, len167) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + ) + }; + Message::Response(e168) + } + }; + let l169 = i32::from(*ptr22.add(112).cast::()); + SendError { + kind: SendErrorKind::_lift(l96 as u8), + target: Address { + node: _rt::string_lift(bytes99), + process: ProcessId { + process_name: _rt::string_lift(bytes102), + package_name: _rt::string_lift(bytes105), + publisher_node: _rt::string_lift(bytes108), + }, + }, + message: v168, + lazy_load_blob: match l169 { + 0 => None, + 1 => { + let e = { + let l170 = i32::from(*ptr22.add(116).cast::()); + let l174 = *ptr22.add(128).cast::<*mut u8>(); + let l175 = *ptr22.add(132).cast::(); + let len176 = l175; + LazyLoadBlob { + mime: match l170 { + 0 => None, + 1 => { + let e = { + let l171 = *ptr22.add(120).cast::<*mut u8>(); + let l172 = *ptr22.add(124).cast::(); + let len173 = l172; + let bytes173 = _rt::Vec::from_raw_parts( + l171.cast(), + len173, + len173, + ); + _rt::string_lift(bytes173) + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + bytes: _rt::Vec::from_raw_parts(l174.cast(), len176, len176), + } + }; + Some(e) + } + _ => _rt::invalid_enum_discriminant(), + }, + } + }; + Err(e) + } + _ => _rt::invalid_enum_discriminant(), + } + } + } + } + #[allow(dead_code, clippy::all)] + pub mod sign { + #[used] + #[doc(hidden)] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + use super::super::super::_rt; + pub type Address = super::super::super::hyperware::process::standard::Address; + /// Function signature for: sign (local) + pub struct SignSignatureLocal { + pub target: Address, + pub message: _rt::Vec, + pub returning: Result<_rt::Vec, _rt::String>, + } + #[automatically_derived] + impl ::core::clone::Clone for SignSignatureLocal { + #[inline] + fn clone(&self) -> SignSignatureLocal { + SignSignatureLocal { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: SignSignatureLocal) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a SignSignatureLocal> for Vec { + fn from(value: &'a SignSignatureLocal) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for SignSignatureLocal { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for SignSignatureLocal { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for SignSignatureLocal { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"returning" => _serde::__private::Ok(__Field::__field2), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = SignSignatureLocal; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct SignSignatureLocal", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + Result<_rt::Vec, _rt::String>, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct SignSignatureLocal with 3 elements", + ), + ); + } + }; + _serde::__private::Ok(SignSignatureLocal { + target: __field0, + message: __field1, + returning: __field2, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option< + Result<_rt::Vec, _rt::String>, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result<_rt::Vec, _rt::String>, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(SignSignatureLocal { + target: __field0, + message: __field1, + returning: __field2, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "SignSignatureLocal", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + SignSignatureLocal, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for SignSignatureLocal { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "SignSignatureLocal", + false as usize + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for SignSignatureLocal { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("SignSignatureLocal") + .field("target", &self.target) + .field("message", &self.message) + .field("returning", &self.returning) + .finish() + } + } + /// Function signature for: verify (local) + pub struct VerifySignatureLocal { + pub target: Address, + pub message: _rt::Vec, + pub signature: _rt::Vec, + pub returning: Result, + } + #[automatically_derived] + impl ::core::clone::Clone for VerifySignatureLocal { + #[inline] + fn clone(&self) -> VerifySignatureLocal { + VerifySignatureLocal { + target: ::core::clone::Clone::clone(&self.target), + message: ::core::clone::Clone::clone(&self.message), + signature: ::core::clone::Clone::clone(&self.signature), + returning: ::core::clone::Clone::clone(&self.returning), + } + } + } + impl From for Vec { + fn from(value: VerifySignatureLocal) -> Self { + serde_json::to_vec(&value).expect("Failed to serialize to Vec") + } + } + impl<'a> From<&'a VerifySignatureLocal> for Vec { + fn from(value: &'a VerifySignatureLocal) -> Self { + serde_json::to_vec(value).expect("Failed to serialize to Vec") + } + } + impl TryFrom> for VerifySignatureLocal { + type Error = serde_json::Error; + fn try_from(value: Vec) -> Result { + serde_json::from_slice(&value) + } + } + impl TryFrom<&[u8]> for VerifySignatureLocal { + type Error = serde_json::Error; + fn try_from(value: &[u8]) -> Result { + serde_json::from_slice(value) + } + } + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for VerifySignatureLocal { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + __field2, + __field3, + __ignore, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "field identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + 2u64 => _serde::__private::Ok(__Field::__field2), + 3u64 => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "target" => _serde::__private::Ok(__Field::__field0), + "message" => _serde::__private::Ok(__Field::__field1), + "signature" => _serde::__private::Ok(__Field::__field2), + "returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"target" => _serde::__private::Ok(__Field::__field0), + b"message" => _serde::__private::Ok(__Field::__field1), + b"signature" => _serde::__private::Ok(__Field::__field2), + b"returning" => _serde::__private::Ok(__Field::__field3), + _ => _serde::__private::Ok(__Field::__ignore), + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = VerifySignatureLocal; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "struct VerifySignatureLocal", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Address, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field2 = match _serde::de::SeqAccess::next_element::< + _rt::Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 2usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + let __field3 = match _serde::de::SeqAccess::next_element::< + Result, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 3usize, + &"struct VerifySignatureLocal with 4 elements", + ), + ); + } + }; + _serde::__private::Ok(VerifySignatureLocal { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + #[inline] + fn visit_map<__A>( + self, + mut __map: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::MapAccess<'de>, + { + let mut __field0: _serde::__private::Option
= _serde::__private::None; + let mut __field1: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field2: _serde::__private::Option<_rt::Vec> = _serde::__private::None; + let mut __field3: _serde::__private::Option< + Result, + > = _serde::__private::None; + while let _serde::__private::Some(__key) = _serde::de::MapAccess::next_key::< + __Field, + >(&mut __map)? { + match __key { + __Field::__field0 => { + if _serde::__private::Option::is_some(&__field0) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field("target"), + ); + } + __field0 = _serde::__private::Some( + _serde::de::MapAccess::next_value::
(&mut __map)?, + ); + } + __Field::__field1 => { + if _serde::__private::Option::is_some(&__field1) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "message", + ), + ); + } + __field1 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field2 => { + if _serde::__private::Option::is_some(&__field2) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "signature", + ), + ); + } + __field2 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + _rt::Vec, + >(&mut __map)?, + ); + } + __Field::__field3 => { + if _serde::__private::Option::is_some(&__field3) { + return _serde::__private::Err( + <__A::Error as _serde::de::Error>::duplicate_field( + "returning", + ), + ); + } + __field3 = _serde::__private::Some( + _serde::de::MapAccess::next_value::< + Result, + >(&mut __map)?, + ); + } + _ => { + let _ = _serde::de::MapAccess::next_value::< + _serde::de::IgnoredAny, + >(&mut __map)?; + } + } + } + let __field0 = match __field0 { + _serde::__private::Some(__field0) => __field0, + _serde::__private::None => { + _serde::__private::de::missing_field("target")? + } + }; + let __field1 = match __field1 { + _serde::__private::Some(__field1) => __field1, + _serde::__private::None => { + _serde::__private::de::missing_field("message")? + } + }; + let __field2 = match __field2 { + _serde::__private::Some(__field2) => __field2, + _serde::__private::None => { + _serde::__private::de::missing_field("signature")? + } + }; + let __field3 = match __field3 { + _serde::__private::Some(__field3) => __field3, + _serde::__private::None => { + _serde::__private::de::missing_field("returning")? + } + }; + _serde::__private::Ok(VerifySignatureLocal { + target: __field0, + message: __field1, + signature: __field2, + returning: __field3, + }) + } + } + #[doc(hidden)] + const FIELDS: &'static [&'static str] = &[ + "target", + "message", + "signature", + "returning", + ]; + _serde::Deserializer::deserialize_struct( + __deserializer, + "VerifySignatureLocal", + FIELDS, + __Visitor { + marker: _serde::__private::PhantomData::< + VerifySignatureLocal, + >, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + }; + #[doc(hidden)] + #[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, + )] + const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for VerifySignatureLocal { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + let mut __serde_state = _serde::Serializer::serialize_struct( + __serializer, + "VerifySignatureLocal", + false as usize + 1 + 1 + 1 + 1, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "target", + &self.target, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "message", + &self.message, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "signature", + &self.signature, + )?; + _serde::ser::SerializeStruct::serialize_field( + &mut __serde_state, + "returning", + &self.returning, + )?; + _serde::ser::SerializeStruct::end(__serde_state) + } + } + }; + impl ::core::fmt::Debug for VerifySignatureLocal { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { + f.debug_struct("VerifySignatureLocal") + .field("target", &self.target) + .field("message", &self.message) + .field("signature", &self.signature) + .field("returning", &self.returning) + .finish() + } + } + } + } +} +mod _rt { + pub use alloc_crate::string::String; + pub use alloc_crate::vec::Vec; + pub fn as_i32(t: T) -> i32 { + t.as_i32() + } + pub trait AsI32 { + fn as_i32(self) -> i32; + } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { + fn as_i32(self) -> i32 { + (*self).as_i32() + } + } + impl AsI32 for i32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u32 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u16 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for i8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for u8 { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for char { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + impl AsI32 for usize { + #[inline] + fn as_i32(self) -> i32 { + self as i32 + } + } + pub unsafe fn string_lift(bytes: Vec) -> String { + if true { + String::from_utf8(bytes).unwrap() + } else { + String::from_utf8_unchecked(bytes) + } + } + pub unsafe fn bool_lift(val: u8) -> bool { + if true { + match val { + 0 => false, + 1 => true, + _ => { + ::core::panicking::panic_fmt( + format_args!("invalid bool discriminant"), + ); + } + } + } else { + val != 0 + } + } + pub unsafe fn invalid_enum_discriminant() -> T { + if true { + { + ::core::panicking::panic_fmt(format_args!("invalid enum discriminant")); + } + } else { + core::hint::unreachable_unchecked() + } + } + pub unsafe fn cabi_dealloc(ptr: *mut u8, size: usize, align: usize) { + if size == 0 { + return; + } + let layout = alloc::Layout::from_size_align_unchecked(size, align); + alloc::dealloc(ptr, layout); + } + pub fn as_i64(t: T) -> i64 { + t.as_i64() + } + pub trait AsI64 { + fn as_i64(self) -> i64; + } + impl<'a, T: Copy + AsI64> AsI64 for &'a T { + fn as_i64(self) -> i64 { + (*self).as_i64() + } + } + impl AsI64 for i64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + impl AsI64 for u64 { + #[inline] + fn as_i64(self) -> i64 { + self as i64 + } + } + pub use alloc_crate::alloc; + extern crate alloc as alloc_crate; +} +#[doc(inline)] +pub(crate) use __export_sign_sys_v0_impl as export; +#[inline(never)] +#[doc(hidden)] +pub fn __link_custom_section_describing_imports() { + wit_bindgen::rt::maybe_link_cabi_realloc(); +} +const _: &[u8] = b"world sign-sys-v0 {\n import sign;\n include process-v1;\n}"; +const _: &[u8] = b"world types-sign-sys-v0 {\n import sign;\n include lib;\n}"; +const _: &[u8] = b"interface sign {\n // This interface contains function signature definitions that will be used\n // by the hyper-bindgen macro to generate async function bindings.\n //\n // NOTE: This is currently a hacky workaround since WIT async functions are not\n // available until WASI Preview 3. Once Preview 3 is integrated into Hyperware,\n // we should switch to using proper async WIT function signatures instead of\n // this struct-based approach with hyper-bindgen generating the async stubs.\n\n use standard.{address};\n\n // Function signature for: sign (local)\n record sign-signature-local {\n target: address,\n message: list,\n returning: result, string>\n }\n\n // Function signature for: verify (local)\n record verify-signature-local {\n target: address,\n message: list,\n signature: list,\n returning: result\n }\n}\n"; +const _: &[u8] = b"package hyperware:process@1.0.0;\n\ninterface standard {\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Types\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// JSON is passed over Wasm boundary as a string.\n type json = string;\n\n /// In types passed from kernel, node-id will be a valid Kimap entry.\n type node-id = string;\n\n /// Context, like a message body, is a protocol-defined serialized byte\n /// array. It is used when building a Request to save information that\n /// will not be part of a Response, in order to more easily handle\n /// (\"contextualize\") that Response.\n type context = list;\n\n record process-id {\n process-name: string,\n package-name: string,\n publisher-node: node-id,\n }\n\n record package-id {\n package-name: string,\n publisher-node: node-id,\n }\n\n record address {\n node: node-id,\n process: process-id,\n }\n\n record lazy-load-blob {\n mime: option,\n bytes: list,\n }\n\n record request {\n // set in order to inherit lazy-load-blob from parent message, and if\n // expects-response is none, direct response to source of parent.\n // also carries forward certain aspects of parent message in kernel,\n // see documentation for formal spec and examples:\n // https://docs.rs/hyperware_process_lib/latest/hyperware_process_lib/struct.Request.html\n inherit: bool,\n // if some, request expects a response in the given number of seconds\n expects-response: option,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n record response {\n inherit: bool,\n body: list,\n metadata: option,\n capabilities: list,\n // to grab lazy-load-blob, use get_blob()\n }\n\n /// A message can be a request or a response. Within a response, there is\n /// a result which surfaces any error that happened because of a request.\n /// A successful response will contain the context of the request it\n /// matches, if any was set.\n variant message {\n request(request),\n response(tuple>),\n }\n\n record capability {\n issuer: address,\n params: json,\n }\n\n /// On-exit is a setting that determines what happens when a process\n /// panics, completes, or otherwise \"ends\".\n /// NOTE: requests will always have expects-response set to false by kernel.\n variant on-exit {\n none,\n restart,\n requests(list>>),\n }\n\n /// Send errors come from trying to send a message to another process,\n /// either locally or on another node.\n /// A message can fail by timing out, or by the node being entirely\n /// unreachable (offline or can\'t be found in PKI). In either case,\n /// the message is not delivered and the process that sent it receives\n /// that message back along with any assigned context and/or lazy-load-blob,\n /// and is free to handle it as it sees fit.\n /// In the local case, only timeout errors are possible and also cover the case\n /// in which a process is not running or does not exist.\n record send-error {\n kind: send-error-kind,\n target: address,\n message: message,\n lazy-load-blob: option,\n }\n\n enum send-error-kind {\n offline,\n timeout,\n }\n\n enum spawn-error {\n name-taken,\n no-file-at-path,\n }\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // System Utils\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Prints to the terminal at a given verbosity level.\n /// Higher verbosity levels print more information.\n /// Level 0 is always printed -- use sparingly.\n print-to-terminal: func(verbosity: u8, message: string);\n\n /// Returns the address of the process.\n our: func() -> address;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Process Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n get-on-exit: func() -> on-exit;\n\n set-on-exit: func(on-exit: on-exit);\n\n get-state: func() -> option>;\n\n set-state: func(bytes: list);\n\n clear-state: func();\n\n spawn: func(\n // name is optional. if not provided, name will be a random u64.\n name: option,\n // wasm-path must be located within package\'s drive\n wasm-path: string,\n on-exit: on-exit,\n // requested capabilities must be owned by the caller\n request-capabilities: list,\n // granted capabilities will be generated by the child process\n // and handed out to the indicated process-id.\n grant-capabilities: list>,\n public: bool\n ) -> result;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Capabilities Management\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Saves the capabilities to persisted process state.\n save-capabilities: func(caps: list);\n\n /// Deletes the capabilities from persisted process state.\n drop-capabilities: func(caps: list);\n\n /// Gets all capabilities from persisted process state.\n our-capabilities: func() -> list;\n\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n // Message I/O\n // \xcb\x97\xcb\x8f\xcb\x8b \xe2\x99\xa1 \xcb\x8e\xcb\x8a\xcb\x97\n\n /// Ingest next message when it arrives along with its source.\n /// Almost all long-running processes will call this in a loop.\n receive: func() ->\n result, tuple>>;\n\n /// Returns whether or not the current message has a blob.\n has-blob: func() -> bool;\n\n /// Returns the blob of the current message, if any.\n get-blob: func() -> option;\n\n /// Returns the last blob this process received.\n last-blob: func() -> option;\n\n /// Send request to target.\n send-request: func(\n target: address,\n request: request,\n context: option,\n lazy-load-blob: option\n );\n\n /// Send requests to targets.\n send-requests: func(\n requests: list,\n option>>\n );\n\n /// Send response to the request currently being handled.\n send-response: func(\n response: response,\n lazy-load-blob: option\n );\n\n /// Send a single request, then block (internally) until its response. The\n /// type returned is Message but will always contain Response.\n send-and-await-response: func(\n target: address,\n request: request,\n lazy-load-blob: option\n ) -> result, send-error>;\n}\n\nworld lib {\n import standard;\n}\n\nworld process-v1 {\n include lib;\n\n export init: func(our: string);\n}\n"; +use hyperware_process_lib::http::server::HttpBindingConfig; +use hyperware_process_lib::http::server::WsBindingConfig; +use hyperware_app_common::Binding; +impl SignState { + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + async fn sign(&mut self, message: Vec) -> Result, String> { + match sign(message).await { + Ok(s) => Ok(s), + Err(e) => Err(e.to_string()), + } + } + async fn verify( + &mut self, + message: Vec, + signature: Vec, + ) -> Result { + match verify(message, signature).await { + Ok(v) => Ok(v), + Err(e) => Err(e.to_string()), + } + } +} +enum HPMRequest { + Sign(Vec), + Verify(Vec, Vec), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMRequest { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMRequest::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMRequest::Verify(__self_0, __self_1) => { + ::core::fmt::Formatter::debug_tuple_field2_finish( + f, + "Verify", + __self_0, + &__self_1, + ) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMRequest { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMRequest::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMRequest", + 0u32, + "Sign", + __field0, + ) + } + HPMRequest::Verify(ref __field0, ref __field1) => { + let mut __serde_state = _serde::Serializer::serialize_tuple_variant( + __serializer, + "HPMRequest", + 1u32, + "Verify", + 0 + 1 + 1, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field0, + )?; + _serde::ser::SerializeTupleVariant::serialize_field( + &mut __serde_state, + __field1, + )?; + _serde::ser::SerializeTupleVariant::end(__serde_state) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMRequest { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMRequest", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Vec, + >(__variant), + HPMRequest::Sign, + ) + } + (__Field::__field1, __variant) => { + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMRequest; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "tuple variant HPMRequest::Verify", + ) + } + #[inline] + fn visit_seq<__A>( + self, + mut __seq: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::SeqAccess<'de>, + { + let __field0 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 0usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + let __field1 = match _serde::de::SeqAccess::next_element::< + Vec, + >(&mut __seq)? { + _serde::__private::Some(__value) => __value, + _serde::__private::None => { + return _serde::__private::Err( + _serde::de::Error::invalid_length( + 1usize, + &"tuple variant HPMRequest::Verify with 2 elements", + ), + ); + } + }; + _serde::__private::Ok( + HPMRequest::Verify(__field0, __field1), + ) + } + } + _serde::de::VariantAccess::tuple_variant( + __variant, + 2usize, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMRequest", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +enum HPMResponse { + Sign(Result, String>), + Verify(Result), +} +#[automatically_derived] +impl ::core::fmt::Debug for HPMResponse { + #[inline] + fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result { + match self { + HPMResponse::Sign(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Sign", &__self_0) + } + HPMResponse::Verify(__self_0) => { + ::core::fmt::Formatter::debug_tuple_field1_finish(f, "Verify", &__self_0) + } + } + } +} +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl _serde::Serialize for HPMResponse { + fn serialize<__S>( + &self, + __serializer: __S, + ) -> _serde::__private::Result<__S::Ok, __S::Error> + where + __S: _serde::Serializer, + { + match *self { + HPMResponse::Sign(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 0u32, + "Sign", + __field0, + ) + } + HPMResponse::Verify(ref __field0) => { + _serde::Serializer::serialize_newtype_variant( + __serializer, + "HPMResponse", + 1u32, + "Verify", + __field0, + ) + } + } + } + } +}; +#[doc(hidden)] +#[allow( + non_upper_case_globals, + unused_attributes, + unused_qualifications, + clippy::absolute_paths, +)] +const _: () = { + #[allow(unused_extern_crates, clippy::useless_attribute)] + extern crate serde as _serde; + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for HPMResponse { + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + #[allow(non_camel_case_types)] + #[doc(hidden)] + enum __Field { + __field0, + __field1, + } + #[doc(hidden)] + struct __FieldVisitor; + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __FieldVisitor { + type Value = __Field; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "variant identifier", + ) + } + fn visit_u64<__E>( + self, + __value: u64, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + 0u64 => _serde::__private::Ok(__Field::__field0), + 1u64 => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::invalid_value( + _serde::de::Unexpected::Unsigned(__value), + &"variant index 0 <= i < 2", + ), + ) + } + } + } + fn visit_str<__E>( + self, + __value: &str, + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + "Sign" => _serde::__private::Ok(__Field::__field0), + "Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + fn visit_bytes<__E>( + self, + __value: &[u8], + ) -> _serde::__private::Result + where + __E: _serde::de::Error, + { + match __value { + b"Sign" => _serde::__private::Ok(__Field::__field0), + b"Verify" => _serde::__private::Ok(__Field::__field1), + _ => { + let __value = &_serde::__private::from_utf8_lossy(__value); + _serde::__private::Err( + _serde::de::Error::unknown_variant(__value, VARIANTS), + ) + } + } + } + } + #[automatically_derived] + impl<'de> _serde::Deserialize<'de> for __Field { + #[inline] + fn deserialize<__D>( + __deserializer: __D, + ) -> _serde::__private::Result + where + __D: _serde::Deserializer<'de>, + { + _serde::Deserializer::deserialize_identifier( + __deserializer, + __FieldVisitor, + ) + } + } + #[doc(hidden)] + struct __Visitor<'de> { + marker: _serde::__private::PhantomData, + lifetime: _serde::__private::PhantomData<&'de ()>, + } + #[automatically_derived] + impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> { + type Value = HPMResponse; + fn expecting( + &self, + __formatter: &mut _serde::__private::Formatter, + ) -> _serde::__private::fmt::Result { + _serde::__private::Formatter::write_str( + __formatter, + "enum HPMResponse", + ) + } + fn visit_enum<__A>( + self, + __data: __A, + ) -> _serde::__private::Result + where + __A: _serde::de::EnumAccess<'de>, + { + match _serde::de::EnumAccess::variant(__data)? { + (__Field::__field0, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, String>, + >(__variant), + HPMResponse::Sign, + ) + } + (__Field::__field1, __variant) => { + _serde::__private::Result::map( + _serde::de::VariantAccess::newtype_variant::< + Result, + >(__variant), + HPMResponse::Verify, + ) + } + } + } + } + #[doc(hidden)] + const VARIANTS: &'static [&'static str] = &["Sign", "Verify"]; + _serde::Deserializer::deserialize_enum( + __deserializer, + "HPMResponse", + VARIANTS, + __Visitor { + marker: _serde::__private::PhantomData::, + lifetime: _serde::__private::PhantomData, + }, + ) + } + } +}; +/// Handle messages from the HTTP server +fn handle_http_server_message( + state: *mut SignState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::< + hyperware_process_lib::http::server::HttpServerRequest, + >(message.body()) { + Ok(http_server_request) => { + match http_server_request { + hyperware_process_lib::http::server::HttpServerRequest::Http( + http_request, + ) => { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = Some( + http_request + .path() + .clone() + .expect("Failed to get path from HTTP request"), + ); + }); + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for HTTP, sending BAD_REQUEST", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::vec::Vec::new(), + ); + return; + }; + match serde_json::from_slice::(&blob.bytes) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No HTTP handlers defined but received an HTTP request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize HTTP request into HPMRequest enum: {0}\n{1:?}", + e, + serde_json::from_slice::(&blob.bytes), + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_process_lib::http::server::send_response( + hyperware_process_lib::http::StatusCode::BAD_REQUEST, + None, + ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("Invalid request format: {0}", e), + ); + res + }) + .into_bytes(), + ); + } + } + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_path = None; + }); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketPush { + channel_id, + message_type, + } => { + let Some(blob) = message.blob() else { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to get blob for WebSocketPush, exiting", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + return; + }; + unsafe { + hyperware_app_common::maybe_save_state(&mut *state); + } + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketOpen { + path, + channel_id, + } => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_open(&path, channel_id); + } + hyperware_process_lib::http::server::HttpServerRequest::WebSocketClose( + channel_id, + ) => { + hyperware_app_common::get_server() + .unwrap() + .handle_websocket_close(channel_id); + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Failed to parse HTTP server request: {0}", e) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle local messages +fn handle_local_message(state: *mut SignState, message: hyperware_process_lib::Message) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + match request { + HPMRequest::Sign(param) => { + let param_captured = param; + let state_ptr: *mut SignState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).sign(param_captured).await + }; + let resp = hyperware_process_lib::Response::new() + .body(serde_json::to_vec(&result).unwrap()); + resp.send().unwrap(); + }) + }) + } + HPMRequest::Verify(param0, param1) => { + let param0_captured = param0; + let param1_captured = param1; + let state_ptr: *mut SignState = state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + let result = unsafe { + (*state_ptr).verify(param0_captured, param1_captured).await + }; + let resp = hyperware_process_lib::Response::new() + .body(serde_json::to_vec(&result).unwrap()); + resp.send().unwrap(); + }) + }) + } + _ => { + ::core::panicking::panic_fmt( + format_args!( + "internal error: entered unreachable code: {0}", + format_args!( + "Non-local request variant received in local handler", + ), + ), + ); + } + } + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize local request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +/// Handle remote messages +fn handle_remote_message( + state: *mut SignState, + message: hyperware_process_lib::Message, +) { + match serde_json::from_slice::(message.body()) { + Ok(req_value) => { + match serde_json::from_value::(req_value.clone()) { + Ok(request) => { + unsafe { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "No remote handlers defined but received a remote request", + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + hyperware_app_common::maybe_save_state(&mut *state); + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to deserialize remote request into HPMRequest enum: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!("Raw request value: {0:?}", req_value) + as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } + } + Err(e) => { + { + use ::tracing::__macro_support::Callsite as _; + static __CALLSITE: ::tracing::callsite::DefaultCallsite = { + static META: ::tracing::Metadata<'static> = { + ::tracing_core::metadata::Metadata::new( + "event sign/src/lib.rs:88", + "sign", + ::tracing::Level::WARN, + ::tracing_core::__macro_support::Option::Some( + "sign/src/lib.rs", + ), + ::tracing_core::__macro_support::Option::Some(88u32), + ::tracing_core::__macro_support::Option::Some("sign"), + ::tracing_core::field::FieldSet::new( + &["message"], + ::tracing_core::callsite::Identifier(&__CALLSITE), + ), + ::tracing::metadata::Kind::EVENT, + ) + }; + ::tracing::callsite::DefaultCallsite::new(&META) + }; + let enabled = ::tracing::Level::WARN + <= ::tracing::level_filters::STATIC_MAX_LEVEL + && ::tracing::Level::WARN + <= ::tracing::level_filters::LevelFilter::current() + && { + let interest = __CALLSITE.interest(); + !interest.is_never() + && ::tracing::__macro_support::__is_enabled( + __CALLSITE.metadata(), + interest, + ) + }; + if enabled { + (|value_set: ::tracing::field::ValueSet| { + let meta = __CALLSITE.metadata(); + ::tracing::Event::dispatch(meta, &value_set); + })({ + #[allow(unused_imports)] + use ::tracing::field::{debug, display, Value}; + let mut iter = __CALLSITE.metadata().fields().iter(); + __CALLSITE + .metadata() + .fields() + .value_set( + &[ + ( + &::tracing::__macro_support::Iterator::next(&mut iter) + .expect("FieldSet corrupted (this is a bug)"), + ::tracing::__macro_support::Option::Some( + &format_args!( + "Failed to parse message body as JSON: {0}", + e, + ) as &dyn Value, + ), + ), + ], + ) + }); + } else { + } + }; + } + } +} +struct Component; +impl Guest for Component { + fn init(_our: String) { + let mut state = hyperware_app_common::initialize_state::(); + let app_name = "sign"; + let app_icon = None; + let app_widget = None; + let ui_config = None; + let endpoints = ::alloc::vec::Vec::new(); + if app_icon.is_some() && app_widget.is_some() { + hyperware_process_lib::homepage::add_to_homepage( + app_name, + app_icon, + Some("/"), + app_widget, + ); + } + let mut server = hyperware_app_common::setup_server( + ui_config.as_ref(), + &endpoints, + ); + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().current_server = Some(&mut server); + }); + if Some("init").is_some() { + let state_ptr: *mut SignState = &mut state; + ::hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut() + .executor + .spawn(async move { + unsafe { (*state_ptr).init().await }; + }) + }) + } + loop { + hyperware_app_common::APP_CONTEXT + .with(|ctx| { + ctx.borrow_mut().executor.poll_all_tasks(); + }); + match hyperware_process_lib::await_message() { + Ok(message) => { + CURRENT_MESSAGE + .with(|cell| { + *cell.borrow_mut() = Some(message.clone()); + }); + match message { + hyperware_process_lib::Message::Response { + body, + context, + .. + } => { + let correlation_id = context + .as_deref() + .map(|bytes| String::from_utf8_lossy(bytes).to_string()) + .unwrap_or_else(|| "no context".to_string()); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, body); + }); + } + hyperware_process_lib::Message::Request { .. } => { + if message.is_local() + && message.source().process == "http-server:distro:sys" + { + handle_http_server_message(&mut state, message); + } else if message.is_local() { + handle_local_message(&mut state, message); + } else { + handle_remote_message(&mut state, message); + } + } + } + } + Err(error) => { + let kind = &error.kind; + let target = &error.target; + let body = String::from_utf8(error.message.body().to_vec()) + .map(|s| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("\"{0}\"", s)); + res + })) + .unwrap_or_else(|_| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!("{0:?}", error.message.body()), + ); + res + })); + let context = error + .context + .as_ref() + .map(|bytes| String::from_utf8_lossy(bytes).into_owned()); + { + ::hyperware_process_lib::print_to_terminal( + 0, + &::alloc::__export::must_use({ + let res = ::alloc::fmt::format( + format_args!( + "SendError {{\n kind: {0:?},\n target: {1},\n body: {2},\n context: {3}\n }}", + kind, + target, + body, + context + .map(|s| ::alloc::__export::must_use({ + let res = ::alloc::fmt::format(format_args!("\"{0}\"", s)); + res + })) + .unwrap_or("None".to_string()), + ), + ); + res + }), + ); + }; + if let hyperware_process_lib::SendError { + kind, + context: Some(context), + .. + } = &error { + if let Ok(correlation_id) = String::from_utf8(context.to_vec()) { + let none_response = serde_json::to_vec(kind).unwrap(); + hyperware_app_common::RESPONSE_REGISTRY + .with(|registry| { + let mut registry_mut = registry.borrow_mut(); + registry_mut.insert(correlation_id, none_response); + }); + } + } + } + } + } + } +} +const _: () = { + #[export_name = "init"] + unsafe extern "C" fn export_init(arg0: *mut u8, arg1: usize) { + self::_export_init_cabi::(arg0, arg1) + } +}; diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/src/icon b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/src/icon new file mode 100644 index 00000000..f67b371b --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/src/icon @@ -0,0 +1 @@ +data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwMCIgaGVpZ2h0PSIxMDAwIiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cmVjdCB4PSIyMCIgeT0iMjAiIHdpZHRoPSI5NjAiIGhlaWdodD0iOTYwIiByeD0iNDgwIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfMjA5MV8xMDI4MikiIGZpbGwtb3BhY2l0eT0iMC40Ii8+CjxyZWN0IHg9IjIwIiB5PSIyMCIgd2lkdGg9Ijk2MCIgaGVpZ2h0PSI5NjAiIHJ4PSI0ODAiIHN0cm9rZT0idXJsKCNwYWludDFfbGluZWFyXzIwOTFfMTAyODIpIiBzdHJva2Utd2lkdGg9IjQwIi8+CjxwYXRoIGQ9Ik01ODEuMTE2IDU4NS43ODNMNjY0LjUzOCA2NjkuMTJDNjE3LjY5OSA3MTUuNzU4IDU1Ni42MjUgNzM5IDQ5NS4yNDUgNzM5QzQzMy44NjUgNzM5IDM3Mi42MzggNzE1LjYwNSAzMjYuMTA1IDY2OS4xMkMyODAuNzk3IDYyMy44NTggMjU2IDU2My45MTcgMjU2IDUwMEMyNTYgNDM2LjA4MyAyODAuOTUgMzc2LjE0MiAzMjYuMTA1IDMzMC44OEMzNzEuMjYgMjg1LjYxOSA0MzEuMjYyIDI2MSA0OTUuMjQ1IDI2MUM1NTkuMjI3IDI2MSA2MTkuMjMgMjg1LjkyNCA2NjQuNTM4IDMzMC44OEw1ODAuOTYzIDQxNC41MjNDNTQ1LjYwNCAzODMuOTQgNTA1LjE5NCAzNzQuNzY2IDQ2MS4yNjQgMzkxLjEyN0MzOTQuOTg1IDQxNS44OTkgMzY2LjgyMSA0ODkuMjk2IDM5Ny40MzUgNTUyLjc1NEMzOTguNjU5IDU1NS4yMDEgMzk4Ljk2NSA1NTguNzE4IDM5OC4zNTMgNTYxLjMxN0MzOTUuNzUxIDU3Mi40OCAzOTIuNjg5IDU4My40OSAzODkuNzgxIDU5NC4zNDZDMzg2LjEwNyA2MDcuOTU1IDM5My45MTQgNjE1Ljc1NCA0MDcuNTM3IDYxMi4yMzdDNDE4LjU1OCA2MDkuMzMxIDQyOS41NzkgNjA2LjEyIDQ0MC42IDYwMy42NzRDNDQzLjM1NSA2MDIuOTA5IDQ0Ny4wMjkgNjAzLjIxNSA0NDkuNjMxIDYwNC40MzhDNDkwLjUgNjIzLjM5OSA1MjkuOTkxIDYyMC44IDU2Ny43OTkgNTk2LjE4MUM1NzIuNTQ0IDU5My4xMjMgNTc2LjY3NyA1ODkuNDUzIDU4MS4xMTYgNTg1Ljc4M1oiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl8yMDkxXzEwMjgyKSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzIwOTFfMTAyODIiIHgxPSI1MDAiIHkxPSIwIiB4Mj0iNTAwIiB5Mj0iMTAwMCIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRjM1NDIyIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1vcGFjaXR5PSIwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQxX2xpbmVhcl8yMDkxXzEwMjgyIiB4MT0iNzgyLjUiIHkxPSI3My41IiB4Mj0iMTg1LjUiIHkyPSI4OTQuNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRjM1NDIyIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0E1MzEwQyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfMjA5MV8xMDI4MiIgeDE9Ijc1NCIgeTE9Ijg5LjUiIHgyPSIyNTYiIHkyPSIxMDE1LjUiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0YzNTQyMiIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNBNzMyMEQiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/src/lib.rs b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/src/lib.rs new file mode 100644 index 00000000..3f8fae06 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/example-apps/sign/sign/src/lib.rs @@ -0,0 +1,94 @@ +use anyhow::anyhow; + +use hyperware_process_lib::logging::{init_logging, Level}; +use hyperware_process_lib::net::{NetAction, NetResponse}; +use hyperware_process_lib::{last_blob, our, LazyLoadBlob, Request}; + +use hyperware_app_common::{send_rmp, source}; +use hyperprocess_macro::hyperprocess; + +#[derive(Default, Debug, serde::Serialize, serde::Deserialize)] +struct SignState {} + +async fn sign(message: Vec) -> anyhow::Result> { + let message = make_message(&message); + let body = rmp_serde::to_vec(&NetAction::Sign)?; + + let req = Request::to(("our", "net", "distro", "sys")) + .expects_response(5) + .blob(LazyLoadBlob { + mime: None, + bytes: message, + }) + .body(body); + + let _resp: NetResponse = send_rmp(req).await?; + + let Some(signature) = last_blob() else { + return Err(anyhow!("no blob")); + }; + + Ok(signature.bytes) +} + +async fn verify(message: Vec, signature: Vec) -> anyhow::Result { + let message = make_message(&message); + let body = rmp_serde::to_vec(&NetAction::Verify { + from: our(), + signature, + })?; + + let req = Request::to(("our", "net", "distro", "sys")) + .expects_response(5) + .blob(LazyLoadBlob { + mime: None, + bytes: message, + }) + .body(body); + + let resp: NetResponse = send_rmp(req).await?; + + match resp { + NetResponse::Verified(is_good) => { + Ok(is_good) + } + _ => Err(anyhow!("weird response")), + } +} + +/// net:distro:sys prepends the message to sign with the sender of the request +/// +/// since any sign requests passed through sign:sign:sys will look to net:distro:sys +/// like they come from sign:sign:sys, we additionally prepend the message with +/// source here +/// +/// so final message to be signed looks like +/// +/// [sign-address, source, bytes].concat() +fn make_message(bytes: &Vec) -> Vec { + [source().to_string().as_bytes(), &bytes].concat() +} + +#[hyperprocess( + name = "sign", + ui = None, + endpoints = vec![], + save_config = SaveOptions::Never, + wit_world = "sign-sys-v0", +)] +impl SignState { + #[init] + async fn init(&mut self) { + init_logging(Level::DEBUG, Level::INFO, None, None, None).unwrap(); + } + + #[local] + async fn sign(&mut self, message: Vec) -> Result, String> { + sign(message).await.map_err(|e| e.to_string()) + } + + #[local] + async fn verify(&mut self, message: Vec, signature: Vec) -> Result { + verify(message, signature).await.map_err(|e| e.to_string()) + } +} diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/00-QUICK-REFERENCE.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/00-QUICK-REFERENCE.md new file mode 100644 index 00000000..0764e0f2 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/00-QUICK-REFERENCE.md @@ -0,0 +1,272 @@ +# 🚀 Hyperware Quick Reference for AI Models + +## Critical Rules - MUST FOLLOW + +### 1. HTTP Endpoints Parameter Handling +```rust +// ✅ Modern approach - Direct type deserialization (requires generated caller-utils) +#[http(method = "POST")] +async fn create_item(&mut self, request: CreateItemReq) -> Result { } + +// ✅ Legacy approach - Manual JSON parsing (still valid) +#[http] +async fn create_item(&mut self, request_body: String) -> Result { + let req: CreateItemReq = serde_json::from_str(&request_body)?; +} +``` + +**Note**: The modern approach requires generated TypeScript caller-utils that wrap requests in method-named objects. + +For detailed explanation and more examples, see [Troubleshooting Guide - Section 1](./02-TROUBLESHOOTING.md#error-failed-to-deserialize-http-request) + +### 2. Frontend MUST Include `/our.js` Script +```html + + + + + +``` + +### 3. API Call Formats +```typescript +// ✅ Modern approach (with generated caller-utils) +// Single parameter - wrapped in method-named object +{ "CreateItem": { name: "foo", value: 42 } } + +// ✅ Legacy approach (manual API calls) +// Single string parameter +{ "CreateItem": "raw string value" } +// Multiple parameters as array (rare) +{ "UpdateItem": ["id123", "new value"] } +``` + +**Note**: Most modern apps use generated caller-utils that handle the wrapping automatically. + +### 4. Remote Calls MUST Set Timeout +```rust +// ❌ WRONG - No timeout +Request::new() + .target(address) + .body(data) + .send(); + +// ✅ CORRECT - Always set expects_response +Request::new() + .target(address) + .body(data) + .expects_response(30) // 30 second timeout + .send_and_await_response(30); +``` + +### 5. WIT-Compatible Types Only +```rust +// ✅ ALLOWED +String, bool, u8-u64, i8-i64, f32, f64 +Vec, Option +Simple structs with public fields + +// ❌ NOT ALLOWED +HashMap → use Vec<(K,V)> +[T; N] → use Vec +Complex enums → use simple enums + separate data + +// 🔥 ESCAPE HATCH: Return JSON strings +#[http] +async fn get_complex(&self, _request_body: String) -> String { + serde_json::to_string(&self.complex_data).unwrap() +} +``` + +## Build Commands + +```bash +# First time build (installs dependencies) +kit bs --hyperapp + +# Regular build +kit b --hyperapp + +# Clean rebuild +rm -rf target/ ui/node_modules ui/dist pkg/ +kit b --hyperapp +``` + +**Note**: `kit b --hyperapp` automatically generates `pkg/manifest.json` + +## Project Structure +``` +skeleton-app/ +├── Cargo.toml # Workspace config +├── metadata.json # App metadata +├── skeleton-app/ # Rust backend +│ ├── Cargo.toml # DO NOT add hyperware_process_lib here! +│ └── src/ +│ └── lib.rs # Main app logic +├── ui/ # React frontend +│ ├── index.html # MUST have + + My App + +``` + +**Debug in Browser Console:** +```javascript +// Check if script loaded +console.log(window.our); +// Should show: { node: "yournode.os", process: "app:package:publisher" } + +// If undefined, check network tab for /our.js request +``` + +### ❌ Error: "Failed to parse ProcessId" + +**Examples:** +``` +Failed to parse ProcessId: InvalidFormat +``` + +**Root Cause:** Incorrect ProcessId format + +**Solution:** +```rust +// ❌ WRONG formats +let pid = "myapp".parse::(); // Missing parts +let pid = "myapp:myapp".parse::(); // Missing publisher +let pid = "myapp-myapp-publisher".parse::(); // Wrong separator + +// ✅ CORRECT format: "process:package:publisher" +let pid = "myapp:myapp:publisher.os".parse::()?; + +// For your app matching remote nodes +let publisher = "skeleton.os"; // Or whatever the remote uses +let pid = format!("skeleton-app:skeleton-app:{}", publisher) + .parse::()?; +``` + +### ❌ Error: Parameter format mismatch + +**Symptoms:** Frontend call succeeds but backend receives wrong data + +**Root Cause:** Multi-parameter endpoints need tuple format + +**Solution:** +```typescript +// ❌ WRONG - Object format +const response = await fetch('/api', { + body: JSON.stringify({ + CreateItem: { + name: "Item", + description: "Description" + } + }) +}); + +// ✅ CORRECT - Tuple/array format for multiple params +const response = await fetch('/api', { + body: JSON.stringify({ + CreateItem: ["Item", "Description"] + }) +}); + +// For single parameter, value directly +const response = await fetch('/api', { + body: JSON.stringify({ + GetItem: "item-id-123" + }) +}); +``` + +--- + +## 3. P2P Communication Issues + +### ❌ Error: "SendError" or "Failed to send request" + +**Common Causes:** + +1. **Target node not running:** +```bash +# Check if target node is accessible +# In your node's terminal, you should see incoming requests +``` + +2. **Wrong node name:** +```rust +// ❌ WRONG - Using placeholder +let target = Address::new("placeholder.os", process_id); + +// ✅ CORRECT - Use actual node name +let target = Address::new("alice.os", process_id); // Real node +``` + +3. **Missing timeout:** +```rust +// ❌ WRONG - No timeout set +Request::new() + .target(address) + .body(data) + .send(); + +// ✅ CORRECT - Always set expects_response +Request::new() + .target(address) + .body(data) + .expects_response(30) // REQUIRED! + .send_and_await_response(30)?; +``` + +4. **Wrong request format:** +```rust +// ❌ WRONG - Array format +let wrapper = json!({ + "HandleRequest": [param1, param2] // Arrays don't work +}); + +// ✅ CORRECT - Tuple format for multiple params +let wrapper = json!({ + "HandleRequest": (param1, param2) // Tuple format +}); + +// ✅ CORRECT - Single param +let wrapper = json!({ + "HandleRequest": param +}); +``` + +### ❌ Error: Remote endpoint not found + +**Symptom:** Call succeeds but returns error about missing method + +**Root Cause:** Method name mismatch or missing #[remote] attribute + +**Solution:** +```rust +// On receiving node: +#[remote] // Must have this attribute! +async fn handle_sync(&mut self, data: String) -> Result { + // Implementation +} + +// On calling node: +let wrapper = json!({ + "HandleSync": data // Must match exactly (case-sensitive) +}); +``` + +### ❌ Error: Can't decode remote response + +**Root Cause:** Response type mismatch + +**Solution:** +```rust +// ❌ Expecting wrong type +let response: ComplexType = serde_json::from_slice(&response.body())?; + +// ✅ Match what remote actually returns +let response: String = serde_json::from_slice(&response.body())?; +// Then parse if needed +let data: ComplexType = serde_json::from_str(&response)?; +``` + +### ❌ Error: ProcessId parse errors in P2P apps + +**Symptoms:** +``` +Failed to parse ProcessId: InvalidFormat +``` + +**Common P2P Pattern:** +```rust +// ❌ WRONG - Hardcoded publisher assumption +let pid = "samchat:samchat:publisher.os".parse::()?; + +// ✅ CORRECT - Use consistent publisher across nodes +let publisher = "hpn-testing-beta.os"; // Or get from config +let target_process_id_str = format!("samchat:samchat:{}", publisher); +let target_process_id = target_process_id_str.parse::() + .map_err(|e| format!("Failed to parse ProcessId: {}", e))?; +``` + +### ❌ Error: Node ID not initialized + +**Symptoms:** +``` +Sender node ID not initialized +``` + +**Root Cause:** Trying to use node ID before init + +**Solution:** +```rust +// In state +pub struct AppState { + my_node_id: Option, +} + +// In init +#[init] +async fn initialize(&mut self) { + self.my_node_id = Some(our().node.clone()); +} + +// In handlers +let sender = self.my_node_id.clone() + .ok_or_else(|| "Node ID not initialized".to_string())?; +``` + +### ❌ Error: Group/conversation management issues + +**Common P2P Chat Errors:** +```rust +// Group not found +let conversation = self.conversations.get(&group_id) + .ok_or_else(|| "Group conversation not found".to_string())?; + +// Not a group conversation +if !conversation.is_group { + return Err("Not a group conversation".to_string()); +} + +// Member already exists +if conversation.participants.contains(&new_member) { + return Err("Member already in group".to_string()); +} +``` + +### ❌ Error: Remote file/data fetch failures + +**Complex P2P data retrieval pattern:** +```rust +// Try local first, then remote +match local_result { + Ok(response) => { + if let Some(blob) = response.blob() { + return Ok(blob.bytes); + } + }, + Err(_) => { + // Fetch from remote node + let remote_result = Request::new() + .target(remote_address) + .body(request_body) + .expects_response(30) + .send_and_await_response(30)?; + + match remote_result { + Ok(response) => { + // Parse nested Result + let response_json: serde_json::Value = + serde_json::from_slice(&response.body())?; + + if let Some(data) = response_json.get("Ok") { + // Handle success + } else if let Some(err) = response_json.get("Err") { + return Err(format!("Remote error: {}", err)); + } + }, + Err(e) => return Err(format!("Remote fetch failed: {:?}", e)) + } + } +} +``` + +--- + +## 4. State Management Issues + +### ❌ Error: State not persisting + +**Root Cause:** Wrong save_config or state not serializable + +**Solution:** +```rust +#[hyperprocess( + // ... + save_config = SaveOptions::EveryMessage, // Most reliable + // OR + save_config = SaveOptions::OnInterval(30), // Every 30 seconds +)] + +// Ensure state is serializable +#[derive(Default, Serialize, Deserialize)] +pub struct AppState { + // All fields must be serializable +} +``` + +### ❌ Error: Race conditions in React state + +**Symptom:** Action uses old state value + +**Solution:** +```typescript +// ❌ WRONG - State might not be updated +const handleJoin = async (gameId: string) => { + setSelectedGame(gameId); + await joinGame(); // Uses selectedGame from state - WRONG! +}; + +// ✅ CORRECT - Pass value explicitly +const handleJoin = async (gameId: string) => { + setSelectedGame(gameId); + await joinGame(gameId); // Pass directly +}; + +// ✅ BETTER - Use callback form +const handleUpdate = () => { + setItems(prevItems => { + // Work with prevItems, not items from closure + return [...prevItems, newItem]; + }); +}; +``` + +### ❌ Error: Stale data in UI + +**Root Cause:** Not refreshing after mutations + +**Solution:** +```typescript +// In your store +const createItem = async (data: CreateData) => { + try { + await api.createItem(data); + // ✅ Refresh data after mutation + await get().fetchItems(); + } catch (error) { + // Handle error + } +}; + +// With optimistic updates +const deleteItem = async (id: string) => { + // Optimistic update + set(state => ({ + items: state.items.filter(item => item.id !== id) + })); + + try { + await api.deleteItem(id); + } catch (error) { + // Rollback on error + await get().fetchItems(); + throw error; + } +}; +``` + +--- + +## 5. Manifest & Capability Issues + +### ❌ Error: "failed to open file `pkg/manifest.json`" + +**Full Error:** +``` +ERROR: failed to open file `/path/to/app/pkg/manifest.json` +No such file or directory (os error 2) +``` + +**Root Cause:** manifest.json not generated during build + +**Solutions:** + +1. **Build properly with kit:** +```bash +# This generates manifest.json automatically +kit b --hyperapp +``` + +2. **Check if pkg directory exists:** +```bash +ls -la pkg/ +# Should contain: manifest.json, your-app.wasm, ui/ +``` + +3. **If still missing, check metadata.json:** +```json +// metadata.json must exist and be valid +{ + "package": "skeleton-app", + "publisher": "skeleton.os" +} +``` + +**See**: [Manifest & Deployment Guide](./08-MANIFEST-AND-DEPLOYMENT.md) for details + +### ❌ Error: "Process does not have capability X" + +**Example:** +``` +Error: Process skeleton-app:skeleton-app:user.os does not have capability vfs:distro:sys +``` + +**Root Cause:** Using system feature without requesting capability + +**Solution:** Add to manifest.json: +```json +"request_capabilities": [ + "homepage:homepage:sys", + "http-server:distro:sys", + "vfs:distro:sys" // Add missing capability +] +``` + +**See**: [Capabilities Guide](./09-CAPABILITIES-GUIDE.md) for all capabilities + +### ❌ Error: App doesn't appear on homepage + +**Root Cause:** Missing homepage capability or add_to_homepage call + +**Solution:** +1. Check manifest.json includes: +```json +"request_capabilities": [ + "homepage:homepage:sys" // Required! +] +``` + +2. Check init function calls: +```rust +#[init] +async fn initialize(&mut self) { + add_to_homepage("My App", Some("🚀"), Some("/"), None); +} +``` + +--- + +## 6. Development Workflow Issues + +### Clean Build Process +```bash +# When things are really broken +rm -rf target/ +rm -rf ui/node_modules ui/dist +rm -rf pkg/ +rm Cargo.lock + +# Fresh build +kit b --hyperapp +``` + +### Check Generated Files +```bash +# View generated WIT +cat api/*.wit + +# Check built package +ls -la pkg/ + +# Verify UI was built +ls -la pkg/ui/ +``` + +### Test Incrementally +```bash +# 1. Test backend compiles +cd skeleton-app && cargo check + +# 2. Test UI builds +cd ui && npm run build + +# 3. Full build +cd .. && kit b --hyperapp +``` + +--- + +## 6. Common Patterns That Cause Issues + +### ❌ WebSocket Handler Issues +```rust +// ❌ WRONG - Async WebSocket handler +#[ws] +async fn websocket(&mut self, channel_id: u32, message_type: WsMessageType, blob: LazyLoadBlob) { + // WebSocket handlers must NOT be async! +} + +// ✅ CORRECT - Synchronous handler +#[ws] +fn websocket(&mut self, channel_id: u32, message_type: WsMessageType, blob: LazyLoadBlob) { + match message_type { + WsMessageType::Text => { + // Handle text message + } + WsMessageType::Close => { + // Handle disconnect + } + _ => {} + } +} +``` + +**Common WebSocket Issues:** +1. **Missing endpoint configuration** in hyperprocess macro: +```rust +#[hyperprocess( + endpoints = vec![ + Binding::Ws { + path: "/ws", + config: WsBindingConfig::default().authenticated(false), + }, + ], +)] +``` + +2. **Frontend connection issues:** +```typescript +// ❌ WRONG - Missing authentication +const ws = new WebSocket('ws://localhost:8080/ws'); + +// ✅ CORRECT - Include proper URL +const ws = new WebSocket(`ws://${window.location.host}/${appName}/ws`); +``` + +### ❌ Forgetting async on endpoints +```rust +// ❌ WRONG - Not async +#[http] +fn get_data(&self, _request_body: String) -> String { + // Won't compile +} + +// ✅ CORRECT - Must be async +#[http] +async fn get_data(&self, _request_body: String) -> String { + // Works +} +``` + +### ❌ Wrong imports order +```rust +// ❌ Can cause issues +use serde::{Serialize, Deserialize}; +use hyperprocess_macro::*; + +// ✅ Better order +use hyperprocess_macro::*; +use hyperware_process_lib::{our, Address, ProcessId, Request}; +use serde::{Deserialize, Serialize}; +``` + +--- + +## Debug Checklist + +When nothing works, check: + +1. **Build issues:** + - [ ] All HTTP methods have `_request_body` parameter? + - [ ] No `hyperware_process_lib` in Cargo.toml? + - [ ] All types are WIT-compatible? + - [ ] `#[hyperprocess]` before impl block? + +2. **Runtime issues:** + - [ ] `/our.js` script in HTML head? + - [ ] Node is actually running? + - [ ] Correct ProcessId format? + - [ ] Frontend using tuple format for params? + +3. **P2P issues:** + - [ ] Target node running? + - [ ] Using real node names? + - [ ] `expects_response` timeout set? + - [ ] Method names match exactly? + +4. **State issues:** + - [ ] State is serializable? + - [ ] Refreshing after mutations? + - [ ] Passing values explicitly (not from React state)? + +## 7. Audio/Real-time Data Issues (Voice Apps) + +### ❌ Base64 encoding/decoding issues +```rust +// ❌ WRONG - Manual base64 handling +let decoded = base64::decode(&data)?; + +// ✅ CORRECT - Use proper engine +use base64::{Engine as _, engine::general_purpose}; +let decoded = general_purpose::STANDARD.decode(&data).unwrap_or_default(); +let encoded = general_purpose::STANDARD.encode(&bytes); +``` + +### ❌ Thread safety with audio processing +```rust +// ❌ WRONG - Direct mutation in WebSocket handler +self.audio_buffer.push(audio_data); + +// ✅ CORRECT - Use Arc> for thread-safe access +use std::sync::{Arc, Mutex}; + +// In state +audio_processors: HashMap>>, + +// In handler +if let Ok(mut proc) = processor.lock() { + proc.process_audio(data); +} +``` + +### ❌ WebSocket message sequencing +```rust +// Track sequence numbers for audio streams +#[derive(Serialize, Deserialize)] +struct AudioData { + data: String, + sequence: Option, + timestamp: Option, +} + +// Maintain sequence counters +participant_sequences: HashMap, +``` + +### ❌ Binary data in LazyLoadBlob +```rust +// For binary WebSocket data +let blob = LazyLoadBlob { + mime: Some("application/octet-stream".to_string()), + bytes: audio_bytes, +}; +send_ws_push(channel_id, WsMessageType::Binary, blob); +``` + +## 8. P2P Validation Patterns + +### Common P2P validation errors from samchat: + +**Backend validation:** +```rust +// Empty fields +if recipient_address.trim().is_empty() || message_content.trim().is_empty() { + return Err("Recipient address and message content cannot be empty".to_string()); +} + +// Format validation +if !is_group && !recipient_address.contains('.') { + return Err("Invalid recipient address format (e.g., 'username.os')".to_string()); +} + +// Group constraints +if participants.len() < 2 { + return Err("Group must have at least 2 participants".to_string()); +} +``` + +**Frontend validation:** +```typescript +// In React component +if (!groupName.trim()) { + setError("Please enter a group name"); + return; +} + +// Parse and validate lists +const members = groupMembers.split(',').map(m => m.trim()).filter(m => m); +if (members.length === 0) { + setError("Please enter at least one valid member address"); + return; +} + +// Clear errors on navigation +const handleSelectConversation = useCallback((conversationId: string) => { + fetchMessages(conversationId); + setError(null); + setReplyingTo(null); +}, [fetchMessages]); +``` + +## Still Stuck? + +1. Add logging everywhere: + ```rust + println!("DEBUG: Method called with: {:?}", request_body); + ``` + +2. Check both node consoles for P2P issues + +3. Use browser DevTools: + - Network tab for HTTP/WebSocket + - Console for JavaScript errors + - Application tab for storage + +4. For voice apps: + - Check browser permissions for microphone + - Monitor WebSocket frames in DevTools + - Log audio buffer sizes and timing + +5. Start with minimal example and add complexity + +6. Compare with working examples: + - samchat for P2P chat patterns + - voice for WebSocket/audio patterns \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/03-WIT-TYPES-DATA-MODELING.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/03-WIT-TYPES-DATA-MODELING.md new file mode 100644 index 00000000..2d3aa391 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/03-WIT-TYPES-DATA-MODELING.md @@ -0,0 +1,734 @@ +# 📊 WIT Types & Data Modeling Guide + +## Understanding WIT (WebAssembly Interface Types) + +WIT is the type system that bridges your Rust code with the frontend. The hyperprocess macro automatically generates WIT files from your Rust types, but it has strict requirements. + +## Type Compatibility Matrix + +| Rust Type | WIT Type | Supported | Notes | +|-----------|----------|-----------|-------| +| `bool` | `bool` | ✅ | | +| `u8`, `u16`, `u32`, `u64` | `u8`, `u16`, `u32`, `u64` | ✅ | | +| `i8`, `i16`, `i32`, `i64` | `s8`, `s16`, `s32`, `s64` | ✅ | | +| `f32`, `f64` | `float32`, `float64` | ✅ | | +| `String` | `string` | ✅ | | +| `Vec` | `list` | ✅ | T must be supported | +| `Option` | `option` | ✅ | T must be supported | +| `(T1, T2, ...)` | `tuple` | ✅ | All T must be supported | +| `HashMap` | - | ❌ | Use `Vec<(K, V)>` | +| `HashSet` | - | ❌ | Use `Vec` | +| `[T; N]` | - | ❌ | Use `Vec` | +| `&str` | - | ❌ | Use `String` | +| `&[T]` | - | ❌ | Use `Vec` | +| Complex enums | - | ⚠️ | Only simple variants | +| Trait objects | - | ❌ | Not supported | + +## Data Modeling Strategies + +### 1. Simple Types - Direct Mapping + +```rust +// ✅ These types map directly to WIT +#[derive(Serialize, Deserialize, PartialEq)] +pub struct User { + pub id: String, + pub name: String, + pub age: u32, + pub active: bool, + pub balance: f64, +} + +#[derive(Serialize, Deserialize, PartialEq)] +pub struct Response { + pub users: Vec, + pub total: u64, + pub page: Option, +} + +// Use in endpoint +#[http] +async fn get_users(&self, _request_body: String) -> Response { + Response { + users: self.users.clone(), + total: self.users.len() as u64, + page: Some(0), + } +} +``` + +### 2. Complex Types - JSON String Pattern + +```rust +// Internal complex type (not exposed via WIT) +#[derive(Serialize, Deserialize)] +struct ComplexGameState { + board: HashMap, + history: Vec, + timers: HashMap, + metadata: serde_json::Value, +} + +// ✅ Return as JSON string +#[http] +async fn get_game_state(&self, _request_body: String) -> String { + serde_json::to_string(&self.game_state).unwrap() +} + +// ✅ Accept as JSON string +#[http] +async fn update_game_state(&mut self, request_body: String) -> Result { + let state: ComplexGameState = serde_json::from_str(&request_body) + .map_err(|e| format!("Invalid game state: {}", e))?; + + self.game_state = state; + Ok("Updated".to_string()) +} +``` + +### 3. Enum Handling + +```rust +// ❌ WRONG - Complex enum variants not supported by WIT directly +pub enum GameEvent { + PlayerJoined { player_id: String, timestamp: u64 }, + MoveMade { from: Position, to: Position }, + GameEnded { winner: Option, reason: EndReason }, +} + +// ✅ PATTERN 1: Simple enum + data struct (WIT-compatible) +#[derive(Serialize, Deserialize, PartialEq)] +pub enum EventType { + PlayerJoined, + MoveMade, + GameEnded, +} + +#[derive(Serialize, Deserialize, PartialEq)] +pub struct GameEvent { + pub event_type: EventType, + pub player_id: Option, + pub from_position: Option, + pub to_position: Option, + pub winner: Option, + pub timestamp: u64, +} + +// ✅ PATTERN 2: Complex enums with mixed variants (JSON-only) +#[derive(Serialize, Deserialize)] +pub enum WsMessage { + // Simple variants work fine + Heartbeat, + Disconnect, + + // Complex variants with nested serde attributes + #[serde(rename_all = "camelCase")] + JoinRoom { + room_id: String, + auth_token: Option, + user_settings: UserSettings, + }, + + // Single data variants + Chat(String), + UpdateStatus(Status), +} + +// ✅ PATTERN 3: Tagged unions via JSON +#[derive(Serialize, Deserialize)] +#[serde(tag = "type")] +pub enum GameEvent { + PlayerJoined { player_id: String, timestamp: u64 }, + MoveMade { from: Position, to: Position }, + GameEnded { winner: Option }, +} + +// Return as JSON string +#[http] +async fn get_events(&self, _request_body: String) -> String { + serde_json::to_string(&self.events).unwrap() +} +``` + +### 4. HashMap Replacement Patterns + +```rust +// ❌ WRONG - HashMap not supported +pub struct GameData { + pub players: HashMap, + pub scores: HashMap, +} + +// ✅ PATTERN 1: Use Vec of tuples +#[derive(Serialize, Deserialize, PartialEq)] +pub struct GameData { + pub players: Vec<(String, Player)>, + pub scores: Vec<(String, u32)>, +} + +// ✅ PATTERN 2: Separate key-value struct +#[derive(Serialize, Deserialize, PartialEq)] +pub struct PlayerEntry { + pub id: String, + pub player: Player, +} + +#[derive(Serialize, Deserialize, PartialEq)] +pub struct ScoreEntry { + pub player_id: String, + pub score: u32, +} + +#[derive(Serialize, Deserialize, PartialEq)] +pub struct GameData { + pub players: Vec, + pub scores: Vec, +} + +// ✅ PATTERN 3: Internal HashMap, external Vec +#[derive(Default, Serialize, Deserialize)] +pub struct AppState { + // Internal representation (not exposed) + players_map: HashMap, +} + +// Exposed via endpoints +#[http] +async fn get_players(&self, _request_body: String) -> Vec { + self.players_map.values().cloned().collect() +} + +#[http] +async fn get_player(&self, request_body: String) -> Result { + let id: String = serde_json::from_str(&request_body)?; + self.players_map.get(&id) + .cloned() + .ok_or_else(|| "Player not found".to_string()) +} +``` + +### 5. Nested Type Visibility + +```rust +// ❌ PROBLEM: WIT generator can't find NestedData +pub struct Response { + pub data: NestedData, +} + +pub struct NestedData { + pub items: Vec, +} + +pub struct Item { + pub id: String, +} + +// ✅ FIX 1: Ensure all types are referenced in endpoints +#[http] +async fn get_response(&self, _request_body: String) -> Response { ... } + +#[http] +async fn get_nested_data(&self, _request_body: String) -> NestedData { ... } + +#[http] +async fn get_item(&self, _request_body: String) -> Item { ... } + +// ✅ FIX 2: Flatten the structure +#[derive(Serialize, Deserialize, PartialEq)] +pub struct Response { + pub items: Vec, + pub metadata: ResponseMetadata, +} +``` + +## Design Patterns for Data Modeling + +### 1. Command Pattern for Complex Operations + +```rust +// Instead of complex parameters, use command objects +#[derive(Deserialize)] +pub struct CreateGameCommand { + pub name: String, + pub max_players: u8, + pub settings: GameSettings, +} + +#[derive(Deserialize)] +pub struct GameSettings { + pub time_limit: Option, + pub allow_spectators: bool, + pub game_mode: String, +} + +// ✅ Modern approach - Direct type deserialization +#[http(method = "POST")] +async fn create_game(&mut self, command: CreateGameCommand) -> Result { + // Process command directly + let game_id = self.create_game_from_command(command)?; + + Ok(GameInfo { + id: game_id, + status: GameStatus::Waiting, + }) +} + +// ✅ Legacy approach - Manual JSON parsing +#[http] +async fn create_game_legacy(&mut self, request_body: String) -> Result { + let command: CreateGameCommand = serde_json::from_str(&request_body)?; + + // Process command + let game_id = self.create_game_from_command(command)?; + + Ok(serde_json::json!({ "game_id": game_id }).to_string()) +} +``` + +### 2. View Pattern for Complex Queries + +```rust +// Internal complex state +struct Game { + id: String, + players: HashMap, + board: BoardState, + history: Vec, + // ... many more fields +} + +// Simplified view for API +#[derive(Serialize, Deserialize, PartialEq)] +pub struct GameView { + pub id: String, + pub player_count: u8, + pub current_turn: String, + pub status: GameStatus, +} + +#[derive(Serialize, Deserialize, PartialEq)] +pub struct GameDetailView { + pub id: String, + pub players: Vec, + pub board_state: String, // Serialized board + pub last_move: Option, +} + +// Expose views, not internal state +#[http] +async fn list_games(&self, _request_body: String) -> Vec { + self.games.values() + .map(|game| game.to_view()) + .collect() +} + +#[http] +async fn get_game_detail(&self, request_body: String) -> Result { + let id: String = serde_json::from_str(&request_body)?; + self.games.get(&id) + .map(|game| game.to_detail_view()) + .ok_or_else(|| "Game not found".to_string()) +} +``` + +### 3. Event Sourcing Pattern + +```rust +// Events as simple data +#[derive(Serialize, Deserialize, PartialEq)] +pub struct Event { + pub id: String, + pub timestamp: String, + pub event_type: String, + pub data: String, // JSON encoded event data +} + +// Store events, rebuild state +#[derive(Default, Serialize, Deserialize)] +pub struct AppState { + events: Vec, + // Cached current state (rebuilt from events) + #[serde(skip)] + current_state: Option, +} + +impl AppState { + fn rebuild_state(&mut self) { + let mut state = ComputedState::default(); + for event in &self.events { + state.apply_event(event); + } + self.current_state = Some(state); + } +} + +#[http] +async fn add_event(&mut self, request_body: String) -> Result { + let event: Event = serde_json::from_str(&request_body)?; + self.events.push(event); + self.rebuild_state(); + Ok("Event added".to_string()) +} +``` + +## Real-World Patterns from P2P Apps + +### Timestamp Handling (from samchat) + +```rust +// ❌ WRONG - chrono types not WIT-compatible +use chrono::{DateTime, Utc}; +pub struct Message { + pub timestamp: DateTime, +} + +// ✅ CORRECT - RFC3339 strings (sorts lexicographically!) +pub struct ChatMessage { + pub timestamp: String, // RFC3339 string for WIT compatibility +} + +// Usage +let current_time_str = Utc::now().to_rfc3339(); + +// Sorting works naturally with RFC3339 strings +conversation.messages.sort_by(|a, b| a.timestamp.cmp(&b.timestamp)); +``` + +### Complex Message Types with Optionals + +```rust +// P2P chat pattern: One type handles multiple scenarios +#[derive(PartialEq, Clone, Debug, Serialize, Deserialize)] +pub struct ChatMessage { + pub id: String, + pub conversation_id: String, + pub sender: String, + pub recipient: Option, // None for group messages + pub recipients: Option>, // Some for group messages + pub content: String, + pub timestamp: String, + pub delivered: bool, + pub file_info: Option, // Optional attachment + pub reply_to: Option, // Optional reply +} + +// This avoids complex enums while supporting: +// - Direct messages (recipient = Some, recipients = None) +// - Group messages (recipient = None, recipients = Some) +// - Messages with/without files +// - Messages with/without replies +``` + +### HashMap in State, Vec in API + +```rust +// Internal state uses HashMap for efficiency +#[derive(Default, Serialize, Deserialize)] +pub struct SamchatState { + conversations: HashMap, + my_node_id: Option, +} + +// But expose as Vec through endpoints +#[http] +async fn get_conversations(&self, _request_body: String) -> Vec { + self.conversations.values() + .map(|conv| ConversationSummary { + id: conv.id.clone(), + participants: conv.participants.clone(), + last_updated: conv.last_updated.clone(), + is_group: conv.is_group, + group_name: conv.group_name.clone(), + }) + .collect() +} +``` + +### Binary Data Transfer + +```rust +// Backend: Vec for file data +#[http] +async fn upload_file(&mut self, file_name: String, mime_type: String, file_data: Vec) -> Result { + // Process binary data +} + +// Frontend TypeScript: number[] maps to Vec +export interface UploadFileRequest { + UploadFile: [string, string, number[]]; // file_name, mime_type, file_data +} +``` + +## TypeScript/JavaScript Compatibility + +### camelCase Serialization + +When your frontend uses TypeScript/JavaScript conventions, use serde's rename attributes: + +```rust +// ✅ Rust snake_case -> TypeScript camelCase +#[derive(Serialize, Deserialize, PartialEq)] +#[serde(rename_all = "camelCase")] +pub struct UserProfile { + pub user_id: String, // -> userId + pub display_name: String, // -> displayName + pub created_at: u64, // -> createdAt + pub is_active: bool, // -> isActive +} + +// ✅ Works with enums too +#[derive(Serialize, Deserialize)] +pub enum ApiMessage { + #[serde(rename_all = "camelCase")] + UserJoined { + user_id: String, + joined_at: u64, + }, + + #[serde(rename_all = "camelCase")] + MessageSent { + message_id: String, + sender_id: String, + sent_at: u64, + }, +} + +// ✅ Different rename patterns +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "PascalCase")] // For C# style +pub struct ConfigData { + pub app_name: String, // -> AppName + pub version: String, // -> Version +} + +#[derive(Serialize, Deserialize)] +#[serde(rename_all = "SCREAMING_SNAKE_CASE")] // For constants +pub struct Constants { + pub max_users: u32, // -> MAX_USERS + pub timeout_ms: u64, // -> TIMEOUT_MS +} +``` + +### Skip Serialization + +For internal fields that shouldn't be exposed: + +```rust +#[derive(Default, Serialize, Deserialize)] +pub struct AppState { + // Public fields + pub users: Vec, + pub settings: Settings, + + // Internal cache - not serialized + #[serde(skip)] + user_cache: HashMap, + + // Skip with default value on deserialize + #[serde(skip_deserializing, default)] + computed_stats: Stats, + + // Custom default function + #[serde(skip, default = "default_processors")] + processors: HashMap, +} + +fn default_processors() -> HashMap { + HashMap::new() +} +``` + +## Best Practices + +### 1. Always Add PartialEq + +```rust +// WIT-exposed types need PartialEq +#[derive(Serialize, Deserialize, PartialEq)] +pub struct MyType { + pub field: String, +} +``` + +### 2. Use Builder Pattern for Complex Types + +```rust +#[derive(Default)] +pub struct GameBuilder { + name: Option, + max_players: Option, + settings: GameSettings, +} + +impl GameBuilder { + pub fn name(mut self, name: String) -> Self { + self.name = Some(name); + self + } + + pub fn max_players(mut self, max: u8) -> Self { + self.max_players = Some(max); + self + } + + pub fn build(self) -> Result { + Ok(Game { + id: uuid::Uuid::new_v4().to_string(), + name: self.name.ok_or("Name required")?, + max_players: self.max_players.unwrap_or(4), + settings: self.settings, + // ... initialize other fields + }) + } +} +``` + +### 3. Version Your Data Models + +```rust +#[derive(Serialize, Deserialize)] +pub struct SaveData { + pub version: u32, + pub data: serde_json::Value, +} + +impl SaveData { + pub fn migrate(self) -> Result { + match self.version { + 1 => migrate_v1_to_v2(self.data), + 2 => Ok(serde_json::from_value(self.data)?), + _ => Err(format!("Unknown version: {}", self.version)), + } + } +} +``` + +### 4. Document Your Types + +```rust +/// Represents a player in the game +#[derive(Serialize, Deserialize, PartialEq)] +pub struct Player { + /// Unique identifier for the player + pub id: String, + + /// Display name chosen by the player + pub name: String, + + /// Current score in the game + pub score: u32, + + /// Whether the player is currently active + pub active: bool, +} +``` + +## Common Patterns Reference + +### Pattern 1: ID-based Lookups +```rust +// Store as HashMap internally, expose as list +pub struct AppState { + items_map: HashMap, +} + +#[http] +async fn get_item(&self, request_body: String) -> Result { + let id: String = serde_json::from_str(&request_body)?; + self.items_map.get(&id).cloned() + .ok_or_else(|| "Not found".to_string()) +} + +#[http] +async fn list_items(&self, _request_body: String) -> Vec { + self.items_map.values().cloned().collect() +} +``` + +### Pattern 2: Pagination +```rust +#[derive(Deserialize)] +pub struct PageRequest { + pub page: usize, + pub per_page: usize, +} + +#[derive(Serialize, PartialEq)] +pub struct PageResponse { + pub items: Vec, + pub total: usize, + pub page: usize, + pub per_page: usize, +} + +#[http] +async fn list_paginated(&self, request_body: String) -> PageResponse { + let req: PageRequest = serde_json::from_str(&request_body) + .unwrap_or(PageRequest { page: 0, per_page: 20 }); + + let start = req.page * req.per_page; + let items: Vec<_> = self.items + .iter() + .skip(start) + .take(req.per_page) + .cloned() + .collect(); + + PageResponse { + items, + total: self.items.len(), + page: req.page, + per_page: req.per_page, + } +} +``` + +### Pattern 3: Result Types +```rust +#[derive(Serialize, Deserialize, PartialEq)] +pub struct ApiResult { + pub success: bool, + pub data: Option, + pub error: Option, +} + +impl ApiResult { + pub fn ok(data: T) -> Self { + Self { + success: true, + data: Some(data), + error: None, + } + } + + pub fn err(error: String) -> Self { + Self { + success: false, + data: None, + error: Some(error), + } + } +} + +#[http] +async fn safe_operation(&mut self, request_body: String) -> ApiResult { + match self.do_operation(request_body) { + Ok(result) => ApiResult::ok(result), + Err(e) => ApiResult::err(e.to_string()), + } +} +``` + +## Remember + +1. **When in doubt, use JSON strings** - They always work +2. **All public fields** - WIT needs to see them +3. **Test incrementally** - Build often to catch type issues early +4. **Keep it simple** - Complex types cause problems +5. **Document patterns** - Future you will thank you + +## See Also + +- [Troubleshooting Guide](./02-TROUBLESHOOTING.md#error-found-types-used-that-are-neither-wit-built-ins-nor-defined-locally) - For WIT type errors +- [Common Patterns](./01-COMMON-PATTERNS.md) - For implementation examples +- [Complete Examples](./07-COMPLETE-EXAMPLES.md) - For real-world usage \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/04-P2P-PATTERNS.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/04-P2P-PATTERNS.md new file mode 100644 index 00000000..62b4e470 --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/04-P2P-PATTERNS.md @@ -0,0 +1,1079 @@ +# 🌐 P2P Communication Patterns Guide + +## Core Concepts + +In Hyperware, every user runs their own node. P2P communication allows nodes to: +- Share data directly without central servers +- Coordinate actions across the network +- Build collaborative applications +- Maintain distributed state + +## Endpoint Attributes + +Understanding the different endpoint types: + +- **`#[http]`** - HTTP endpoints accessible via frontend API calls +- **`#[remote]`** - Endpoints callable by other nodes via P2P +- **`#[local]`** - Internal endpoints callable within the same node +- **`#[local] #[remote]`** - Endpoints callable both locally and remotely + +```rust +// HTTP only - frontend calls +#[http] +async fn get_data(&self, _request_body: String) -> Vec { } + +// Remote only - other nodes call this +#[remote] +async fn sync_data(&mut self, data: String) -> Result { } + +// Both local and remote - flexible access +#[local] +#[remote] +async fn process_request(&mut self, req: Request) -> Result { } +``` + +## Essential Components + +### 1. Node Identity +```rust +// Get your own node identity +let my_node = our().node.clone(); // e.g., "alice.os" + +// Node identity comes from the user, not hardcoded +#[http] +async fn connect_to_node(&mut self, request_body: String) -> Result { + let target_node: String = serde_json::from_str(&request_body)?; + // Use target_node for communication +} +``` + +### 2. Process Identity +```rust +// ProcessId format: "process-name:package-name:publisher" +// Note: publisher must match between communicating nodes +let process_id = "myapp:myapp:publisher.os" + .parse::() + .map_err(|e| format!("Invalid ProcessId: {}", e))?; + +// For your app to talk to itself on other nodes +// IMPORTANT: All nodes must use the same publisher! +let my_process_id = format!("{}:{}:{}", + "skeleton-app", // process name (from metadata.json) + "skeleton-app", // package name (from metadata.json) + "skeleton.os" // publisher (must be consistent across nodes) +).parse::()?; +``` + +### 3. Address Construction +```rust +// Combine node + process to create full address +let target_address = Address::new( + "bob.os".to_string(), // target node + process_id // target process +); +``` + +### 4. Request Patterns + +Two ways to make P2P requests: + +**Traditional Pattern (hyperware_process_lib::Request):** +```rust +let response = Request::new() + .target(target_address) + .body(serde_json::to_vec(&data).unwrap()) + .expects_response(30) + .send_and_await_response(30)?; +``` + +**Modern Pattern (hyperware_app_common::send):** +```rust +use hyperware_app_common::send; + +// Type-safe request with automatic deserialization +let request = Request::to(&target_address) + .body(serde_json::to_vec(&data).unwrap()); + +match send::>(request).await { + Ok(Ok(response)) => { + // Use response directly - already deserialized + } + Ok(Err(e)) => { + // Remote returned an error + } + Err(e) => { + // Network/communication error + } +} +``` + +## P2P Communication Patterns + +### Pattern 1: Direct Request-Response + +**Use Case:** Query data from another node + +```rust +// On the requesting node +#[http] +async fn get_remote_data(&self, request_body: String) -> Result { + let target_node: String = serde_json::from_str(&request_body)?; + + // Build address + let process_id = "skeleton-app:skeleton-app:skeleton.os".parse::()?; + let target = Address::new(target_node, process_id); + + // Create request + let request_data = json!({ + "since": self.last_sync_time, + "limit": 100 + }); + + // Wrap for remote method + let wrapper = json!({ + "GetDataSince": serde_json::to_string(&request_data).unwrap() + }); + + // Send and await response + let response = Request::new() + .target(target) + .body(serde_json::to_vec(&wrapper).unwrap()) + .expects_response(30) // 30 second timeout + .send_and_await_response(30) + .map_err(|e| format!("Remote request failed: {:?}", e))?; + + // Parse response + if let Ok(body) = response.body() { + Ok(String::from_utf8_lossy(&body).to_string()) + } else { + Err("No response body".to_string()) + } +} + +// On the receiving node +#[remote] +async fn get_data_since(&self, request_json: String) -> Result { + #[derive(Deserialize)] + struct DataRequest { + since: String, + limit: usize, + } + + let req: DataRequest = serde_json::from_str(&request_json)?; + + // Get requested data + let data: Vec<_> = self.data.iter() + .filter(|d| d.timestamp > req.since) + .take(req.limit) + .cloned() + .collect(); + + Ok(serde_json::to_string(&data).unwrap()) +} +``` + +### Pattern 2: Fire-and-Forget Notifications + +**Use Case:** Notify other nodes without waiting for response + +```rust +// Broadcast notification to multiple nodes +#[http] +async fn broadcast_event(&mut self, request_body: String) -> Result { + #[derive(Deserialize)] + struct BroadcastRequest { + event_type: String, + data: serde_json::Value, + } + + let req: BroadcastRequest = serde_json::from_str(&request_body)?; + + let notification = json!({ + "event": req.event_type, + "data": req.data, + "from": our().node, + "timestamp": chrono::Utc::now().to_rfc3339(), + }); + + let wrapper = json!({ + "HandleNotification": serde_json::to_string(¬ification).unwrap() + }); + + let mut sent = 0; + let mut failed = 0; + + // Send to all known nodes + for node in &self.connected_nodes { + let process_id = "skeleton-app:skeleton-app:skeleton.os".parse::()?; + let target = Address::new(node.clone(), process_id); + + // Fire and forget - still set timeout for reliability + match Request::new() + .target(target) + .body(serde_json::to_vec(&wrapper).unwrap()) + .expects_response(5) // Short timeout + .send() { + Ok(_) => sent += 1, + Err(e) => { + println!("Failed to notify {}: {:?}", node, e); + failed += 1; + } + } + } + + Ok(json!({ + "sent": sent, + "failed": failed + }).to_string()) +} + +// Receiving node +#[remote] +async fn handle_notification(&mut self, notification_json: String) -> Result { + let notification: serde_json::Value = serde_json::from_str(¬ification_json)?; + + // Process notification + self.notifications.push(notification); + + // Just acknowledge receipt + Ok("ACK".to_string()) +} +``` + +### Pattern 3: Distributed State Synchronization + +**Use Case:** Keep state synchronized across multiple nodes + +```rust +// State sync request +#[derive(Serialize, Deserialize)] +pub struct SyncRequest { + pub node_id: String, + pub state_hash: String, + pub last_update: String, +} + +#[derive(Serialize, Deserialize)] +pub struct SyncResponse { + pub updates: Vec, + pub full_sync_needed: bool, +} + +// Periodic sync with peers +impl AppState { + async fn sync_with_peer(&mut self, peer_node: String) -> Result<(), String> { + let process_id = "skeleton-app:skeleton-app:skeleton.os".parse::()?; + let target = Address::new(peer_node.clone(), process_id); + + // Send our state info + let sync_req = SyncRequest { + node_id: our().node.clone(), + state_hash: self.calculate_state_hash(), + last_update: self.last_update_time.clone(), + }; + + let wrapper = json!({ + "HandleSyncRequest": serde_json::to_string(&sync_req).unwrap() + }); + + let response = Request::new() + .target(target) + .body(serde_json::to_vec(&wrapper).unwrap()) + .expects_response(30) + .send_and_await_response(30)?; + + if let Ok(body) = response.body() { + let sync_resp: SyncResponse = serde_json::from_slice(&body)?; + + if sync_resp.full_sync_needed { + self.request_full_sync(peer_node).await?; + } else { + self.apply_updates(sync_resp.updates); + } + } + + Ok(()) + } +} + +#[remote] +async fn handle_sync_request(&mut self, request_json: String) -> Result { + let req: SyncRequest = serde_json::from_str(&request_json)?; + + // Check if we have newer data + let response = if req.state_hash != self.calculate_state_hash() { + SyncResponse { + updates: self.get_updates_since(&req.last_update), + full_sync_needed: self.updates_since(&req.last_update) > 100, + } + } else { + SyncResponse { + updates: vec![], + full_sync_needed: false, + } + }; + + Ok(serde_json::to_string(&response).unwrap()) +} +``` + +### Pattern 4: Collaborative Editing + +**Use Case:** Multiple nodes editing shared data + +```rust +// Operation-based CRDT pattern +#[derive(Serialize, Deserialize)] +pub enum Operation { + Insert { pos: usize, text: String, id: String }, + Delete { pos: usize, len: usize, id: String }, + Update { item_id: String, field: String, value: serde_json::Value }, +} + +#[derive(Default, Serialize, Deserialize)] +pub struct SharedDocument { + operations: Vec, + content: String, + version: u64, +} + +// Local edit creates operation +#[http] +async fn edit_document(&mut self, request_body: String) -> Result { + let op: Operation = serde_json::from_str(&request_body)?; + + // Apply locally + self.document.apply_operation(&op); + self.document.version += 1; + + // Broadcast to peers + self.broadcast_operation(op).await?; + + Ok("Applied".to_string()) +} + +// Broadcast operation to all peers +impl AppState { + async fn broadcast_operation(&self, op: Operation) -> Result<(), String> { + let wrapper = json!({ + "ApplyOperation": serde_json::to_string(&op).unwrap() + }); + + let process_id = "skeleton-app:skeleton-app:skeleton.os".parse::()?; + + for peer in &self.peers { + let target = Address::new(peer.clone(), process_id); + + // Best effort delivery + let _ = Request::new() + .target(target) + .body(serde_json::to_vec(&wrapper).unwrap()) + .expects_response(5) + .send(); + } + + Ok(()) + } +} + +// Receive operation from peer +#[remote] +async fn apply_operation(&mut self, op_json: String) -> Result { + let op: Operation = serde_json::from_str(&op_json)?; + + // Check if we've already seen this operation + if !self.document.has_operation(&op) { + self.document.apply_operation(&op); + self.document.version += 1; + + // Forward to other peers (gossip protocol) + self.broadcast_operation(op).await?; + } + + Ok("Applied".to_string()) +} +``` + +### Pattern 5: Node Authentication & Handshake + +**Use Case:** Authenticate nodes before allowing access to resources + +```rust +use hyperware_app_common::{send, source}; + +// Authentication request/response types +#[derive(Serialize, Deserialize)] +pub struct NodeHandshakeReq { + pub resource_id: String, +} + +#[derive(Serialize, Deserialize)] +pub struct NodeHandshakeResp { + pub auth_token: String, +} + +// Client initiates handshake +#[http(method = "POST")] +async fn start_handshake(&mut self, url: String) -> Result { + // Extract node from URL (e.g., "https://bob.os/app/resource/123") + let parts: Vec<&str> = url.split('/').collect(); + let host_node = parts.get(2) + .ok_or("Invalid URL format")? + .split(':').next() + .ok_or("No host found")?; + + // Extract resource ID + let resource_id = parts.last() + .ok_or("No resource ID in URL")? + .to_string(); + + // Build target address + let target = Address::new(host_node, ("app", "app", "publisher.os")); + + // Create handshake request + let handshake_req = NodeHandshakeReq { resource_id }; + + // Use typed send from hyperware_app_common + let body = json!({"NodeHandshake": handshake_req}); + let request = Request::to(&target).body(serde_json::to_vec(&body).unwrap()); + + match send::>(request).await { + Ok(Ok(resp)) => { + // Store token and redirect with auth + self.auth_tokens.insert(host_node.to_string(), resp.auth_token.clone()); + Ok(format!("{}?auth={}", url, resp.auth_token)) + } + Ok(Err(e)) => Err(format!("Handshake failed: {}", e)), + Err(e) => Err(format!("Request failed: {:?}", e)), + } +} + +// Server handles handshake - both local and remote calls +#[local] +#[remote] +async fn node_handshake(&mut self, req: NodeHandshakeReq) -> Result { + // Verify resource exists + if !self.resources.contains_key(&req.resource_id) { + return Err("Resource not found".to_string()); + } + + // Get caller identity using source() + let caller_node = source().node; + + // Generate unique auth token + let auth_token = generate_auth_token(); + + // Store token -> node mapping + self.node_auth.insert(auth_token.clone(), NodeAuth { + node_id: caller_node.clone(), + resource_id: req.resource_id, + granted_at: chrono::Utc::now().to_rfc3339(), + }); + + Ok(NodeHandshakeResp { auth_token }) +} + +// Verify token on subsequent requests +fn verify_auth(&self, token: &str) -> Result { + self.node_auth.get(token) + .cloned() + .ok_or_else(|| "Invalid auth token".to_string()) +} +``` + +### Pattern 6: Node Discovery & Presence + +**Use Case:** Find and track active nodes + +```rust +// Heartbeat/presence system +#[derive(Serialize, Deserialize)] +pub struct NodeInfo { + pub node_id: String, + pub app_version: String, + pub capabilities: Vec, + pub last_seen: String, +} + +// Announce presence to known nodes +impl AppState { + async fn announce_presence(&self) -> Result<(), String> { + let my_info = NodeInfo { + node_id: our().node.clone(), + app_version: env!("CARGO_PKG_VERSION").to_string(), + capabilities: vec!["sync".to_string(), "chat".to_string()], + last_seen: chrono::Utc::now().to_rfc3339(), + }; + + let wrapper = json!({ + "RegisterNode": serde_json::to_string(&my_info).unwrap() + }); + + let process_id = "skeleton-app:skeleton-app:skeleton.os".parse::()?; + + // Announce to bootstrap nodes + for bootstrap in &self.bootstrap_nodes { + let target = Address::new(bootstrap.clone(), process_id); + + match Request::new() + .target(target) + .body(serde_json::to_vec(&wrapper).unwrap()) + .expects_response(10) + .send_and_await_response(10) { + Ok(response) => { + // Bootstrap node returns list of other nodes + if let Ok(body) = response.body() { + let nodes: Vec = serde_json::from_slice(&body)?; + self.discovered_nodes.extend(nodes); + } + }, + Err(e) => println!("Bootstrap {} unreachable: {:?}", bootstrap, e), + } + } + + Ok(()) + } +} + +#[remote] +async fn register_node(&mut self, info_json: String) -> Result { + let info: NodeInfo = serde_json::from_str(&info_json)?; + + // Update our node registry + self.known_nodes.insert(info.node_id.clone(), info); + + // Return other known nodes + let other_nodes: Vec = self.known_nodes.values() + .filter(|n| n.node_id != info.node_id) + .cloned() + .collect(); + + Ok(serde_json::to_string(&other_nodes).unwrap()) +} +``` + +### Pattern 7: Distributed Transactions + +**Use Case:** Coordinate actions across multiple nodes + +```rust +// Two-phase commit pattern +#[derive(Serialize, Deserialize)] +pub enum TransactionPhase { + Prepare, + Commit, + Abort, +} + +#[derive(Serialize, Deserialize)] +pub struct Transaction { + pub id: String, + pub operation: String, + pub data: serde_json::Value, + pub participants: Vec, +} + +// Coordinator node initiates transaction +#[http] +async fn start_transaction(&mut self, request_body: String) -> Result { + let mut tx: Transaction = serde_json::from_str(&request_body)?; + tx.id = uuid::Uuid::new_v4().to_string(); + + // Phase 1: Prepare + let prepare_wrapper = json!({ + "PrepareTransaction": serde_json::to_string(&tx).unwrap() + }); + + let process_id = "skeleton-app:skeleton-app:skeleton.os".parse::()?; + let mut votes = HashMap::new(); + + for participant in &tx.participants { + let target = Address::new(participant.clone(), process_id); + + match Request::new() + .target(target) + .body(serde_json::to_vec(&prepare_wrapper).unwrap()) + .expects_response(10) + .send_and_await_response(10) { + Ok(response) => { + if let Ok(body) = response.body() { + let vote: bool = serde_json::from_slice(&body)?; + votes.insert(participant.clone(), vote); + } + }, + Err(_) => { + votes.insert(participant.clone(), false); + } + } + } + + // Phase 2: Commit or Abort + let all_voted_yes = votes.values().all(|&v| v); + let decision = if all_voted_yes { "Commit" } else { "Abort" }; + + let decision_wrapper = json!({ + decision: tx.id.clone() + }); + + // Notify all participants of decision + for participant in &tx.participants { + let target = Address::new(participant.clone(), process_id); + let _ = Request::new() + .target(target) + .body(serde_json::to_vec(&decision_wrapper).unwrap()) + .expects_response(5) + .send(); + } + + Ok(json!({ + "transaction_id": tx.id, + "decision": decision, + "votes": votes, + }).to_string()) +} + +// Participant node handlers +#[remote] +async fn prepare_transaction(&mut self, tx_json: String) -> Result { + let tx: Transaction = serde_json::from_str(&tx_json)?; + + // Check if we can commit + let can_commit = self.validate_transaction(&tx); + + if can_commit { + // Save to pending + self.pending_transactions.insert(tx.id.clone(), tx); + } + + Ok(can_commit) +} + +#[remote] +async fn commit(&mut self, tx_id: String) -> Result { + if let Some(tx) = self.pending_transactions.remove(&tx_id) { + self.apply_transaction(tx)?; + Ok("Committed".to_string()) + } else { + Err("Transaction not found".to_string()) + } +} + +#[remote] +async fn abort(&mut self, tx_id: String) -> Result { + self.pending_transactions.remove(&tx_id); + Ok("Aborted".to_string()) +} +``` + +## Error Handling & Resilience + +### Retry with Exponential Backoff +```rust +// Note: This pattern requires the "timer:distro:sys" capability! +async fn reliable_remote_call( + target: Address, + method: &str, + data: String, +) -> Result { + let wrapper = json!({ method: data }); + let body = serde_json::to_vec(&wrapper).unwrap(); + + for attempt in 0..3 { + if attempt > 0 { + // Exponential backoff: 100ms, 200ms, 400ms + let delay_ms = 100 * (1 << attempt); + timer::set_timer(delay_ms, None); + } + + match Request::new() + .target(target.clone()) + .body(body.clone()) + .expects_response(30) + .send_and_await_response(30) { + Ok(response) => { + if let Ok(body) = response.body() { + return Ok(String::from_utf8_lossy(&body).to_string()); + } + }, + Err(e) if attempt < 2 => { + println!("Attempt {} failed: {:?}, retrying...", attempt + 1, e); + continue; + }, + Err(e) => return Err(format!("Failed after 3 attempts: {:?}", e)), + } + } + + Err("Max retries exceeded".to_string()) +} +``` + +### Circuit Breaker Pattern +```rust +// Note: HashMap is used here for internal state only - not exposed via WIT +#[derive(Default)] +pub struct CircuitBreaker { + failures: HashMap, + last_failure: HashMap, + threshold: u32, + timeout_secs: u64, +} + +impl CircuitBreaker { + pub fn can_call(&self, node: &str) -> bool { + if let Some(&failures) = self.failures.get(node) { + if failures >= self.threshold { + if let Some(&last) = self.last_failure.get(node) { + return last.elapsed().as_secs() > self.timeout_secs; + } + } + } + true + } + + pub fn record_success(&mut self, node: &str) { + self.failures.remove(node); + self.last_failure.remove(node); + } + + pub fn record_failure(&mut self, node: &str) { + *self.failures.entry(node.to_string()).or_insert(0) += 1; + self.last_failure.insert(node.to_string(), std::time::Instant::now()); + } +} +``` + +## Best Practices + +### 1. Always Set Timeouts +```rust +// ✅ Good +.expects_response(30) +.send_and_await_response(30) + +// ❌ Bad - Can hang forever +.send() +``` + +### 2. Handle Network Partitions +```rust +// Track node availability +pub struct NodeTracker { + nodes: HashMap, +} + +pub struct NodeStatus { + last_successful_contact: String, + consecutive_failures: u32, + is_reachable: bool, +} +``` + +### 3. Use Idempotent Operations +```rust +// Include operation ID to prevent duplicates +#[derive(Serialize, Deserialize)] +pub struct Operation { + pub id: String, // Unique ID + pub action: Action, +} + +impl AppState { + fn apply_operation(&mut self, op: Operation) -> Result<(), String> { + // Check if already applied + if self.applied_operations.contains(&op.id) { + return Ok(()); // Idempotent + } + + // Apply operation + self.execute_action(op.action)?; + self.applied_operations.insert(op.id); + Ok(()) + } +} +``` + +### 4. Design for Eventual Consistency +```rust +// Use vector clocks or timestamps +#[derive(Serialize, Deserialize)] +pub struct VersionedData { + pub data: serde_json::Value, + pub version: VectorClock, + pub last_modified: String, +} + +// Resolve conflicts +impl VersionedData { + fn merge(self, other: Self) -> Self { + if self.version.happens_before(&other.version) { + other + } else if other.version.happens_before(&self.version) { + self + } else { + // Concurrent updates - need resolution strategy + self.resolve_conflict(other) + } + } +} +``` + +## Testing P2P Features + +### Local Testing Setup +```bash +# Terminal 1 +kit s --fake-node alice.os + +# Terminal 2 +kit s --fake-node bob.os + +# Terminal 3 (optional) +kit s --fake-node charlie.os +``` + +### Test Scenarios +1. **Basic connectivity** - Can nodes find each other? +2. **Data sync** - Do all nodes eventually see the same data? +3. **Partition tolerance** - What happens when a node goes offline? +4. **Conflict resolution** - How are concurrent updates handled? +5. **Performance** - How does latency affect the user experience? + +### Debug Output +```rust +// Add comprehensive logging +println!("[P2P] Sending {} to {}", method, target_node); +println!("[P2P] Response: {:?}", response); +println!("[P2P] State after sync: {:?}", self.state); +``` + +## Real-World P2P Patterns from samchat + +### Pattern 8: Group Membership Notifications + +**Use Case:** Notify all members when a group is created or modified + +```rust +// Create group and notify all members +#[http] +async fn create_group(&mut self, group_name: String, initial_members: Vec) -> Result { + let creator = self.my_node_id.clone() + .ok_or_else(|| "Creator node ID not initialized".to_string())?; + + // Ensure creator is included + let mut participants = initial_members; + if !participants.contains(&creator) { + participants.push(creator.clone()); + } + + let group_id = format!("group_{}", Uuid::new_v4()); + + // Create group locally + let conversation = Conversation { + id: group_id.clone(), + participants: participants.clone(), + is_group: true, + group_name: Some(group_name.clone()), + created_by: Some(creator.clone()), + // ... + }; + self.conversations.insert(group_id.clone(), conversation); + + // Notify all other members + let publisher = "hpn-testing-beta.os"; // Consistent across all nodes! + let target_process_id = format!("samchat:samchat:{}", publisher) + .parse::()?; + + for participant in &participants { + if participant != &creator { + let target_address = Address::new(participant.clone(), target_process_id.clone()); + let notification = GroupJoinNotification { + group_id: group_id.clone(), + group_name: group_name.clone(), + participants: participants.clone(), + created_by: creator.clone(), + }; + + let request_wrapper = json!({ "HandleGroupJoin": notification }); + + // Fire-and-forget but still set expects_response for reliability + let _ = Request::new() + .target(target_address) + .body(serde_json::to_vec(&request_wrapper).unwrap()) + .expects_response(30) + .send(); + } + } + + Ok(group_id) +} + +// Handle notification on receiving nodes +#[remote] +async fn handle_group_join(&mut self, notification: GroupJoinNotification) -> Result { + // Create the group conversation locally + let conversation = Conversation { + id: notification.group_id.clone(), + participants: notification.participants, + is_group: true, + group_name: Some(notification.group_name), + created_by: Some(notification.created_by), + // ... + }; + + self.conversations.insert(notification.group_id, conversation); + Ok(true) +} +``` + +### Pattern 9: Remote Data Retrieval with Local Caching + +**Use Case:** Fetch files or data from remote nodes with fallback + +```rust +// Try local first, then remote +#[http] +async fn download_file(&mut self, file_id: String, sender_node: String) -> Result, String> { + // Try local VFS first + let file_path = format!("/samchat:hpn-testing-beta.os/files/{}", file_id); + let vfs_address = Address::new(our().node.clone(), "vfs:distro:sys".parse::()?); + + let local_result = Request::new() + .target(vfs_address.clone()) + .body(json!({ "path": file_path, "action": "Read" })) + .expects_response(5) + .send_and_await_response(5); + + if let Ok(response) = local_result { + if let Some(blob) = response.blob() { + return Ok(blob.bytes); + } + } + + // Not found locally, fetch from remote + if sender_node != our().node { + let target = Address::new(sender_node, + "samchat:samchat:hpn-testing-beta.os".parse::()?); + + let remote_result = Request::new() + .target(target) + .body(json!({ "GetRemoteFile": file_id })) + .expects_response(30) + .send_and_await_response(30)?; + + // Parse nested Result from remote + let response_json: serde_json::Value = + serde_json::from_slice(&remote_result.body())?; + + if let Some(file_data) = response_json.get("Ok") { + let bytes: Vec = serde_json::from_value(file_data.clone())?; + + // Cache locally for future use + let _ = Request::new() + .target(vfs_address) + .body(json!({ "path": file_path, "action": "Write" })) + .blob(LazyLoadBlob::new(Some("file"), bytes.clone())) + .expects_response(5) + .send_and_await_response(5); + + return Ok(bytes); + } + } + + Err("File not found".to_string()) +} +``` + +### Pattern 10: Message Distribution to Multiple Recipients + +**Use Case:** Send messages to group members without blocking + +```rust +// Distribute message to all group members +async fn send_group_message(&mut self, group_id: String, content: String) -> Result { + let sender = self.my_node_id.clone() + .ok_or_else(|| "Node ID not initialized".to_string())?; + + let conversation = self.conversations.get(&group_id) + .ok_or_else(|| "Group not found".to_string())?; + + // Get all recipients except sender + let recipients: Vec = conversation.participants.iter() + .filter(|p| *p != &sender) + .cloned() + .collect(); + + let message = ChatMessage { + id: Uuid::new_v4().to_string(), + conversation_id: group_id, + sender, + recipients: Some(recipients.clone()), + content, + timestamp: Utc::now().to_rfc3339(), + // ... + }; + + // Save locally first + self.conversations.get_mut(&group_id).unwrap() + .messages.push(message.clone()); + + // Distribute to all recipients + let target_process_id = "samchat:samchat:hpn-testing-beta.os" + .parse::()?; + + for recipient in recipients { + let target = Address::new(recipient, target_process_id.clone()); + + // Fire-and-forget pattern but WITH expects_response + let _ = Request::new() + .target(target) + .body(json!({ "ReceiveMessage": message.clone() })) + .expects_response(30) // Still set timeout! + .send(); // Don't await response + } + + Ok(true) +} +``` + +### Key Patterns from samchat: + +1. **Consistent Publisher**: Always use the same publisher across all nodes + ```rust + let publisher = "hpn-testing-beta.os"; // Same for ALL nodes! + let process_id = format!("samchat:samchat:{}", publisher); + ``` + +2. **Fire-and-Forget WITH Timeout**: Even when not awaiting responses, set expects_response + ```rust + Request::new() + .expects_response(30) // Important for reliability + .send(); // Not awaiting + ``` + +3. **Node ID in State**: Store your node ID at initialization + ```rust + #[init] + async fn initialize(&mut self) { + self.my_node_id = Some(our().node.clone()); + } + ``` + +4. **Optional Fields for Flexibility**: Use Option for fields that vary by message type + ```rust + pub struct ChatMessage { + recipient: Option, // Direct messages + recipients: Option>, // Group messages + file_info: Option, // File attachments + reply_to: Option, // Replies + } + ``` + +## Remember + +1. **No central authority** - Design for peer equality +2. **Expect failures** - Networks are unreliable +3. **Plan for conflicts** - Concurrent updates will happen +4. **Test with multiple nodes** - Single node testing misses P2P issues +5. **Document protocols** - Other developers need to understand your P2P design +6. **Consistent naming** - Use the same publisher/process names across all nodes +7. **Always set timeouts** - Even for fire-and-forget patterns \ No newline at end of file diff --git a/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/05-UI-FRONTEND-GUIDE.md b/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/05-UI-FRONTEND-GUIDE.md new file mode 100644 index 00000000..c78443ae --- /dev/null +++ b/src/new/templates/rust/ui/hyperapp-skeleton/resources/guides/05-UI-FRONTEND-GUIDE.md @@ -0,0 +1,1553 @@ +# 💻 UI/Frontend Development Guide + +## Frontend Stack Overview + +- **React 18** - UI framework +- **TypeScript** - Type safety +- **Zustand** - State management +- **Vite** - Build tool +- **CSS Modules** or plain CSS - Styling + +## Critical Setup Requirements + +### 1. The `/our.js` Script (MANDATORY) + +```html + + + + + + + + + + My Hyperware App + + +
+ + + +``` + +### 2. Global Types Setup + +```typescript +// src/types/global.ts +declare global { + interface Window { + our?: { + node: string; // e.g., "alice.os" + process: string; // e.g., "myapp:myapp:publisher.os" + }; + } +} + +export const BASE_URL = ''; // Empty in production + +export const isHyperwareEnvironment = (): boolean => { + return typeof window !== 'undefined' && window.our !== undefined; +}; + +export const getNodeId = (): string | null => { + return window.our?.node || null; +}; +``` + +## API Communication Patterns + +### 1. Basic API Service + +```typescript +// src/utils/api.ts +import { BASE_URL } from '../types/global'; + +// IMPORTANT: Backend HTTP methods return String or Result +// Complex data is serialized as JSON strings that must be parsed on frontend + +// Generic API call function +export async function makeApiCall( + method: string, + data?: TRequest +): Promise { + const body = data !== undefined + ? { [method]: data } + : { [method]: "" }; // Empty string for no params + + const response = await fetch(`${BASE_URL}/api`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body), + }); + + if (!response.ok) { + const error = await response.text(); + throw new Error(`API Error: ${response.status} - ${error}`); + } + + return response.json(); +} + +// Typed API methods +export const api = { + // No parameters - backend returns JSON string + async getStatus() { + const response = await makeApiCall('GetStatus', ""); + return JSON.parse(response) as StatusResponse; + }, + + // Single parameter - backend returns JSON string + async getItem(id: string) { + const response = await makeApiCall('GetItem', id); + return JSON.parse(response) as Item; + }, + + // Multiple parameters (as JSON object - common pattern) + async createItem(name: string, description: string) { + const response = await makeApiCall( + 'CreateItem', + JSON.stringify({ name, description }) + ); + return JSON.parse(response) as CreateResponse; + }, + + // Complex object (send as JSON string) + async updateSettings(settings: Settings) { + return makeApiCall( + 'UpdateSettings', + JSON.stringify(settings) + ); + }, +}; +``` + +### 2. Error Handling + +```typescript +// src/utils/errors.ts +export class ApiError extends Error { + constructor( + message: string, + public status?: number, + public details?: unknown + ) { + super(message); + this.name = 'ApiError'; + } +} + +export function getErrorMessage(error: unknown): string { + if (error instanceof ApiError) { + return error.message; + } + if (error instanceof Error) { + return error.message; + } + if (typeof error === 'string') { + return error; + } + return 'An unknown error occurred'; +} + +// Wrapper with error handling +export async function apiCallWithRetry( + apiCall: () => Promise, + maxRetries = 3 +): Promise { + let lastError: unknown; + + for (let i = 0; i < maxRetries; i++) { + try { + return await apiCall(); + } catch (error) { + lastError = error; + if (i < maxRetries - 1) { + // Exponential backoff + await new Promise(resolve => + setTimeout(resolve, Math.pow(2, i) * 1000) + ); + } + } + } + + throw lastError; +} +``` + +## State Management with Zustand + +### 1. Store Structure + +```typescript +// src/store/app.ts +import { create } from 'zustand'; +import { devtools, persist } from 'zustand/middleware'; +import { immer } from 'zustand/middleware/immer'; + +interface AppState { + // Connection + nodeId: string | null; + isConnected: boolean; + + // Data + items: Item[]; + currentItem: Item | null; + + // UI State + isLoading: boolean; + error: string | null; + + // Filters/Settings + filters: { + search: string; + category: string | null; + sortBy: 'name' | 'date' | 'priority'; + }; +} + +interface AppActions { + // Connection + initialize: () => void; + + // Data operations + fetchItems: () => Promise; + createItem: (data: CreateItemData) => Promise; + updateItem: (id: string, updates: Partial) => Promise; + deleteItem: (id: string) => Promise; + selectItem: (id: string | null) => void; + + // UI operations + setError: (error: string | null) => void; + clearError: () => void; + setFilter: (filter: Partial) => void; + + // P2P operations + syncWithNode: (nodeId: string) => Promise; +} + +export const useAppStore = create()( + devtools( + persist( + immer((set, get) => ({ + // Initial state + nodeId: null, + isConnected: false, + items: [], + currentItem: null, + isLoading: false, + error: null, + filters: { + search: '', + category: null, + sortBy: 'name', + }, + + // Actions + initialize: () => { + const nodeId = getNodeId(); + set(state => { + state.nodeId = nodeId; + state.isConnected = nodeId !== null; + }); + + if (nodeId) { + get().fetchItems(); + } + }, + + fetchItems: async () => { + set(state => { + state.isLoading = true; + state.error = null; + }); + + try { + const items = await api.getItems(); + set(state => { + state.items = items; + state.isLoading = false; + }); + } catch (error) { + set(state => { + state.error = getErrorMessage(error); + state.isLoading = false; + }); + } + }, + + createItem: async (data) => { + set(state => { state.isLoading = true; }); + + try { + const response = await api.createItem(data); + + // Optimistic update + const newItem: Item = { + id: response.id, + ...data, + createdAt: new Date().toISOString(), + }; + + set(state => { + state.items.push(newItem); + state.currentItem = newItem; + state.isLoading = false; + }); + + // Refresh to ensure consistency + await get().fetchItems(); + } catch (error) { + set(state => { + state.error = getErrorMessage(error); + state.isLoading = false; + }); + throw error; // Re-throw for form handling + } + }, + + // ... other actions + })), + { + name: 'app-storage', + partialize: (state) => ({ + // Only persist UI preferences, not data + filters: state.filters, + }), + } + ) + ) +); + +// Selector hooks +export const useItems = () => { + const { items, filters } = useAppStore(); + + return items.filter(item => { + if (filters.search && !item.name.toLowerCase().includes(filters.search.toLowerCase())) { + return false; + } + if (filters.category && item.category !== filters.category) { + return false; + } + return true; + }).sort((a, b) => { + switch (filters.sortBy) { + case 'name': + return a.name.localeCompare(b.name); + case 'date': + return b.createdAt.localeCompare(a.createdAt); + case 'priority': + return b.priority - a.priority; + } + }); +}; + +export const useCurrentItem = () => useAppStore(state => state.currentItem); +export const useIsLoading = () => useAppStore(state => state.isLoading); +export const useError = () => useAppStore(state => state.error); +``` + +### 2. React Components + +```typescript +// src/components/ItemList.tsx +import React, { useEffect } from 'react'; +import { useAppStore, useItems } from '../store/app'; +import { ErrorMessage } from './ErrorMessage'; +import { LoadingSpinner } from './LoadingSpinner'; + +export const ItemList: React.FC = () => { + const items = useItems(); + const { isLoading, error, selectItem, currentItem } = useAppStore(); + + if (error) return ; + if (isLoading && items.length === 0) return ; + + return ( +
+ {items.map(item => ( +
selectItem(item.id)} + > +

{item.name}

+

{item.description}

+ + {new Date(item.createdAt).toLocaleDateString()} + +
+ ))} + + {items.length === 0 && ( +
+

No items found

+ +
+ )} +
+ ); +}; +``` + +### 3. Forms with Validation + +```typescript +// src/components/CreateItemForm.tsx +import React, { useState } from 'react'; +import { useAppStore } from '../store/app'; + +interface FormData { + name: string; + description: string; + category: string; +} + +interface FormErrors { + name?: string; + description?: string; + category?: string; +} + +export const CreateItemForm: React.FC<{ onClose: () => void }> = ({ onClose }) => { + const { createItem, isLoading } = useAppStore(); + const [formData, setFormData] = useState({ + name: '', + description: '', + category: '', + }); + const [errors, setErrors] = useState({}); + const [submitError, setSubmitError] = useState(null); + + const validate = (): boolean => { + const newErrors: FormErrors = {}; + + if (!formData.name.trim()) { + newErrors.name = 'Name is required'; + } else if (formData.name.length < 3) { + newErrors.name = 'Name must be at least 3 characters'; + } + + if (!formData.description.trim()) { + newErrors.description = 'Description is required'; + } + + if (!formData.category) { + newErrors.category = 'Please select a category'; + } + + setErrors(newErrors); + return Object.keys(newErrors).length === 0; + }; + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + if (!validate()) return; + + setSubmitError(null); + + try { + await createItem(formData); + onClose(); + } catch (error) { + setSubmitError(getErrorMessage(error)); + } + }; + + const handleChange = (field: keyof FormData) => ( + e: React.ChangeEvent + ) => { + setFormData(prev => ({ ...prev, [field]: e.target.value })); + // Clear error when user types + if (errors[field]) { + setErrors(prev => ({ ...prev, [field]: undefined })); + } + }; + + return ( +
+

Create New Item

+ + {submitError && ( +
{submitError}
+ )} + +
+ + + {errors.name && {errors.name}} +
+ +
+ +